Python 如何使用pandas绘制时间序列数据的直方图?

Python 如何使用pandas绘制时间序列数据的直方图?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有一个时间序列数据,我在上面使用pygal进行一些绘图。下面是数据的样子 [(datetime.datetime(2019, 3, 3, 0, 20, 22, 195908, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 25, 807185, tzinfo=psycopg2.tz.FixedOffsetTimezone(o

我有一个时间序列数据,我在上面使用
pygal
进行一些绘图。下面是数据的样子

[(datetime.datetime(2019, 3, 3, 0, 20, 22, 195908, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 25, 807185, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 29, 566157, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 33, 57685, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 32, 3897, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 35, 739188, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 39, 592752, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 43, 242095, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 52, 37, 311601, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 11.0), (datetime.datetime(2019, 3, 3, 0, 52, 40, 976424, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 11.0)]
现在我可以使用
pygal
进行常规的
条形图
,但现在我需要绘制
直方图
。我发现
pandas
有一种方法可以找到
直方图
,并使用
matplotlib
绘制它

这就是我所做的

import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
import datetime
import  psycopg2

data = [(datetime.datetime(2019, 3, 3, 0, 20, 22, 195908, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 25, 807185, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 29, 566157, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 20, 33, 57685, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 32, 3897, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 35, 739188, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 39, 592752, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 54, 43, 242095, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 12.0), (datetime.datetime(2019, 3, 3, 0, 52, 37, 311601, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 11.0), (datetime.datetime(2019, 3, 3, 0, 52, 40, 976424, tzinfo=psycopg2.tz.FixedOffsetTimezone(offset=330, name=None)), 11.0)]

df_hist = pd.DataFrame(np.array(data)).hist(bins=5)  // I divide the data into 5 buckets
plt.savefig('hist.svg')
但是我遇到了以下错误

Traceback (most recent call last):
  File "/home/souvik/Music/Test331.py", line 120, in <module>
    df_hist = pd.DataFrame(np.array(data)).hist(bins=5)
  File "/home/souvik/django_test/webdev/lib/python3.5/site-packages/pandas/plotting/_core.py", line 2408, in hist_frame
    layout=layout)
  File "/home/souvik/django_test/webdev/lib/python3.5/site-packages/pandas/plotting/_tools.py", line 238, in _subplots
    ax0 = fig.add_subplot(nrows, ncols, 1, **subplot_kw)
  File "/home/souvik/django_test/webdev/lib/python3.5/site-packages/matplotlib/figure.py", line 1367, in add_subplot
    a = subplot_class_factory(projection_class)(self, *args, **kwargs)
  File "/home/souvik/django_test/webdev/lib/python3.5/site-packages/matplotlib/axes/_subplots.py", line 60, in __init__
    ).format(maxn=rows*cols, num=num))
ValueError: num must be 1 <= num <= 0, not 1

现在在x轴上,我想要时间序列范围,所以我知道在特定时间间隔下数据的频率。但是当我包含原始数据时,我得到了上面提到的错误

如何获取时间序列数据的
直方图
?另外,我是否可以使用
pygal
来代替依赖
matplotlib

注意:上图是一个更大的数据。我已经减少了数据量,以便在这里发布问题

data = [x[1] for x in data]
df_hist = pd.DataFrame(np.array(data)).hist(bins=5)
plt.savefig('hist.svg')