一篇python的pandas数据清洗与处理概述以及操作

我们讨论过数据选择与过滤的相关内容,尤其是在使用 Pandas 进行数据操作时,如何高效地选择和过滤数据.现在我们将重点关注数据清洗与处理,这是数据分析过程中至关重要的一步.

什么是数据清洗?

数据清洗(Data Cleaning)是指对数据进行检测和修正的过程.数据往往会有缺失值、异常值或者不一致的格式,清洗数据的目的是提高数据的质量,使得后续的分析和建模更加准确.

常见的数据清洗步骤:

  1. 处理缺失值

  2. 处理重复数据

  3. 标准化数据格式

  4. 处理异常值

  5. 数据转换

处理缺失值

在数据集中,缺失值是常见的问题.我们可以通过 Pandasisnull() 方法和 fillna() 方法来处理缺失值.

示例

假设我们有一个关于学生成绩的数据如下:

import pandas as pd

data = {
    '姓名': ['小明', '小红', '小刚', None, '小丽'],
    '数学': [95, 88, None, 70, 85],
    '英语': [None, 82, 76, 90, 95]
}

df = pd.DataFrame(data)
print(df)

输出结果为:

    姓名    数学    英语
0   小明  95.0   NaN
1   小红  88.0  82.0
2   小刚   NaN  76.0
3  None  70.0  90.0
4   小丽  85.0  95.0

在这个数据集中,我们可以看到缺失的姓名、数学以及英语分数.我们可以选择删除包含缺失值的行或者用某个特定值填充缺失值.

# 填充缺失值
df['数学'].fillna(df['数学'].mean(), inplace=True)
df['英语'].fillna(df['英语'].mean(), inplace=True)

# 查看填充后的结果
print(df)

输出结果为:

    姓名    数学      英语
0   小明  95.0  86.60
1   小红  88.0  82.00
2   小刚  83.00  76.00
3  None  70.0  90.00
4   小丽  85.0  95.00

处理重复数据

有时候,数据集中可能会有重复的行.我们可以使用 duplicated() 方法来查找重复的行,并使用 drop_duplicates() 方法来删除它们.

示例

假设我们的数据集中包含重复记录:

data = {
    '姓名': ['小明', '小红', '小刚', '小明', '小丽', '小红'],
    '数学': [95, 88, 80, 95, 85, 88],
}

df = pd.DataFrame(data)
print("原始数据:")
print(df)

# 查找重复数据
duplicates = df.duplicated()
print("\n重复行:")
print(df[duplicates])

# 删除重复数据
df.drop_duplicates(inplace=True)
print("\n去重后的数据:")
print(df)

输出结果为:

原始数据:
    姓名  数学
0   小明  95
1   小红  88
2   小刚  80
3   小明  95
4   小丽  85
5   小红  88

重复行:
    姓名  数学
3   小明  95
5   小红  88

去重后的数据:
    姓名  数学
0   小明  95
1   小红  88
2   小刚  80
4   小丽  85

标准化数据格式

在数据清洗的过程中,有时候我们需要标准化字段的格式,例如日期格式或字符串的大小写.

示例

假设我们的数据集中日期的格式不一致,我们需要将它们转换为统一的格式:

data = {
    '姓名': ['小明', '小红'],
    '生日': ['1990-01-01', '1992/05/15']
}

df = pd.DataFrame(data)

# 标准化日期格式
df['生日'] = pd.to_datetime(df['生日'])
print(df)

输出结果为:

    姓名       生日
0   小明 1990-01-01
1   小红 1992-05-15

处理异常值

异常值指的是与其他数据点明显不同的值.我们可以用统计学方法,比如标准差、箱型图等,来识别异常值,并进行处理.

示例

下面的代码展示了如何使用标准差来处理异常值:

data = {
    '分数': [55, 60, 65, 70, 100, 150]  # 150是异常值
}

df = pd.DataFrame(data)

# 计算均值和标准差
mean = df['分数'].mean()
std = df['分数'].std()

# 设置阈值
threshold = 3
outliers = df[(df['分数'] < mean - threshold * std) | (df['分数'] > mean + threshold * std)]

print("异常值:")
print(outliers)

# 删除异常值
df = df[~df['分数'].isin(outliers['分数'])]
print("\n去除异常值后的数据:")
print(df)

输出结果为:

异常值:
    分数
5  150

去除异常值后的数据:
   分数
0  55
1  60
2  65
3  70
4  100

数据转换

数据转换是指将数据从一种格式转换为另一种格式,通常是在数据分析前的一步.

示例

例如,我们需要将一列的分数从百分制转换为五分制:

data = {
    '姓名': ['小明', '小红', '小刚'],
    '分数': [95, 85, 70]
}

df = pd.DataFrame(data)

# 将分数转换为五分制
df['五分制分数'] = (df['分数'] / 100) * 5
print(df)

输出结果为:

    姓名  分数

感谢大家的关注和支持!想了解更多编程精彩知识内容,请关注我的微信公众号:Python小胡子,有最新最前沿的的知识和人工智能AI与大家共享,同时,如果你觉得这篇文章对你有帮助,不妨点个赞,并点击关注.动动你发财的手,万分感谢!!!

原创文章不易,求点赞、在看、转发或留言,这样对我创作下一个精美文章会有莫大的动力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python茶水实验室

你的关注,是我创作的最大动力.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值