9 个pandas必要的清洗数据技巧
数据清洗是数据分析流程中至关重要的一步.在数据科学和机器学习项目中,Pandas 是一个强大且常用的库,它能够帮助你快速处理和清洗数据.以下是 Pandas 数据清洗的 10 个必备技巧,助你高效处理常见的数据质量问题.
1. 处理缺失数据
缺失数据是数据清洗中最常见的问题之一.Pandas 提供了isnull() 和 notnull() 方法来检测缺失值,dropna() 用于删除缺失值,fillna() 用于填充缺失值.
import pandas as pd
# 创建包含缺失值的 DataFrame
df = pd.DataFrame({
'A': [1, 2, None, 4],
'B': [None, 2, 3, 4],
'C': [1, None, None, 4]
})
# 删除包含缺失值的行
df_cleaned = df.dropna()
# 用均值填充缺失值
df_filled = df.fillna(df.mean())
print(df_filled)
2. 删除重复数据
重复数据会影响分析结果,因此需要清除.可以使用 duplicated() 和 drop_duplicates() 方法来识别和删除重复行.
# 创建包含重复行的 DataFrame
df = pd.DataFrame({
'A': [1, 2, 2, 4],
'B': [5, 6, 6, 8]
})
# 删除重复行
df_unique = df.drop_duplicates()
print(df_unique)
3. 数据类型转换
有时列的数据类型不符合分析需求,Pandas 提供了 astype() 方法来转换数据类型.例如,将字符串类型转换为日期类型.
df = pd.DataFrame({
'date': ['2021-01-01', '2021-02-01', '2021-03-01']
})
# 将字符串转换为日期类型
df['date'] = pd.to_datetime(df['date'])
print(df.dtypes)
4. 处理异常值
异常值是指在数据集中偏离正常范围的值,通常需要处理.Pandas 提供了方法可以方便地检测并处理这些值.
import numpy as np
# 创建包含异常值的 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 1000, 5]
})
# 使用条件来替换异常值
df['A'] = np.where(df['A'] > 100, df['A'].median(), df['A'])
print(df)
5. 字符串清理
数据集中可能包含带有不必要空格或符号的字符串.Pandas 提供了许多字符串处理方法,如 str.strip() 去除空格、str.lower() 转换为小写等.
df = pd.DataFrame({
'name': [' Alice ', 'Bob', ' Charlie ']
})
# 去除字符串的前后空格
df['name'] = df['name'].str.strip()
print(df)
6. 分列和合并列
在数据处理过程中,可能需要将一个列分成多个列,或者将多个列合并为一个列.str.split() 用于分列,+ 或 agg() 用于合并列.
# 创建包含全名的 DataFrame
df = pd.DataFrame({
'full_name': ['Alice Smith', 'Bob Brown']
})
# 将全名分成两列
df[['first_name', 'last_name']] = df['full_name'].str.split(' ', expand=True)
print(df)
# 合并列
df['full_name'] = df['first_name'] + ' ' + df['last_name']
print(df)
7. 处理日期数据
处理日期数据是数据清洗的重要环节.Pandas 提供了 pd.to_datetime() 函数将字符串转换为日期,并能通过 .dt 属性提取年、月、日等.
# 创建包含日期的 DataFrame
df = pd.DataFrame({
'date': ['2023-01-01', '2023-06-15']
})
# 转换为日期类型
df['date'] = pd.to_datetime(df['date'])
# 提取年份和月份
df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month
print(df)
8. 映射与替换
map() 和 replace() 可以用于根据规则转换列中的值.它们适用于将分类变量转换为数值编码或替换某些特定值.
# 创建包含类别的 DataFrame
df = pd.DataFrame({
'gender': ['Male', 'Female', 'Female', 'Male']
})
# 将类别映射为数值
df['gender_code'] = df['gender'].map({'Male': 1, 'Female': 0})
print(df)
9. 按条件筛选数据
根据特定条件对数据进行筛选是常见需求.可以使用布尔索引或 query() 方法来实现条件筛选.
# 创建 DataFrame
df = pd.DataFrame({
'A': [1, 2, 3, 4, 5],
'B': [10, 20, 30, 40, 50]
})
# 筛选 A 列大于 2 的行
df_filtered = df[df['A'] > 2]
print(df_filtered)
# 或使用 query() 方法
df_filtered = df.query('A > 2')
print(df_filtered)
通过掌握这些 Pandas 数据清洗技巧,你将能够更加高效地处理不完整、不准确或异常的数据.清洗后的数据质量直接决定分析结果的可靠性,因此这些技巧将帮助你在实际项目中更加从容地应对复杂的数据问题.
关于Python学习指南
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!
👉Python所有方向的学习路线👈
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)


👉Python学习视频600合集👈
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末
👉Python70个实战练手案例&源码👈
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

👉Python大厂面试资料👈
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


👉Python副业兼职路线&方法👈
学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取【保证100%免费】

更多推荐


所有评论(0)