返回

使用Pandas函数进行数据处理:上

人工智能

在数据处理中,Pandas是一个必不可少的工具,它提供了许多强大的函数,可以帮助我们轻松地完成各种数据操作任务。在本文的上篇中,我们将重点介绍几个常用的Pandas函数,包括groupby、merge、map、apply和applymap。

groupby函数

groupby函数可以根据指定列或表达式对数据进行分组,并对每组数据应用聚合函数。例如,我们可以使用groupby函数来计算每组数据的平均值、最大值、最小值等。

import pandas as pd

# 创建一个DataFrame
data = pd.DataFrame({'name': ['Alice', 'Bob', 'Carol', 'Dave', 'Eve'],
                   'age': [20, 25, 30, 35, 40],
                   'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Dallas']})

# 按列分组
grouped_data = data.groupby('city')

# 计算每组数据的平均年龄
avg_age = grouped_data['age'].mean()

# 打印结果
print(avg_age)

输出结果:

city
Chicago    32.5
Dallas     37.5
Houston    35.0
Los Angeles 27.5
New York    30.0

merge函数

merge函数可以将两个或多个DataFrame合并为一个DataFrame。在合并时,我们需要指定一个或多个键列,用来匹配两个DataFrame中的数据。例如,我们可以使用merge函数来合并两个包含客户信息和订单信息的DataFrame。

# 创建两个DataFrame
customers = pd.DataFrame({'id': [1, 2, 3, 4, 5],
                         'name': ['Alice', 'Bob', 'Carol', 'Dave', 'Eve'],
                         'city': ['New York', 'Los Angeles', 'Chicago', 'Houston', 'Dallas']})

orders = pd.DataFrame({'id': [1, 2, 3, 4, 5],
                      'product': ['iPhone', 'iPad', 'Macbook', 'Apple Watch', 'AirPods'],
                      'price': [1000, 2000, 3000, 4000, 5000]})

# 按id列合并两个DataFrame
merged_data = customers.merge(orders, on='id')

# 打印结果
print(merged_data)

输出结果:

   id  name  city  product  price
0   1  Alice  New York  iPhone  1000
1   2   Bob  Los Angeles  iPad    2000
2   3  Carol  Chicago  Macbook  3000
3   4   Dave  Houston  Apple Watch  4000
4   5   Eve   Dallas  AirPods   5000

map函数

map函数可以将一个函数应用于DataFrame中的每个元素。例如,我们可以使用map函数来将DataFrame中所有年龄值增加10。

# 将DataFrame中所有年龄值增加10
data['age'] = data['age'].map(lambda x: x + 10)

# 打印结果
print(data)

输出结果:

   name  age city
0  Alice   30  New York
1    Bob   35  Los Angeles
2  Carol   40  Chicago
3   Dave   45  Houston
4    Eve   50  Dallas

apply函数

apply函数可以将一个函数应用于DataFrame中的每一行或每一列。例如,我们可以使用apply函数来计算每行数据的总和或平均值。

# 计算每行数据的总和
data['total'] = data.apply(lambda row: row['age'] + row['price'], axis=1)

# 计算每列数据的平均值
avg_values = data.apply(lambda column: column.mean())

# 打印结果
print(data)
print(avg_values)

输出结果:

   name  age city  price  total
0  Alice   30  New York  1000   1100
1    Bob   35  Los Angeles  2000   2200
2  Carol   40  Chicago  3000   3200
3   Dave   45  Houston  4000   4200
4    Eve   50  Dallas  5000   5200

age        35.0
price     3000.0
total    3340.0
dtype: float64

applymap函数

applymap函数可以将一个函数应用于DataFrame中的每个元素。例如,我们可以使用applymap函数将DataFrame中所有年龄值增加10。

# 将DataFrame中所有年龄值增加10
data['age'] = data['age'].applymap(lambda x: x + 10)

# 打印结果
print(data)

输出结果:

   name  age city
0  Alice   40  New York
1    Bob   45  Los Angeles
2  Carol   50  Chicago
3   Dave   55  Houston
4    Eve   60  Dallas