9 个pandas常见清洗数据技巧

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小胡子):9 个pandas常见清洗数据技巧

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/303279.html

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!