答答问 > 投稿 > 正文
【揭秘Pandas】轻松学会高效数据清洗与预处理技巧

作者:用户AVZK 更新时间:2025-06-09 04:37:02 阅读时间: 2分钟

一、数据清洗与预处理的重要性

在数据分析过程中,数据清洗与预处理是至关重要的步骤。原始数据往往存在缺失值、异常值、重复数据等问题,这些问题会影响数据分析的准确性和可靠性。数据清洗与预处理的目的是确保数据质量,为后续的数据分析和建模打下良好的基础。

二、Pandas 简介

Pandas 是一个开源的 Python 数据处理库,提供了高性能、易用的数据结构和数据分析工具。Pandas 的核心数据结构包括:

  • Series:一维数组,可以存储任何数据类型。
  • DataFrame:二维表格,类似于 R 中的数据框,用于存储数据。

三、Pandas 数据清洗与预处理技巧

1. 读取数据

import pandas as pd

# 读取 CSV 文件
df = pd.read_csv('data.csv')

# 读取 Excel 文件
df = pd.read_excel('data.xlsx')

2. 查看数据

# 查看前几行数据
print(df.head())

# 查看数据信息
print(df.info())

# 查看数据描述统计
print(df.describe())

3. 处理缺失值

# 删除包含缺失值的行
df_cleaned = df.dropna()

# 用平均值填充缺失值
df['column_name'] = df['column_name'].fillna(df['column_name'].mean())

# 用众数填充缺失值
df['column_name'] = df['column_name'].fillna(df['column_name'].mode()[0])

4. 处理重复值

# 删除重复值
df_cleaned = df.drop_duplicates()

# 检查重复值
print(df.duplicated())

5. 处理异常值

# 使用 IQR 方法检测异常值
Q1 = df['column_name'].quantile(0.25)
Q3 = df['column_name'].quantile(0.75)
IQR = Q3 - Q1

# 确定异常值的边界
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 筛选出异常值
df_outliers = df[(df['column_name'] < lower_bound) | (df['column_name'] > upper_bound)]

6. 处理数据类型不一致

# 将字符串转换为数值类型
df['column_name'] = df['column_name'].astype(float)

# 将日期字符串转换为日期对象
df['date_column'] = pd.to_datetime(df['date_column'], format='%Y-%m-%d')

7. 处理数据格式不一致

# 规范化日期格式
df['date_column'] = df['date_column'].dt.strftime('%Y-%m-%d')

8. 数据标准化和归一化

from sklearn.preprocessing import StandardScaler

# 数据标准化
scaler = StandardScaler()
df['standardized_column'] = scaler.fit_transform(df[['column_name']])

# 数据归一化
from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
df['normalized_column'] = scaler.fit_transform(df[['column_name']])

9. 数据编码

from sklearn.preprocessing import LabelEncoder

# 将分类数据转换为数值
le = LabelEncoder()
df['encoded_column'] = le.fit_transform(df['category_column'])

四、案例:使用 Pandas 进行数据清洗与预处理

假设我们有一个包含客户信息的 DataFrame,我们需要进行以下操作:

  1. 读取数据。
  2. 查看数据。
  3. 处理缺失值。
  4. 处理重复值。
  5. 处理异常值。
  6. 处理数据类型不一致。
  7. 处理数据格式不一致。
  8. 数据标准化和归一化。
  9. 数据编码。
import pandas as pd
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.preprocessing import LabelEncoder

# 读取数据
df = pd.read_csv('customer_data.csv')

# 查看数据
print(df.head())

# 处理缺失值
df_cleaned = df.dropna()

# 处理重复值
df_cleaned = df_cleaned.drop_duplicates()

# 处理异常值
Q1 = df_cleaned['age'].quantile(0.25)
Q3 = df_cleaned['age'].quantile(0.75)
IQR = Q3 - Q1
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR
df_cleaned = df_cleaned[(df_cleaned['age'] >= lower_bound) & (df_cleaned['age'] <= upper_bound)]

# 处理数据类型不一致
df_cleaned['age'] = df_cleaned['age'].astype(float)
df_cleaned['date_of_birth'] = pd.to_datetime(df_cleaned['date_of_birth'], format='%Y-%m-%d')

# 处理数据格式不一致
df_cleaned['date_of_birth'] = df_cleaned['date_of_birth'].dt.strftime('%Y-%m-%d')

# 数据标准化和归一化
scaler = StandardScaler()
df_cleaned['standardized_age'] = scaler.fit_transform(df_cleaned[['age']])

scaler = MinMaxScaler()
df_cleaned['normalized_age'] = scaler.fit_transform(df_cleaned[['age']])

# 数据编码
le = LabelEncoder()
df_cleaned['encoded_gender'] = le.fit_transform(df_cleaned['gender'])

# 查看清洗后的数据
print(df_cleaned.head())

五、总结

数据清洗与预处理是数据分析中的关键步骤,Pandas 提供了丰富的工具和函数,可以帮助我们高效地进行数据清洗与预处理。通过掌握 Pandas 的数据清洗与预处理技巧,我们可以提高数据分析的准确性和可靠性,为后续的数据分析和建模打下良好的基础。

大家都在看
发布时间:2024-12-13 19:23
这张是【终极】规划图,太密集了,不是很清晰。。
发布时间:2024-12-10 03:30
共25.6公里,44分钟收费5元,打车77元打车费用(北京)描述 单价(回元/公里) 起步价(元) 燃油答费(元) 总费用(元) 日间:(5:00-23:00) 2.3 13.0 0.0。
发布时间:2024-10-30 00:40
人的大脑在人的日常生活常常被别人应用,在人的日常生活人的大脑也是必不可少的。可是在这里另外,人脑也是很容易出现问题的。古时候,人的大脑出现问题基本上是不可以。