![](/img/trans.png)
[英]Converting TimeFormat 'DD/MM/YY HH:MM AM' from String in Python to Datetime 'DD/MM/YY HH:MM:SS'
[英]How to plot.show() datetime formatted data “mm-dd-yy hh:mm:ss” in PyPlot?
我正在尝试使用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]
我认为它不起作用的原因是因为您的数据全部乱了,所以matplotlib不知道如何处理您提供的值。
Pandas具有一些内置的绘图功能,因此您应该能够使用
data.plot()
plt.show()
情节看起来像这样:
但这基本上只是随机噪声。 如果您查看CSV中的值,则会发现它们未按时间完美排序。 不过,我们可以解决此问题而没有太多麻烦:
data.sort_values('datetime_measured', inplace=True)
data.reset_index(drop=True, inplace=True)
如果再次绘制,将得到以下结果:
。
由于您正在绘制时间序列,因此建议您使用内置在绘制函数中的pandas
,尤其是当您已经将数据作为DataFrame
。
要在xaxis上保留日期时间格式,只需告诉.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()
旋转了刻度ax.get_figure().autofmt_xdate()
,并使用tight_layout()
为它们tight_layout()
了空间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.