掌握 Python 数据清洗的七个必备技巧

开发
很多小伙伴可能会觉得数据清洗枯燥,但实际上,掌握好数据清洗的技巧能大大提高效率。今天,我们就来聊聊Python数据清洗的7个必备技巧。

数据清洗是在数据分析和数据科学项目中的一个关键环节。很多小伙伴可能会觉得它枯燥,但实际上,掌握好数据清洗的技巧能大大提高效率。今天,我们就来聊聊Python数据清洗的七个必备技巧。

技巧一:去除重复值

首先,我们先从简单的一环开始——去除重复值。想象一下,你的数据中有些行可能是完全一样的,这在分析时会影响准确性。

示例代码:

import pandas as pd

# 创建一个示例数据框
data = {'name': ['Tom', 'Jerry', 'Mike', 'Tom'], 
        'age': [25, 30, 40, 25]}
df = pd.DataFrame(data)

print("原始数据:")
print(df)

# 使用drop_duplicates方法删除重复行
df_cleaned = df.drop_duplicates()

print("\n去重后的数据:")
print(df_cleaned)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

解释:这里drop_duplicates()函数用来移除DataFrame中的重复行。

技巧二:缺失值处理

数据中的空值是非常常见的问题,我们可以选择删除或填充这些缺失值。

示例代码:

# 在原数据帧基础上添加一些缺失值
df_missing = df_cleaned.copy()
df_missing.loc[1, 'age'] = None

print("带缺失值的数据:")
print(df_missing)

# 删除包含空值的行
df_dropped = df_missing.dropna()
print("\n删除含空值的行后:")
print(df_dropped)

# 或者用均值填充空值
mean_age = df['age'].mean()
df_filled = df_missing.fillna(mean_age)
print("\n用平均值填充后的数据:")
print(df_filled)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

技巧三:文本数据清洗

当我们的数据涉及大量文本时,需要进行清理以便更好地分析,比如转换大小写、移除空格等。

示例代码:

text_data = {'text': [' Python ', ' JAVA  ', 'c++']}
df_text = pd.DataFrame(text_data)

# 去除空格,并统一转换为小写
df_text['text'] = df_text['text'].str.strip().str.lower()

print("清理后的文本数据:")
print(df_text)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

技巧四:数据类型转换

确保每一列的数据都是正确的类型对于后续操作是重要的。

示例代码:

# 转换年龄列为整数类型
df_dropped['age'] = df_dropped['age'].astype('int')

print("转换数据类型的后:")
print(df_dropped.dtypes)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

技巧五:离群值检测与处理

有时候,异常高或低的数值也被称为离群值。它们可能影响模型的结果。

示例代码:

from scipy import stats

data_with_outliers = [25, 30, 40, 25, 200]
z_scores = stats.zscore(data_with_outliers)
filtered_data = [d for d, z in zip(data_with_outliers, z_scores) if abs(z) < 2]

print("去除离群值后的数据:", filtered_data)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.

技巧六:日期时间处理

日期和时间信息常需标准化以方便计算和分析。

示例代码:

date_series = pd.Series(['2023-1-3', '2023/1/4', None])
cleaned_dates = pd.to_datetime(date_series, errors='coerce')

print("处理后的时间数据:")
print(cleaned_dates)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.

技巧七:合并多个表

当你有多份数据表时,如何将他们组合在一起是关键。

示例代码:

df1 = pd.DataFrame({'key': ['A', 'B', 'C'], 'data': [1, 2, 3]})
df2 = pd.DataFrame({'key': ['B', 'C', 'D'], 'info': ['x', 'y', 'z']})

merged_df = pd.merge(df1, df2, on='key', how='inner')
print("合并后的数据:")
print(merged_df)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

实战案例

假如你现在负责一家电商平台的数据分析工作,需要处理用户购买行为记录的数据集。你需要先清理数据,包括去重、处理丢失值,接着分析用户最常购买的类别等。可以尝试利用今天学到的技术点逐一解决问题。

责任编辑:赵宁宁 来源: 手把手PythonAI编程
相关推荐

2025-01-10 08:38:16

2018-05-24 08:47:15

数据存储技巧

2018-04-27 09:22:21

数据存储技巧

2023-09-07 16:28:46

JavaScrip

2021-11-22 12:13:54

Linuxwget 命令

2023-11-28 12:07:06

Python代码

2025-01-07 08:21:03

2021-09-03 10:08:53

JavaScript开发 代码

2023-05-30 09:59:38

2021-08-17 10:08:44

HTML网站网络

2022-04-14 10:40:11

领导者IT团队远程团队

2024-06-25 15:41:41

2024-03-12 10:02:31

Python内存编程

2024-01-02 18:03:42

编程语言Python

2022-08-16 10:16:53

CIOIT领导者

2022-04-02 10:42:04

数据管理数据管理现代化CIO

2019-09-09 10:32:51

基于意图的网络IBN网络

2021-04-27 22:32:18

Python

2024-01-09 18:01:38

2025-01-26 10:49:52

点赞
收藏

51CTO技术栈公众号