Matplotlib图以奇怪的方式显示聚合函数

时间:2017-10-08 09:43:15

标签: python pandas matplotlib dataframe

尝试使用Matplotlib从DataFrame显示数据时,我遇到了以下问题。我们的想法是建立一个线性图,其中Y轴是每个游戏者的得分平均值,X轴是执行的镜头数。我已将聚合函数应用于我的DataFrame中的数据,但生成的图形看起来并不像我预期的那样。 这是我到目前为止所做的:

DataFrame

    Score      Gamer       Shots
a    5.0       gamer1        7   
b    3.0       gamer2        2  
c    2.5       gamer1        8   
d    7.1       gamer3        9
e    1.8       gamer3        2
f    2.2       gamer3        1

剧情

plt.title('Plot 1', size=14)
plt.xlabel('Number of Shots', size=14)
plt.ylabel('Mean Score', size=14)
plt.grid(b=True, which='major', color='g', linestyle='-')
x = df[['gamer','shots']].groupby(['gamer']).count()
y = df[['gamer','score']].groupby(['gamer']).mean()
plt.plot(x, y)

enter image description here

1 个答案:

答案 0 :(得分:1)

<\ n> IIUC,你需要这样的东西:

In [52]: df.groupby('Gamer').agg({'Score':'mean','Shots':'count'}).plot()
Out[52]: <matplotlib.axes._subplots.AxesSubplot at 0xb41e710>

enter image description here

相应的数据:

In [54]: df.groupby('Gamer').agg({'Score':'mean','Shots':'count'})
Out[54]:
        Score  Shots
Gamer
gamer1   3.75      2
gamer2   3.00      1
gamer3   3.70      3

<强>更新

  

我只需要一个单行图来显示均值的依赖关系   游戏者的得分(Y轴)对射击次数(X轴)

In [90]: df.groupby('Gamer').agg({'Score':'mean','Shots':'count'}).set_index('Shots').plot()
Out[90]: <matplotlib.axes._subplots.AxesSubplot at 0xbe749b0>

enter image description here

<强> UPDATE2:

In [155]: g = df.groupby('Gamer').agg({'Score':'mean','Shots':'count'}).sort_values('Shots')

In [156]: x,y = g['Shots'], g['Score']

In [157]: plt.plot(x, y)
Out[157]: [<matplotlib.lines.Line2D at 0xbdbf668>]

enter image description here