数据科学家的第一课:Python数据预处理完全指南

一、数据预处理的重要性

在数据科学项目中,约60%的时间都花费在数据清洗和预处理阶段。原始数据往往存在缺失值、异常值、不一致格式等问题,就像未加工的矿石需要经过多道工序才能变成有用材料。本文将系统介绍如何用Python两大核心库——NumPy和Pandas完成这些"数据精炼"工作。

二、NumPy数据处理基础

2.1 多维数组创建

import numpy as np
# 创建3×3随机矩阵
data = np.random.rand(3,3) 

NumPy的ndarray对象支持矢量化运算,比Python列表快50倍以上。特殊数组创建方法:

  • np.zeros() 创建全零数组

  • np.arange() 生成等差序列

  • np.linspace() 等分区间

2.2 数组操作技巧

# 条件筛选
mask = arr > 0.5
filtered = arr[mask]

# 轴向计算
np.mean(arr, axis=1)  # 行方向均值

三、Pandas数据处理实战

3.1 核心数据结构

  • Series:带标签的一维数组

s = pd.Series([1,3,5], index=['a','b','c'])
  • DataFrame:二维表格型数据结构

df = pd.DataFrame({
    'A': [1,2,None],
    'B': ['x', None, 'z']
})

3.2 数据清洗四部曲

  1. 缺失值处理

df.fillna(method='ffill')  # 前向填充
df.interpolate()  # 插值填充
  1. 异常值检测

Q1 = df.quantile(0.25)
Q3 = df.quantile(0.75)
IQR = Q3 - Q1
df[~((df < (Q1-1.5*IQR)) | (df > (Q3+1.5*IQR))).any(axis=1)]
  1. 数据转换

# 独热编码
pd.get_dummies(df['category'])

# 分箱处理
pd.cut(df['age'], bins=[0,18,35,60,100])
  1. 数据合并

pd.merge(df1, df2, on='key')  # SQL风格连接
pd.concat([s1, s2], axis=1)  # 轴向拼接

四、完整案例:电商数据清洗

4.1 原始数据问题诊断

  • 用户年龄存在负数

  • 订单日期格式不统一

  • 30%的邮政编码缺失

4.2 分步解决方案

# 步骤1:读取数据
raw = pd.read_csv('ecommerce.csv', parse_dates=['order_date'])

# 步骤2:年龄修正
raw['age'] = raw['age'].apply(lambda x: x if x>0 else np.nan)

# 步骤3:日期标准化
raw['order_date'] = pd.to_datetime(raw['order_date'])

# 步骤4:邮编填充
zip_mode = raw['zipcode'].mode()[0]
raw['zipcode'].fillna(zip_mode, inplace=True)

五、性能优化技巧

  1. 使用eval()进行链式运算加速

  2. 大数据集优先使用dtype指定数据类型

  3. 避免循环,尽量使用apply()或向量化操作

六、总结

掌握这些技术后,您将能够: ✓ 高效清洗百万级数据集 ✓ 自动识别数据质量问题 ✓ 构建可复用的数据处理管道 ✓ 为机器学习准备好高质量数据

建议下一步学习sklearn的预处理模块,构建完整的数据分析工作流。

你可能感兴趣的:(人工智能基础,python,开发语言)