使用 Python 进行数据预处理的十个常用函数

开发 后端
本文介绍了使用 Python 进行数据预处理的十个常用函数,通过这些函数,我们可以高效地处理和准备数据,为后续的数据分析或机器学习任务打下坚实的基础。

在数据科学领域,数据预处理是一个非常重要的步骤,它能够帮助我们清洗和准备数据,以便更好地进行数据分析或机器学习建模。今天,我们就来聊聊使用 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 等。通过这些函数,我们可以高效地处理和准备数据,为后续的数据分析或机器学习任务打下坚实的基础。

责任编辑:赵宁宁 来源: 手把手PythonAI编程
相关推荐

2021-07-17 22:41:53

Python数据技术

2024-06-26 13:11:40

2024-01-24 13:14:00

Python内置函数工具

2022-08-27 15:03:43

Python损失函数算法

2024-07-18 15:08:27

2024-04-28 10:00:24

Python数据可视化库图像处理库

2023-06-27 15:50:23

Python图像处理

2022-08-19 16:09:08

Python损失函数算法

2024-05-06 11:12:22

图像处理数学计算NumPy

2023-12-22 15:44:43

2020-08-14 10:45:26

Pandas可视化数据预处理

2024-05-13 11:43:39

Python数据分析CSV

2009-09-03 10:08:27

JavaScript自

2024-05-23 11:53:24

Python代码异常处理

2022-05-12 08:12:51

PythonPip技巧

2024-06-21 10:46:44

2023-03-24 16:41:36

Pandas技巧数据处理

2016-08-03 16:27:47

GitLinux开源

2020-06-14 14:51:27

Java数据开发

2023-10-16 07:55:15

JavaScript对象技巧
点赞
收藏

51CTO技术栈公众号