python数据分析——数据预处理

在Python中,数据预处理是数据分析过程中的一个关键步骤,它涉及清洗、转换、标准化和准备数据以供进一步分析。以下是一些常见的数据预处理步骤和它们在Python中的实现方法:

  1. 数据清洗 (Data Cleansing)
    • 处理缺失值 (Handling Missing Values):
      使用pandas库中的fillna()dropna()interpolate()等方法。
    • 处理重复值 (Handling Duplicates):
      使用drop_duplicates()方法。
    • 处理异常值 (Handling Outliers):
      可以使用IQR(四分位距)方法、Z-score方法或可视化方法(如箱线图)来识别和处理异常值。
  2. 数据转换 (Data Transformation)
    • 文本数据编码 (Encoding Textual Data):
      使用LabelEncoderOneHotEncoder(对于分类数据)从sklearn.preprocessing
    • 日期时间处理 (Datetime Processing):
      使用pandasto_datetime()函数和dt访问器来提取日期时间的各个部分(如年、月、日、小时等)。
    • 数值型数据标准化/归一化 (Standardization/Normalization):
      使用StandardScalerMinMaxScalersklearn.preprocessing
    • 对数转换 (Log Transformation):
      使用numpylog()函数或pandasapply()方法结合numpy.log
  3. 特征选择 (Feature Selection)
    • 过滤方法 (Filter Methods):
      基于统计测试(如卡方检验、信息增益等)选择特征。
    • 包装方法 (Wrapper Methods):
      使用模型(如决策树、随机森林)的性能作为特征选择的依据。
    • 嵌入方法 (Embedded Methods):
      在模型训练过程中自动进行特征选择,如使用L1正则化的线性模型。
  4. 特征工程 (Feature Engineering)
    • 创建新特征 (Creating New Features):
      基于现有特征计算新的特征,如比例、差值、乘积等。
    • 特征分箱 (Binning):
      将连续变量转换为类别型变量或将多类别变量减少为较少的类别。
    • 特征多项式扩展 (Polynomial Expansion):
      通过添加特征的高阶项来增加模型的复杂度。
  5. 数据拆分 (Data Splitting)
    • 拆分训练集和测试集 (Splitting into Train and Test Sets):
      使用train_test_split()函数从sklearn.model_selection
    • 拆分验证集 (Splitting into Validation Set):
      在训练集上进一步拆分出验证集来评估和调整模型参数。
  6. 数据保存和加载 (Saving and Loading Data)
    • 使用pandasto_csv()to_excel()to_json()to_pickle()等方法保存数据。
    • 使用pandasread_csv()read_excel()read_json()read_pickle()等方法加载数据。

在实际项目中,这些步骤可能需要根据数据的具体情况和需求进行调整和组合。此外,impyutefeature_engine等库也提供了更多高级的数据预处理功能。

以下是一些实际的数据预处理例子,结合Python中常用的库(如pandas、scikit-learn等)进行说明:

1. 数据清洗

处理缺失值

  • 删除包含缺失值的行:使用dropna()方法。
import pandas as pd  
  
# 假设df是你的DataFrame  
df.dropna(inplace=True)  # 删除包含任何缺失值的行  
  
# 或者,只针对某些列删除缺失值  
df.dropna(subset=['column1', 'column2'], inplace=True)

  • 填充缺失值:使用fillna()方法。
df.fillna(value=0, inplace=True)  # 用0填充所有缺失值  
  
# 或者,使用列的平均值填充缺失值  
df['column1'].fillna(df['column1'].mean(), inplace=True)


处理重复值

  • 删除重复行:使用drop_duplicates()方法。
df.drop_duplicates(inplace=True)  # 删除所有重复行  
  
# 或者,基于某些列删除重复行  
df.drop_duplicates(subset=['column1', 'column2'], inplace=True)


2. 数据转换

归一化

  • 使用MinMaxScaler进行归一化,将数据压缩到[0, 1]区间。
from sklearn.preprocessing import MinMaxScaler  
  
scaler = MinMaxScaler()  
df_scaled = scaler.fit_transform(df[['column1', 'column2']])  # 假设你想要归一化column1和column2  
df_scaled = pd.DataFrame(df_scaled, columns=['column1_scaled', 'column2_scaled'])


独热编码 (One-Hot Encoding)

  • 对于分类变量,使用独热编码转换为数值型。
df_encoded = pd.get_dummies(df, columns=['categorical_column'])  # 假设categorical_column是分类列


3. 特征选择

基于统计检验的特征选择

  • 使用SelectKBest选择与目标变量相关性最高的K个特征。
from sklearn.feature_selection import SelectKBest, chi2  # 假设目标是分类任务,使用chi2检验  
  
X, y = df.drop('target', axis=1), df['target']  # 假设target是目标列  
best_features = SelectKBest(score_func=chi2, k=5).fit_transform(X, y)


4. 数据拆分

拆分训练集和测试集

  • 使用train_test_split
from sklearn.model_selection import train_test_split  
  
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)  # 20%作为测试集


5. 数据保存和加载

保存DataFrame到CSV

df.to_csv('data.csv', index=False)  # 不保存索引


从CSV加载DataFrame

df = pd.read_csv('data.csv')


这些例子提供了Python中数据预处理的基本操作,并使用了pandas和scikit-learn等常用库。在实际应用中,可能需要根据具体的数据集和分析需求进行调整和扩展。

需要更多学习资料和实践源码的看这里👇↓↓↓

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值