【问题标题】:How to plot.show() datetime formatted data "mm-dd-yy hh:mm:ss" in PyPlot?如何在 PyPlot 中 plot.show() 日期时间格式日期“mm-dd-yy hh:mm:ss”?
【发布时间】:2019-06-25 01:51:53
【问题描述】:

我正在尝试使用 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]

【问题讨论】:

  • 如果您正在绘制时间序列,我建议您使用内置的绘图函数pandas,尤其是当您已经拥有DataFrame 的数据时。我想像data.plot(datetime_measured, total_demand_kw) 这样的东西应该这样做

标签: python pandas matplotlib anaconda spyder


【解决方案1】:

我认为它不工作的原因是因为你的数据完全乱序,所以 matplotlib 不知道如何处理你给它的值。

Pandas 有一些内置的绘图功能,因此您应该能够仅使用

绘制数据
data.plot()
plt.show()

情节如下所示:

但这基本上只是随机噪音。如果您查看 CSV 中的值,您会发现它们没有按时间完美排序。不过,我们可以轻松解决这个问题:

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

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

.

【讨论】:

  • 谢谢!对 pandas 库不太熟悉——如果我想保持日期时间格式并拉长 x 轴,我会使用 figsize 吗?
  • 是的,您可以使用 figsize 参数更改图形的宽度和高度。要保持日期时间格式,您可以明确告诉绘图函数要使用哪些列,就像 tmdavidson 建议的那样。
【解决方案2】:

由于您要绘制时间序列,我建议您使用内置的绘图函数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() 旋转刻度并使用tight_layout() 为它们腾出空间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-14
    • 2011-09-05
    • 2020-02-29
    • 1970-01-01
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多