如何在PyPlot中plot.show()日期时间格式的数据“ mm-dd-yy hh:mm:ss”?

时间:2019-01-31 15:00:04

标签: python pandas matplotlib anaconda spyder

我正在尝试使用Anaconda的Spyder分布从data.boston.gov(https://data.boston.gov/dataset/central-library-electricity-usage)绘制数据集。原始数据集包含2x10 ^ 5个以上的实例,因此我仅限于2018年。该图将不会显示。

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('bpl_energy_2018.csv')

plt.plot(data.datetime_measured,data.total_demand_kw)
plt.show()

['datetime_measured','total_demand_kw']

- 0 12-31-18 23:55:00 561
- 1 12-31-18 23:50:00 568
- 2 12-31-18 23:45:00 576
...
- 53690  01-01-18 03:40:00 770
- 53691  01-01-18 03:30:00 813
- 53692  01-01-18 02:55:00 777

[53693 rows x 2 columns]

2 个答案:

答案 0 :(得分:1)

我觉得它不工作的原因是因为你的数据是全乱套了,所以matplotlib不知道做什么用,你给它的值做。

大熊猫有一些内置的绘图功能,所以你应该能够只是绘制你的数据

data.plot()
plt.show()

情节如下:

data_plotted_through_2018

但这基本上只是随机噪声。如果您查看CSV中的值,则会发现它们未按时间完美排序。不过,我们可以解决此问题而没有太多麻烦:

data.sort_values('datetime_measured', inplace=True)
data.reset_index(drop=True, inplace=True)

如果再次绘制它,我们会得到:

this plot

答案 1 :(得分:0)

由于您正在绘制时间序列,因此建议您使用内置的pandas绘图功能,尤其是当您已经将数据作为DataFrame时。

要将日期时间格式保留在x轴上,只需告诉.plot()函数使用哪些列。例如:

import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('bpl_energy_2018.csv')
data.sort_values('datetime_measured', inplace=True)

data.plot('datetime_measured', 'total_demand_kw')

# Rotate and align xtick labels
ax.get_figure().autofmt_xdate()

# make room for tick labels
plt.tight_layout()

plt.show()

请注意,我使用ax.get_figure().autofmt_xdate()旋转了刻度线,并使用tight_layout()为刻度线留了空间。

enter image description here