【问题标题】:How to plot a dataframe using date as the x axis如何使用日期作为 x 轴绘制数据框
【发布时间】:2018-05-23 19:11:34
【问题描述】:

我有一个包含两列“日期”和“金额”的简单数据框。我想使用日期作为 x 轴来绘制金额。数据的第一行是:

22/05/2018,52068.67
21/05/2018,52159.19
15/05/2018,52744.03
08/05/2018,54666.21
08/05/2018,54677.51
01/05/2018,53890.59
30/04/2018,54812.25
27/04/2018,52258.23
26/04/2018,52351.47
23/04/2018,49777.04
23/04/2018,49952.44
23/04/2018,49992.44
05/04/2018,53238.59
03/04/2018,53631.09
03/04/2018,53839.64
28/03/2018,50836.78
26/03/2018,51206.67
26/03/2018,51372.02
14/03/2018,51110.17
12/03/2018,51411.31
06/03/2018,51169.91
05/03/2018,51374.57
27/02/2018,48728.85
27/02/2018,48730.5
16/02/2018,44988.25
14/02/2018,41948.03
12/02/2018,43776.31
12/02/2018,43800.31
12/02/2018,43840.11
05/02/2018,29358.96
26/01/2018,39491.0
24/01/2018,36470.03
23/01/2018,36562.76
23/01/2018,36616.61
22/01/2018,36582.46
22/01/2018,36665.71
22/01/2018,36743.31
17/01/2018,36965.3
16/01/2018,37044.6
09/01/2018,42083.65
08/01/2018,42183.39
05/01/2018,42285.41
03/01/2018,41537.51
03/01/2018,41579.51
02/01/2018,41945.32
27/12/2017,43003.33
27/12/2017,43217.29
18/12/2017,38208.63
15/12/2017,38315.53

但是,该图为我提供了未出现在数据中的点。例如,2018 年 5 月,30000 附近没有值。

我的代码是:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv("test.csv", header=None, names =['date', 'amount'])
df['time'] = pd.to_datetime(df['date'])
df.set_index(['time'],inplace=True)
df['amount'].plot()
plt.show()

我做错了什么?

【问题讨论】:

  • 您需要按日期对数据进行排序。
  • @A.Kot 图中的 x 轴按日期排序(请参见问题中的图),所以熊猫不是已经这样做了吗?
  • @A.Kot 如何按日期排序?
  • 很遗憾pd.to_datetime("05/02/2018") 返回Timestamp('2018-05-02 00:00:00')
  • 您也可以使用“dayfirst”选项:df['time'] = pd.to_datetime(df['date'], dayfirst=True)

标签: python pandas matplotlib


【解决方案1】:

您需要使用正确的格式将日期转换为日期时间并使用 pandas plot

df['date'] = pd.to_datetime(df['date'], format = '%d/%m/%Y')
df.plot('date', 'amount')

【讨论】:

  • 干得好。这就解释了。 29 05/02/2018 29358.96 从来不明白为什么美国决定在所有其他国家/地区都使用 dd/mm/yyyy....
  • @Bill,是的,日期格式一开始确实会让你失望,但就像编程中的任何主题一样,你的大脑会被训练去寻找那些问题区域
  • @Parfait 你甚至不会说英语! (颜色,行为,程序,...)。但我们离题了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2011-03-30
  • 1970-01-01
相关资源
最近更新 更多