Pandas 将GroupBy输出从Series转换为DataFrame
在本文中,我们将介绍如何使用Pandas将GroupBy对象从Series转换为DataFrame。在Pandas中,GroupBy是一种重要的数据处理技术,它用于将数据集分组并执行相应的计算。当我们使用GroupBy操作时,它返回一些有用的信息,如计数、总和、平均值和分组方式。
阅读更多:Pandas 教程
创建GroupBy对象
首先,让我们创建一个示例数据集。
import pandas as pd
data = {'Country': ['China', 'Japan', 'USA', 'China', 'Japan', 'USA', 'China', 'Japan', 'USA'],
'Year': [2015, 2015, 2015, 2016, 2016, 2016, 2017, 2017, 2017],
'GDP': [11.06, 4.38, 18.21, 11.94, 4.94, 19.39, 12.24, 5.15, 20.94],
'Population': [1377, 126, 324, 1404, 127, 326, 1427, 128, 328]}
df = pd.DataFrame(data)
这是一个具有4列数据和9个行的简单数据集。我们有三个国家(中国、日本和美国)、三个年份(2015、2016和2017)和两个经济指标(GDP和人口)。
现在,我们可以使用GroupBy来计算每个国家的平均GDP。
grouped = df.groupby('Country')['GDP'].mean()
print(grouped)
输出结果如下所示:
Country
China 11.080000
Japan 4.423333
USA 19.180000
Name: GDP, dtype: float64
将GroupBy对象转换为DataFrame
我们可以发现输出的结果类型是Series,而不是我们期望的DataFrame。现在让我们使用Pandas中的reset_index()函数来将该 Series 对象转换为 DataFrame。
df_grouped = grouped.reset_index()
print(df_grouped)
输出结果:
Country GDP
0 China 11.080000
1 Japan 4.423333
2 USA 19.180000
现在我们已经成功地将GroupBy对象从Series转换为DataFrame。
添加其他计算结果
在GroupBy操作中,我们还可以对其他列执行不同的计算,例如计算每个国家的人口总数和年份的最大值。
grouped_df = df.groupby(['Country', 'Year']).agg({'GDP': 'mean', 'Population': 'sum'})
print(grouped_df)
输出结果:
GDP Population
Country Year
China 2015 11.0600 1377
2016 11.9400 1404
2017 12.2400 1427
Japan 2015 4.3800 126
2016 4.9400 127
2017 5.1500 128
USA 2015 18.2100 324
2016 19.3900 326
2017 20.9400 328
上面的代码中,我们在GroupBy操作中指定两个列 – ‘Country’和 ‘Year’ – 并且使用agg()函数计算每个组的GDP平均值和人口总数。使用agg()函数,我们可以轻松地执行不同类型的计算,并按组返回结果。
总结
在本文中,我们介绍了如何使用Pandas将GroupBy对象从Series转换为DataFrame,以及如何针对不同的列执行不同的计算。GroupBy是一种强大的数据操作技术,可以帮助我们对数据集进行更高级别的操作和分析。希望这篇文章对你有所帮助!