![](/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.