【问题标题】:Line plot with multiple lines pandas带有多行熊猫的线图
【发布时间】:2018-08-02 02:58:32
【问题描述】:
我试图通过显示他们多年来积分的折线图来比较两名球员。我想为每个玩家画一条线,在 x 轴上是年份,在 y 轴上是那一年的平均分。我可以使用 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
【问题讨论】:
标签:
python
pandas
matplotlib
【解决方案1】:
将 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
【解决方案2】:
seaborn 是一个非常有用的库,用于绘制DataFrames。对于大多数绘图,它允许您指定一个 hue 参数,该参数基本上将您的数据分组以进行绘图。
import seaborn as sns
sns.pointplot(data = df.groupby(['Name', 'Year']).mean().reset_index(),
x='Year', y='Pts', hue='Name')