Python 如何打印.show()日期时间格式的数据;年月日hh:mm:ss“;在PyPlot中?

Python 如何打印.show()日期时间格式的数据;年月日hh:mm:ss“;在PyPlot中?,python,pandas,matplotlib,anaconda,spyder,Python,Pandas,Matplotlib,Anaconda,Spyder,我正试图使用Anaconda的Spyder分布图从data.boston.gov()绘制一个数据集。原始数据集包含超过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.s

我正试图使用Anaconda的Spyder分布图从data.boston.gov()绘制一个数据集。原始数据集包含超过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
内置的绘图功能,尤其是当您已经将数据作为
数据框时

要在xaxis上保留datetime格式,只需告诉
.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()
请注意,我用旋转记号,并使用
tight\u layout()
为它们留出空间


如果您正在绘制时间序列,我建议您使用
pandas
内置的绘图功能,尤其是当您已经将数据作为
数据帧时。我想像
data.plot(datetime\u measured,total\u demand\u kw)
这样的东西应该能做到,谢谢!不太熟悉pandas库——如果我想保持datetime格式并拉长x轴,我会使用figsize吗?是的,您可以使用figsize参数更改图形的宽度和高度。为了保持datetime格式,您可以显式地告诉plot函数要使用哪些列,就像tmdavidson建议的那样。