6个高效Pandas数据处理技巧:从缺失值到列重排

Dylan
Dylan
发布时间:2026-10-16| 2人浏览过
原创

本文总结了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数据处理 内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。