【问题标题】:Plotting Multiple Lines Graph from DataFrame从 DataFrame 绘制多条线图
【发布时间】:2021-09-15 17:38:50
【问题描述】:

我有一个大型数据集,其中包含年份、NFL 球队、他们当年支付的总工资以及更多其他统计数据。我想创建一个图,其中 x 轴为年份,y 轴为总工资,然后有多条线,每个团队一条。

我想要绘制的数据看起来像这样,除了当然有更多的团队和年份,而且总工资是准确的:

Year Team Salaries
2015 Miami $100
2015 Denver $150
2015 LA $125
2016 Miami $125
2016 Denver $100
2016 LA $100

我知道 pandas 绘图功能,我可以设置 x 轴,但是当我将 y 设置为总工资时,它只会给我一行。我也不知道如何设置它来分解每个团队的数据,因此每个团队都被视为单独的一行。

【问题讨论】:

标签: python pandas dataframe matplotlib plot


【解决方案1】:

您想使用数据透视表为每个团队获取一个新列。

一旦您像这样重新调整数据,绘图就很容易了。查看pivot tables 上的文档。

import pandas as pd
df = pd.DataFrame(
     {
         "Year": ["2015", "2016", "2017", "2018"] * 6,
         "Team": ["Miami", "Denver", "LA"] * 8,
         "Salaries": [100, 200, 150, 125, 100, 250] * 4,
     }
)

df.pivot_table(values="Salaries",index="Year",columns="Team").plot()

数据透视表的结果如下所示

Team    Denver  LA  Miami
Year            
2015    100 150 100
2016    200 250 125
2017    100 150 100
2018    200 250 125

还有剧情:

【讨论】:

  • 谢谢!这帮助很大
  • 嗨@ChristianFett,在这里感谢的另一种方式是accepting 向其他人表明问题已解决的答案。
【解决方案2】:

通过seaborn替代:

import seaborn as sns

import pandas as pd

df = pd.DataFrame(
    {
        "Year": ["2015", "2016", "2017", "2018"] * 6,
        "Team": ["Miami", "Denver", "LA"] * 8,
        "Salaries": [100, 200, 150, 125, 100, 250] * 4,
    }
)


sns.lineplot(x='Year', y='Salaries', hue='Team', data=df)

输出:

注意:感谢@Cornelius Roemer 提供模型数据。

【讨论】:

  • 很好,Seaborn 内置了枢轴!你偷了我的模型数据:p
  • @CorneliusRoemer yup hue 参数非常方便。感谢您提供模型数据:)
  • 感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2015-06-12
  • 2019-10-27
  • 2021-01-15
  • 1970-01-01
  • 1970-01-01
  • 2017-06-13
  • 2023-03-12
相关资源
最近更新 更多