pandas groupby 字符串
在数据分析和处理中,经常会遇到需要根据字符串类型的列进行分组统计的情况。此时可以使用pandas库中的groupby方法来实现对字符串类型的列进行分组操作。本文将详细介绍如何使用pandas的groupby方法对字符串类型的列进行分组操作,并展示示例代码和相应的运行结果。
1. 数据准备
首先,我们需要准备一个包含字符串类型列的数据集。这里以一个包含城市和销售额的数据集为例:
import pandas as pd
data = {
'City': ['Beijing', 'Shanghai', 'Beijing', 'Shanghai', 'Guangzhou'],
'Sales': [1000, 1500, 1200, 1300, 1100]
}
df = pd.DataFrame(data)
print(df)
运行结果如下:
City Sales
0 Beijing 1000
1 Shanghai 1500
2 Beijing 1200
3 Shanghai 1300
4 Guangzhou 1100
2. 使用groupby方法进行分组
接下来,我们将使用pandas的groupby方法对城市列进行分组,然后计算每个城市的销售额总和:
grouped = df.groupby('City')['Sales'].sum()
print(grouped)
运行结果如下:
City
Beijing 2200
Guangzhou 1100
Shanghai 2800
Name: Sales, dtype: int64
通过上面的代码,我们成功地对城市列进行了分组,并计算了每个城市的销售额总和。
3. 更复杂的分组操作
除了简单的对字符串类型列进行求和操作,我们还可以进行更复杂的分组操作。例如,我们可以计算每个城市的平均销售额、最大销售额和最小销售额:
grouped = df.groupby('City')['Sales'].agg(['mean', 'max', 'min'])
print(grouped)
运行结果如下:
mean max min
City
Beijing 1100.000000 1200 1000
Guangzhou 1100.000000 1100 1100
Shanghai 1400.000000 1500 1300
通过上面的代码,我们成功地计算了每个城市的平均销售额、最大销售额和最小销售额。
4. 多列分组
除了对单个字符串类型列进行分组操作外,我们还可以对多个字符串类型列进行分组。例如,我们可以根据城市和产品类别对销售额进行分组,然后计算每个组合的销售额总和:
data = {
'City': ['Beijing', 'Shanghai', 'Beijing', 'Shanghai', 'Guangzhou'],
'Category': ['A', 'A', 'B', 'B', 'A'],
'Sales': [1000, 1500, 1200, 1300, 1100]
}
df = pd.DataFrame(data)
grouped = df.groupby(['City', 'Category'])['Sales'].sum()
print(grouped)
运行结果如下:
City Category
Beijing B 1200
A 1000
Guangzhou A 1100
Shanghai B 1300
A 1500
Name: Sales, dtype: int64
通过上面的代码,我们成功地对城市和产品类别进行了分组,并计算了每个组合的销售额总和。
5. 总结
本文介绍了如何使用pandas的groupby方法对字符串类型的列进行分组操作。通过本文的示例代码,我们可以灵活地对字符串类型的列进行分组统计,从而更好地进行数据分析和处理。