📜  Pandas – Groupby 多个值和绘图结果(1)

📅  最后修改于: 2023-12-03 15:33:23.919000             🧑  作者: Mango

Pandas – Groupby 多个值和绘图结果

介绍

pandas库是一个快速、强大、灵活且易于使用的数据分析和操作工具,使用pandas可以完成数据的清洗、转换、分析以及可视化等一系列操作。其中groupbypandas中非常重要的一个功能,可以将数据按照指定的多个标准进行分组,并对分组后的数据进行各种聚合操作,例如求和、均值、计数等。此外,pandas还拥有强大的绘图功能,可以将分组聚合的结果绘制成各种类型的图表,如柱状图、折线图、饼状图等。

本文将着重介绍pandasgroupby多个值和绘图结果的使用,为程序员带来实用的参考。

多个值的groupby

当需要按照多个字段对数据进行分组时,可以使用多个字段的列表来传递给groupby方法。例如,对一个包含销售记录的数据集按照年份和地区进行分组,可以使用如下代码:

import pandas as pd

data = {
    'year': [2019, 2019, 2019, 2018, 2018, 2017, 2017, 2017],
    'region': ['East', 'West', 'North', 'East', 'West', 'North', 'East', 'West'],
    'sales': [1000, 2000, 3000, 1500, 2500, 3500, 1200, 1800]
}

df = pd.DataFrame(data)

grouped = df.groupby(['year', 'region'])
result = grouped.sum()
print(result)

输出结果如下:

            sales
year region       
2017 East    1200
     North   3500
     West    1800
2018 East    1500
     West    2500
2019 East    1000
     North   3000
     West    2000

上述代码中首先创建了一个包含年份、地区和销售额的销售记录数据集df,然后按照年份和地区对数据进行分组,最后计算出每个分组的销售总额并输出结果。

绘图结果

pandas库自带了非常方便的绘图工具,可以使用plot方法将聚合结果可视化。例如,将上述多个字段分组后的结果绘制成柱状图,可以使用如下代码:

import pandas as pd
import matplotlib.pyplot as plt

data = {
    'year': [2019, 2019, 2019, 2018, 2018, 2017, 2017, 2017],
    'region': ['East', 'West', 'North', 'East', 'West', 'North', 'East', 'West'],
    'sales': [1000, 2000, 3000, 1500, 2500, 3500, 1200, 1800]
}

df = pd.DataFrame(data)

grouped = df.groupby(['year', 'region'])
result = grouped.sum()
result.plot(kind='bar')

plt.show()

运行上述代码可以得到如下的柱状图:

pandas_groupby_bar_chart.png

使用plot方法时,可以通过传入kind参数选择图形类型。例如,kind='line'表示绘制折线图,kind='pie'表示绘制饼状图。同时,可以使用plt模块的各种方法对图形进行自定义,例如设置横轴标签、纵轴标签、图标题等。

总结

pandas库中的groupby功能可以对数据进行灵活的分组操作,可以按照单个或多个字段进行分组,并对分组后的数据进行各种聚合操作,例如求和、均值、计数等。同时,pandas库还拥有丰富的绘图功能,可以将分组聚合的结果绘制成多种类型的图表。这些功能的灵活使用可以帮助程序员更加高效地进行数据分析和可视化。