pandas 数据预处理简介

Pandas是一个开源的Python数据分析库,提供了高性能、易用的数据结构和数据分析工具,特别适合于数据预处理工作。以下是对Pandas数据预处理的详细介绍:

一、数据加载与初步探索

Pandas支持多种格式的数据导入,包括CSV、Excel、SQL、JSON等。其中,CSV(Comma-Separated Values)是最常见的数据文件格式之一。Pandas提供了方便的函数来读取CSV文件,例如read_csv()函数。

import pandas as pd  
df = pd.read_csv('data.csv')  # 加载CSV文件  
print(df.head())  # 查看前5行数据  
print(df.shape)  # 查看数据集的形状(行数和列数)

使用info()方法可以查看数据集的基本信息,如数据类型、缺失值等。

print(df.info())

二、数据清洗

数据清洗是数据预处理的关键步骤,主要包括处理缺失值、去除重复值、数据类型转换等。

处理缺失值
Pandas提供了多种方法来处理缺失值,包括删除缺失值和填充缺失值。

删除缺失值:使用dropna()函数。可以指定axis参数来控制是删除包含缺失值的行还是列,how参数来控制是删除包含任何缺失值的行/列还是只删除全部为缺失值的行/列。

df_clean = df.dropna(axis=0, how='any')  # 删除包含任何缺失值的行

填充缺失值:使用fillna()函数。可以指定填充值,或者使用列的平均值、中位数等。

df_filled = df.fillna(value={'column_name': 0})  # 指定填充值  
df_filled['column_name'] = df['column_name'].fillna(df['column_name'].mean())  # 使用列的平均值填充

去除重复值
使用duplicated()和drop_duplicates()方法可以识别和处理重复值。

duplicates = df[df.duplicated()]  # 查找重复行  
df_unique = df.drop_duplicates()  # 删除重复行,默认保留第一个出现的记录

数据类型转换
数据类型不正确会影响数据分析和处理,Pandas提供了astype()函数来转换数据类型。

df['column_name'] = df['column_name'].astype('int')  # 将列的数据类型转换为整数

三、数据合并

Pandas提供了merge()函数来进行数据合并,支持内连接、外连接、左连接和右连接等多种连接方式。

import pandas as pd  
  
# 假设有两个DataFrame:df1和df2  
df1 = pd.DataFrame({  
    'key': ['A', 'B', 'C'],  
    'value1': [1, 2, 3]  
})  
  
df2 = pd.DataFrame({  
    'key': ['A', 'C', 'D'],  
    'value2': [4, 5, 6]  
})  
  

内连接

merge_inner = pd.merge(df1, df2, on='key', how='inner')  

外连接

merge_outer = pd.merge(df1, df2, on='key', how='outer')  

左连接

merge_left = pd.merge(df1, df2, on='key', how='left')  

右连接

merge_right = pd.merge(df1, df2, on='key', how='right')

四、数据变换

数据变换包括数据标准化、数据分箱、特征提取等。

数据标准化
数据标准化是将数据缩放到一个特定范围,通常是0到1或-1到1。可以使用StandardScaler进行数据标准化(需要额外导入sklearn.preprocessing库)。

from sklearn.preprocessing import StandardScaler  
scaler = StandardScaler()  
df_scaled = scaler.fit_transform(df[['column1', 'column2']])

注意:这里的结果df_scaled是一个NumPy数组,如果需要将其转换回DataFrame,可以使用pd.DataFrame(df_scaled,
columns=[‘column1_scaled’, ‘column2_scaled’])。

数据分箱
数据分箱是将连续数据划分为离散区间。Pandas提供了cut()函数进行数据分箱。

df['age_group'] = pd.cut(df['Age'], bins=[0, 18, 35, 50, 100], labels=['Child', 'Young Adult', 'Adult', 'Senior'])

特征提取
特征提取是从原始数据中提取有用的信息。例如,可以从日期中提取年、月、日等信息。

df['year'] = pd.DatetimeIndex(df['date']).year

五、数据可视化

虽然数据可视化不是数据预处理的直接步骤,但Pandas可以与Matplotlib等可视化库结合使用,生成图表来展示数据预处理的效果。

import matplotlib.pyplot as plt  

假设已经对df进行了预处理,并生成了一个名为’Salary_Scaled’的标准化工资列

plt.hist(df['Salary_Scaled'], bins=30, edgecolor='black')  
plt.title('Salary Distribution After Scaling')  
plt.xlabel('Salary (Scaled)')  
plt.ylabel('Frequency')  
plt.show()

综上所述,Pandas提供了丰富的数据预处理功能,包括数据加载、初步探索、数据清洗、数据合并、数据变换以及数据可视化等。这些功能使得Pandas成为数据分析师和开发人员在进行数据预处理时的首选工具。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值