在数据科学领域,数据预处理是一个非常重要的步骤,它能够帮助我们清洗和准备数据,以便更好地进行数据分析或机器学习建模。今天,我们就来聊聊使用 Python 进行数据预处理的 10 个常用函数。这些函数都是基于 Pandas 库的,Pandas 是一个强大的数据处理库,广泛应用于数据科学项目中。
1. read_csv:读取 CSV 文件
首先,我们需要将数据加载到 Pandas DataFrame 中。read_csv 函数是最常用的读取 CSV 文件的方法。
import pandas as pd
# 读取 CSV 文件
df = pd.read_csv('data.csv')
# 显示前 5 行数据
print(df.head())
输出结果:
id name age city
0 1 John 28 New York
1 2 Jane 34 Los Angeles
2 3 Mike 42 Chicago
3 4 Alex 21 Houston
4 5 Emma 29 Phoenix
解释:
- pd.read_csv('data.csv'):读取名为 data.csv 的文件。
- df.head():显示 DataFrame 的前 5 行数据。
2. info:查看数据信息
info 函数可以显示 DataFrame 的基本信息,包括列名、非空值数量和数据类型。
# 查看数据信息
df.info()
输出结果:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 id 5 non-null int64
1 name 5 non-null object
2 age 5 non-null int64
3 city 5 non-null object
dtypes: int64(2), object(2)
memory usage: 280.0+ bytes
解释:
- df.info():显示 DataFrame 的基本信息,包括每列的数据类型和非空值数量。
3. describe:生成描述性统计信息
describe 函数可以生成数值型列的描述性统计信息,如均值、标准差、最小值、最大值等。
# 生成描述性统计信息
print(df.describe())
输出结果:
id age
count 5.000000 5.000000
mean 3.000000 30.800000
std 1.581139 8.372603
min 1.000000 21.000000
25% 2.000000 24.500000
50% 3.000000 29.000000
75% 4.000000 34.000000
max 5.000000 42.000000
解释:
- df.describe():生成数值型列的描述性统计信息。
4. isnull 和 notnull:检查缺失值
isnull 和 notnull 函数可以用来检查 DataFrame 中是否存在缺失值。
# 检查缺失值
print(df.isnull())
# 检查非缺失值
print(df.notnull())
输出结果:
id name age city
0 False False False False
1 False False False False
2 False False False False
3 False False False False
4 False False False False
id name age city
0 True True True True
1 True True True True
2 True True True True
3 True True True True
4 True True True True
解释:
- df.isnull():返回一个布尔 DataFrame,表示哪些单元格是缺失值。
- df.notnull():返回一个布尔 DataFrame,表示哪些单元格是非缺失值。
5. fillna:填充缺失值
fillna 函数可以用来填充 DataFrame 中的缺失值。
# 填充缺失值
df['age'] = df['age'].fillna(df['age'].mean())
# 显示前 5 行数据
print(df.head())
输出结果:
id name age city
0 1 John 28.0 New York
1 2 Jane 34.0 Los Angeles
2 3 Mike 42.0 Chicago
3 4 Alex 21.0 Houston
4 5 Emma 29.0 Phoenix
解释:
- df['age'].fillna(df['age'].mean()):用 age 列的均值填充缺失值。
6. dropna:删除缺失值
dropna 函数可以用来删除包含缺失值的行或列。
# 删除包含缺失值的行
df = df.dropna()
# 显示前 5 行数据
print(df.head())
输出结果:
id name age city
0 1 John 28.0 New York
1 2 Jane 34.0 Los Angeles
2 3 Mike 42.0 Chicago
3 4 Alex 21.0 Houston
4 5 Emma 29.0 Phoenix
解释:
- df.dropna():删除包含缺失值的行。
7. drop:删除指定的行或列
drop 函数可以用来删除指定的行或列。
# 删除指定的列
df = df.drop(columns=['city'])
# 显示前 5 行数据
print(df.head())
输出结果:
id name age
0 1 John 28.0
1 2 Jane 34.0
2 3 Mike 42.0
3 4 Alex 21.0
4 5 Emma 29.0
解释:
- df.drop(columns=['city']):删除 city 列。
8. rename:重命名列
rename 函数可以用来重命名 DataFrame 中的列。
# 重命名列
df = df.rename(columns={'name': 'full_name'})
# 显示前 5 行数据
print(df.head())
输出结果:
id full_name age
0 1 John 28.0
1 2 Jane 34.0
2 3 Mike 42.0
3 4 Alex 21.0
4 5 Emma 29.0
解释:
- df.rename(columns={'name': 'full_name'}):将 name 列重命名为 full_name。
9. apply:应用自定义函数
apply 函数可以用来对 DataFrame 的列应用自定义函数。
# 定义一个自定义函数
def age_group(age):
if age < 30:
return 'Young'
elif age < 50:
return 'Middle-aged'
else:
return 'Senior'
# 应用自定义函数
df['age_group'] = df['age'].apply(age_group)
# 显示前 5 行数据
print(df.head())
输出结果:
id full_name age age_group
0 1 John 28.0 Young
1 2 Jane 34.0 Middle-aged
2 3 Mike 42.0 Middle-aged
3 4 Alex 21.0 Young
4 5 Emma 29.0 Young
解释:
- df['age'].apply(age_group):对 age 列应用 age_group 函数,生成新的 age_group 列。
10. merge:合并 DataFrame
merge 函数可以用来合并两个 DataFrame。
# 创建另一个 DataFrame
df2 = pd.DataFrame({
'id': [1, 2, 3, 4, 5],
'salary': [50000, 60000, 70000, 45000, 55000]
})
# 合并 DataFrame
df = df.merge(df2, on='id')
# 显示前 5 行数据
print(df.head())
输出结果:
id full_name age age_group salary
0 1 John 28.0 Young 50000
1 2 Jane 34.0 Middle-aged 60000
2 3 Mike 42.0 Middle-aged 70000
3 4 Alex 21.0 Young 45000
4 5 Emma 29.0 Young 55000
解释:
- df.merge(df2, on='id'):根据 id 列合并 df 和 df2。
实战案例:处理电子商务数据
假设我们有一个电子商务数据集,包含用户的购买记录。我们需要进行以下操作:1. 读取数据。2. 检查并处理缺失值。3. 生成用户购买次数和总金额的汇总信息。4. 将结果保存到新的 CSV 文件中。
import pandas as pd
# 1. 读取数据
df = pd.read_csv('ecommerce_data.csv')
# 2. 检查并处理缺失值
print(df.isnull().sum())
df = df.dropna()
# 3. 生成用户购买次数和总金额的汇总信息
user_summary = df.groupby('user_id').agg({'order_id': 'count', 'amount': 'sum'}).reset_index()
user_summary.columns = ['user_id', 'purchase_count', 'total_amount']
# 4. 将结果保存到新的 CSV 文件中
user_summary.to_csv('user_summary.csv', index=False)
# 显示前 5 行数据
print(user_summary.head())
输出结果:
user_id purchase_count total_amount
0 1 5 1500.0
1 2 3 900.0
2 3 7 2100.0
3 4 2 400.0
4 5 4 1200.0
总结
本文介绍了使用 Python 进行数据预处理的 10 个常用函数,包括读取 CSV 文件、查看数据信息、生成描述性统计信息、检查和处理缺失值、删除指定的行或列、重命名列、应用自定义函数、合并 DataFrame 等。通过这些函数,我们可以高效地处理和准备数据,为后续的数据分析或机器学习任务打下坚实的基础。