带有多行熊猫的线图

时间:2018-08-02 02:58:32

标签: python pandas matplotlib

我试图通过显示两位球员多年来的积分线图来比较他们。我想要为每个玩家设置一条线,在x轴上表示Year,在y轴上表示该年的平均Pts。我可以使用groupby来获取数字,但是不能将它们分别绘制在图形上。

        Name         Year   Pts
2264    Mike Evans   2017   10.7 
2266    T.Y. Hilton  2017   10.0 
2440    Mike Evans   2013   7.5 
10271   T.Y. Hilton  2013   12.4 
10499   T.Y. Hilton  2013   1.3 

2 个答案:

答案 0 :(得分:2)

使用 pivot_table aggfunc='mean'

df.pivot_table('Pts', 'Year', 'Name', aggfunc='mean').plot(
          kind='line', marker='o', xticks=df.Year.unique()
)

# Pivot table produces:
# Name  MikeEvans  T.Y.Hilton
# Year
# 2013        7.5        6.85
# 2017       10.7       10.00

enter image description here

答案 1 :(得分:2)

seaborn是用于绘制DataFrames的非常有用的库。对于大多数绘图,它允许您指定一个hue参数,该参数本质上将数据进行分组以进行绘图。

import seaborn as sns

sns.pointplot(data = df.groupby(['Name', 'Year']).mean().reset_index(), 
              x='Year', y='Pts', hue='Name')

enter image description here