Pandas数据清洗与转换:缺失值处理、去重及哑变量生成详解

一颗松果
一颗松果
发布时间:2026-10-14| 5人浏览过
原创

本文系统讲解Pandas库中数据清洗与转换的核心指令。涵盖缺失值检测与处理,包括使用dropna过滤、fillna填充及thresh参数控制;详解数据去重方法duplicated与drop_duplicates;介绍replace替换、rename重命名及get_dummies生成One-hot编码的技巧,助力高效数据预处理。

Pandas数据清洗与转换指南

前言部分简要引入主题。

利用pandas库对获取的数据执行清洗操作,旨在回顾并巩固相关技术知识。

数据清洗核心方法

1 数据清洗章节概述。

缺失值检测与表示

1.1 处理缺失数据小节介绍。

数值型数据包含缺失值(NAN)与非缺失值两类。检测缺失值可利用Python中pandas库Series类对象的isnull方法实现。


import pandas as pd
import numpy as np
string_data = pd.Series(['Benzema', 'Messi', np.nan, 'Ronaldo'])
string_data.isnull()

表示缺失值时,除了使用np.nan,还可以采用None进行标识。


string_data = None

缺失值过滤策略

1.2 滤除缺失数据章节开始。

1.2.1 针对Series对象的处理方法。

调用dropna方法可直接过滤掉Series中的NAN数据。


from numpy import nan as NA
import pandas as pd
data = pd.Series([1,NA,4.5,NA,5])
data.dropna()

另一种策略是利用布尔值索引来筛选并剔除NAN数据。


data[data.notnull()]

1.2.2 针对DataFrame对象的处理方法。

对DataFrame应用dropna()方法时,默认会移除包含任何NAN数据的整行记录。


data = pd.DataFrame([[1., 6.5, 3.], [1., NA, NA],
           [NA, NA, NA], [NA, 6.5, 3.]])
data
data.dropna()

若仅希望删除那些所有字段均为NAN的行,可通过配置dropna()方法的how参数来实现精准控制。


data.dropna(how = 'all')

当操作对象转换为列时,相关代码示例如下所示。


data[4] = NA
data
data.dropna(axis=1, how = 'all')

若需保留部分含有非NAN数据的有效行,可设置thresh参数进行筛选。


df = pd.DataFrame(np.random.randn(7, 3))
df.iloc[:4, 1] = NA
df.iloc[:2, 2] = NA
df
df.dropna(thresh = 2)

设定thresh = n,表示仅保留至少包含n个非NA值的行。

缺失值填充技巧

1.3 填充缺失数据章节介绍。

使用fillna(n)方法,可将NA值替换为指定的n值。


df = pd.DataFrame(np.random.randn(7, 3))
df.fillna(0)

若填充格式采用字典形式,例如fillna({0:n1,1:n2}),则会将第0列的NA填充为n1,第1列的NA填充为n2。


df.fillna({{1 : 0.2,2 : 0.3}})

直接对df调用NA值填充操作,会直接修改原df对象,无需重新命名新变量。


df.fillna(0, inplace = True)

数据转换与预处理

2 数据转换章节概述。

重复数据移除

2.1 移除重复数据小节介绍。


data = pd.DataFrame({'k1': ['one', 'two'] * 3 + ['two'],
           'k2': [1, 1, 2, 3, 3, 4, 4]})
data.duplicated()

该方法返回每一行的重复状态标识,非重复行标记为False,重复行标记为True。

若需去除重复行,可参考以下代码实现。


data.drop_duplicates()

当操作对象指定为特定列时,需在duplicated方法中明确指定相应参数。


data['k3'] = range(7)
data.duplicated(['k1'])

此操作返回k1列中重复出现的元素信息。

对于drop_duplicates()方法,其默认行为是去除重复数据中靠后的记录。例如,若序号0和1的数据重复,该方法将删除index为1的行。若希望保留前者而删除后者,只需指定参数last即可实现。


data.drop_duplicates(['k1'], keep = 'last')

映射与替换操作

2.2 与映射相结合的操作介绍。

此处展示map函数的具体使用方式。


list(map(lambda x : 2 * x , range(10)))

2.3 替换操作章节介绍。

使用replace方法,该方法接收两个参数:前者为被替换的数值,后者为替换后的数值。参数格式支持列表或字典形式。


data = pd.Series([1., -999., 2., -999., -1000., 3.])
data.replace(-999.0, np.nan) #替换单个值
data.replace([-999.0, -1000.0], np.nan) #用一个值替换多个值
data.replace([-999.0, -1000.0],[np.nan, 0]) # 用不同值替换不同值
data.replace({-999.0 : 0, -1000.0 : np.nan}) # 格式为字典

数据重命名与版本控制

2.4 创建数据的修改版章节介绍。

rename方法能够生成数据的一个修改版本,而无需直接修改原始数据。


data.rename(index=str.title, columns=str.upper)

此外,还可以采用字典格式,分别对index和columns进行重命名操作。


data.rename(index = {'OHIO': 'INDIANA'}, columns = {'three': 'peekaboo'})

此类重命名操作默认不修改原数据。若需直接改变data对象,可如上例所示,通过设置参数inplace = True来实现。


data.rename(index = {'OHIO': 'INDIANA'}, columns = {'three': 'peekaboo'}, inplace = True)
data

执行上述操作后,data即被成功修改。

哑变量生成与One-hot编码

2.5 计算指标与哑变量章节介绍。

该功能常用于机器学习领域,用于将定类数据转化为One-hot编码,从而消除数值间直接比较大小的问题,将df中的object对象进行转换。


df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],
          'data1': range(6)})
pd.get_dummies(df['key']) # 分解了key 列,分开了三个属性

若希望在分离出的属性前添加前缀,可设定prefix参数。完成后可将结果与原始数据合并。


dummies = pd.get_dummies(df['key'], prefix = 'key')
df_with_dummies = df['data1'].join(dummies)
df_with_dummies

至此,关于详解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 算法库。