【问题标题】:Plotting pandas groupby绘制熊猫 groupby
【发布时间】:2016-04-21 21:54:21
【问题描述】:

我有一个包含一些汽车数据的数据框 - 结构非常简单。我有身份证、生产年份、公里数、价格和燃料类型(汽油/柴油)。

In [106]:
stack.head()

Out[106]:
    year    km      price   fuel
0   2003    165.286 2.350   petrol
1   2005    195.678 3.350   diesel
2   2002    125.262 2.450   petrol
3   2002    161.000 1.999   petrol
4   2002    164.851 2.599   diesel

我正在尝试使用 pylab/matplotlib 生成一个图表,其中 x 轴将是年份,然后使用 groupby 生成两个图(每种燃料类型一个),按年份计算平均值(平均函数)和公里。

任何帮助将不胜感激。

【问题讨论】:

    标签: python pandas matplotlib


    【解决方案1】:

    也许有更直接的方法可以做到这一点,但我会做以下事情。先groupby并采取价格手段:

    meanprice = df.groupby(['year','fuel'])['price'].mean().reset_index()
    

    对于公里:

    meankm = df.groupby(['year','fuel'])['km'].mean().reset_index()
    

    然后我将合并两个生成的数据框以将所有数据合二为一:

    d = pd.merge(meanprice,meankm,on=['year','fuel']).set_index('year')
    

    将索引设置为year 让我们在使用 pandas 进行绘图时变得容易。生成的数据框是:

            fuel   price       km
    year                         
    2002  diesel  2.5990  164.851
    2002  petrol  2.2245  143.131
    2003  petrol  2.3500  165.286
    2005  diesel  3.3500  195.678
    

    最后你可以通过fuel进行过滤:

    d[d['fuel']=='diesel'].plot(kind='bar')
    
    d[d['fuel']=='petrol'].plot(kind='bar')
    

    获得类似的东西:

    我不知道这是否是您期望的那种情节,但您可以使用kind 关键字轻松修改它们。希望对您有所帮助。

    【讨论】:

    • 差不多就是这样。我想制作两个线图 - 一个是价格,另一个是公里数,每条线有两条线(柴油和汽油)。
    猜你喜欢
    • 2020-03-25
    • 1970-01-01
    • 2017-12-31
    • 2018-09-26
    • 2019-02-24
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 2018-08-28
    相关资源
    最近更新 更多