【问题标题】:Pandas filter data for line graphPandas 为折线图过滤数据
【发布时间】:2020-01-18 06:58:45
【问题描述】:

我正在尝试使用 Pandas 过滤数据框。所以在数据集中我有 1982-01 到 2019-11。我想过滤基于 2010 年以后的数据,即。 2010 年 1 月至 2019 年 11 月。

mydf = pd.read_csv('temperature_mean.csv')
df1 = mydf.set_index('month')
df= df1.loc['2010-01':'2019-11']

我已将索引设置为月份,并且能够获得过滤数据的平均温度。但是,我需要将索引作为折线图的 x 标签。我做不到。我尝试使用reg获取201x以后的数据,但还是报错。

如何获取折线图的月份标签,即 2010-01、2010-02......2019-10、2019-11。

谢谢!

【问题讨论】:

  • 我不确定您想要的结果是什么。如果您需要数据框 df 中的月份列,则可以在 df 上调用 reset_index()
  • 我想获取过滤后的月份数据框,例如2010-01, 2010-02, 2010-03......2019-10, 2019-11 等(只是月份和年份)
  • 你能告诉我你用什么来绘制你的折线图吗?或者在您的帖子中编辑确切的错误是什么?如果问题是您需要两列来绘制折线图,​​那么我会将您的调用更改为 df= df1.loc['2010-01':'2019-11'].reset_index() 然后绘制 df
  • 发布完整的工作示例代码。请参阅here 如何做到这一点。 (来自评论)。
  • @user12550148 我已经添加了一个答案,如果它可以解决您的问题,请告诉我。我仍然不太确定,您要解决的确切问题是什么。

标签: python pandas


【解决方案1】:
mydf = pd.read_csv('temperature_mean.csv')
    month       mean_temp
______________________
0   1982-01-01      39
1   1985-04-01      29
2   1999-03-01      19
3   2010-01-01      59
4   2013-05-01      32
5   2015-04-01      34
6   2016-11-01      59
7   2017-08-01      14
8   2017-09-01      7
df1 = mydf.set_index('month')
df= df1.loc['2010-01':'2019-11']
            mean_temp
month   
______________________
2010-01-01         59
2013-05-01         32
2015-04-01         34
2016-11-01         59
2017-08-01         14
2017-09-01         7

绘制线图(默认 x & y 参数):

df.plot.line()

如果由于某种原因,您想手动指定列名

df.reset_index().plot.line(x='month', y='mean_temp')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 1970-01-01
    相关资源
    最近更新 更多