我正在尝试使用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]
答案 0 :(得分:1)
我觉得它不工作的原因是因为你的数据是全乱套了,所以matplotlib不知道做什么用,你给它的值做。
大熊猫有一些内置的绘图功能,所以你应该能够只是绘制你的数据
data.plot()
plt.show()
情节如下:
但这基本上只是随机噪声。如果您查看CSV中的值,则会发现它们未按时间完美排序。不过,我们可以解决此问题而没有太多麻烦:
data.sort_values('datetime_measured', inplace=True)
data.reset_index(drop=True, inplace=True)
如果再次绘制它,我们会得到:
。
答案 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()
为刻度线留了空间。