6个高效Pandas数据处理技巧:从缺失值到列重排
本文总结了6个常用的Pandas数据处理技巧,帮助开发者高效处理数据。内容涵盖快速定位含缺失值的行、根据条件替换列值、使用pd.cut进行数据分箱统计、利用split拆分文本列、通过正则表达式筛选中文字段,以及调整列顺序的两种方法。掌握这些代码片段能显著提升数据清洗与处理的效率。
前言:
本文整理并分享了6个在数据科学工作中高频使用的Pandas代码片段。对于从事数据清洗与分析的开发者而言,熟练掌握这些技巧能够显著提升工作效率。
选取有空值的行
在初步探索数据结构时,快速识别并定位包含缺失数据的行是必要步骤。以下方法可帮助迅速筛选出存在空值的记录。
df = pd.DataFrame({'A': [0, 1, 2],
'B': [0, 1, None],
'C': [0, None, 2]})
df[df.isnull().T.any()]输出:
A B C A B C 0 0 0.0 0.0 1 1 1.0 NaN 1 1 1.0 NaN --> 2 2 NaN 2.0 2 2 NaN 2.0
快速替换列值
在实际数据清洗场景中,经常需要根据特定条件对列中的特定值进行批量替换。
df = pd.DataFrame({'name':['Python', 'Java', 'C']})
# 第一种方式
df['name'].replace('Java', 'JavaScript', inplace=True)
# 第二种方式
df.loc[df['name'].str.contains('Java'), 'name'] = 'JavaScript'输出:
name name 0 Python 0 Python 1 Java ---> 1 JavaScript 2 C 2 C
对列进行分区
处理数值型数据时,常需计算不同区间内数据的分布频率。利用 pd.cut 函数可以便捷地将连续数值划分为离散区间,并统计各区间频数。
import random
age = random.sample(range(90), 20)
cut_res = pd.cut(age, bins=[0, 18, 35, 60, 90])
# cut_res type:<class 'pandas.core.arrays.categorical.Categorical'>
cut_res.value_counts()输出:
(0, 18] 6 (18, 35] 1 (35, 60] 6 (60, 90] 7
将一列分为多列
在文本数据预处理阶段,若某列包含由分隔符(如空格、逗号或冒号)连接的多个值,可直接利用 split 方法按分隔符将该列拆分为多列。
import pandas as pd
df = pd.DataFrame({'address': ['四川省 成都市',
'湖北省 武汉市',
'浙江省 杭州市']})
res = df['address'].str.split(' ', expand=True)
res.columns = ['province', 'city']输出:
province city 0 四川省 成都市 1 湖北省 武汉市 2 浙江省 杭州市
expand参数选择是否扩展为 DataFrame,False 则返回 Series
中文筛选
数据清洗过程中,有时需要剔除包含特定中文字符的字段。此时,可直接使用 str.contains 配合正则表达式进行筛选。
df = pd.DataFrame({'mobile_phone':
['15928765644',
'15567332235',
'暂无']})
df[~df['mobile_phone'].str.contains('[\u4e00-\u9fa5]')]输出:
mobile_phone mobile_phone 0 15928765644 0 15928765644 1 15567332235 --> 1 15567332235 2 暂无
更改列的位置
当需要调整DataFrame中列的显示顺序时,若列数量较少,可直接通过重新指定列列表的方式实现。
df = pd.DataFrame({'name': ['A', 'B', 'C'],
'age': [10, 20, 30],
'gender': [0, 1, 0]})
df = df[['name', 'gender', 'age']]输出:
name age gender name gender age 0 A 10 0 0 A 0 10 1 B 20 1 --> 1 B 1 20 2 C 30 0 2 C 0 30
如果列较多,那么,一个个列举出来会比较繁琐,推荐下面插入的方式。
col = df['gender']
df.drop('gender', axis=1, inplace=True)
df.insert(1, 'gender', col)以上就是本次分享的6个Pandas数据处理核心技巧。实践操作是掌握这些技能的最佳途径,通过反复练习可使记忆更加牢固。
到此这篇关于六个实用Pandas数据处理代码的文章就介绍到这了,更多相关 Pandas数据处理 内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









