根据条件绘制数据帧

时间:2017-03-13 16:51:51

标签: python plot group-by

我的数据框df如下:显示按类型划分的每类人员每天所需的公里数。

People      Car         dmy         value(km)
A         Renault    14-05-2016     500
B         Peugeot    14-05-2016     1000
A         Citroen    14-05-2016     400
A         Renault    15-05-2016     24
B         Peugeot    15-05-2016     247
A         Renault    15-05-2016     369
A         Citroen    23-05-2016     692
A         Citroen    28-05-2016     284

我有超过1年的20k行

我想通过dmy列进行分组,以获得'值(km)'的平均值。每天一列

这就是我所做的:

我首先创建一个给定2个条件的新数据帧:我的图表仅显示1种车型和1类人物每天的平均值kms。

 yy = (df["Car"] == 'Renault') & (df["People"] == 'A')

然后我创建一个数据帧来执行group.by

zz = yy.groupby('dmy')['value(km)'].mean()

并将dmy列设置为索引

zz = zz.set_index(' dmy')

然后我绘制这个新的zz数据帧:

plt.plot(zz.index, zz["value"].values, linestyle='-', color='b', label="Renault")
plt.gcf().autofmt_xdate()
plt.legend()
plt.show()

虽然没有出现情节。求救!

1 个答案:

答案 0 :(得分:0)

groupby会返回DataFrameGroupBy而不是Dataframe

我首先选择必要的列,然后拨打aggregate并最终plot

import numpy as np
zz = yy[['value(km)', 'dmy']].groupby('dmy').aggregate(np.mean)
zz.plot()