文章目录
数据清洗与探索性分析教程
数据清洗和探索性数据分析(EDA)是数据科学项目中至关重要的步骤。数据往往是杂乱和不完美的,因此,我们需要对其进行清洗。同时,通过EDA,我们可以识别趋势、模式和异常,从而为后续分析制定基础。
1. 数据清洗
1.1 处理缺失值
缺失值是数据集中常见问题,处理方法有:
- 均值插补
- 中位数插补
- 众数插补
- 删除法
示例代码
import pandas as pd
import numpy as np
# 创建示例数据框
data = {
'A': [1, 2, np.nan, 4],
'B': [5, np.nan, np.nan, 8],
'C': ['foo', 'bar', 'foo', np.nan]
}
df = pd.DataFrame(data)
print("原始数据框:\n", df)
# 均值插补
df['A'] = df['A'].fillna(df['A'].mean())
print("\n均值插补后的数据框:\n", df)
# 中位数插补
df['B'] = df['B'].fillna(df['B'].median())
print("\n中位数插补后的数据框:\n", df)
# 众数插补
df['C'] = df['C'].fillna(df['C'].mode()[0])
print("\n众数插补后的数据框:\n", df)
# 删除法
df_cleaned = df.dropna()
print("\n删除法后数据框:\n", df_cleaned)
1.2 数据类型转换与规范化
在数据分析之前,确保每列的数据类型正确也是重要的一步。
示例代码
# 数据类型转换
df['A'] = df['A'].astype(int)
print("\n类型转换后的数据框:\n", df.dtypes)
# 规范化(将数值缩放到0到1之间)
df['A'] = (df['A'] - df['A'].min()) / (df['A'].max() - df['A'].min())
print("\n规范化后的数据框:\n", df)
2. 探索性数据分析(EDA)
EDA旨在分析数据集的特征,通过描述统计和可视化方法进行深入了解。
2.1 描述统计
描述统计提供了数据集的关键数值特征,包括均值、中位数、众数、标准差和四分位数。
示例代码
# 描述统计
print("\n数据框描述统计:\n", df.describe())
# 计算众数
mode_A = df['A'].mode()[0]
print("\n众数:", mode_A)
# 四分位数
q1 = df['A'].quantile(0.25)
q2 = df['A'].quantile(0.50)
q3 = df['A'].quantile(0.75)
print(f"\n四分位数:\nQ1: {q1}, Q2: {q2}, Q3: {q3}")
2.2 数据可视化
使用可视化技术帮助我们更好地理解数据的分布和特征。
示例代码
import matplotlib.pyplot as plt
import seaborn as sns
# 直方图
plt.figure(figsize=(10, 5))
plt.subplot(1, 2, 1)
plt.hist(df['A'], bins=5, color='blue', alpha=0.7)
plt.title('A的直方图')
plt.xlabel('值')
plt.ylabel('频率')
# 箱线图
plt.subplot(1, 2, 2)
sns.boxplot(data=df['A'], color='green')
plt.title('A的箱线图')
plt.tight_layout()
plt.show()
2.3 具代表性统计特征
在数据分析中,了解数据集的特征能够支持决策制定。
- 均值和中位数用于中心位置的比较。
- 标准差意味着数据的离散程度,加深对数据分布的理解。
- 四分位数帮助识别数据的范围与异常值。
3. 资源推荐
- 在线课程:
- Kaggle的“Data Cleaning”课程,适合所有研究阶段。
- 实战练习:
- 参与Kaggle竞赛,进行EDA实践,案例包括Titanic数据集。
结论
数据清洗和探索性数据分析是数据科学项目的重要组成部分。通过系统的缺失值处理、数据类型转换与规范化,以及丰富的描述统计与可视化手段,我们不仅能提升数据质量,还能获得关键洞察,为后续的建模与分析奠定基础。希望本文能为您在数据分析的旅程中提供有用的指导与参考。