使用datetime.time对象绘制DataFrame问题

时间:2018-06-28 20:01:40

标签: python pandas matplotlib pandas-groupby

现在我已经开始学习熊猫了几天,以便可以对收到的大数据集进行一些分析。

我的目标是:

1。可视化每分钟的扫描计数。 (x =时间,y =总扫描次数)

2。使图表上的每分钟扫描可视化。 (x =时间,y =该分钟的扫描次数)

如果还不清楚,请告诉我,我将尽力重新解释。

我创建了一个由两列组成的新DataFrame:扫描类型和时间

$ df.head()

             Scan Type      Time
0  Mobile Multi Reject  13:32:00
1  Mobile Multi Reject  13:33:00
2  Mobile Multi Reject  13:33:00
3       Barcode Reject  13:34:00
4        Barcode Entry  13:34:00

数据类型如下:

$ df.dtypes

Scan Type    object
Time         object
dtype: object

下一步是将Time对象转换为datetime:

$ df['Time'] = pd.to_datetime(df['Time'], format='%H:%M:%S')

$ df.dtypes

Scan Type            object
Time         datetime64[ns]
dtype: object

然后我按照这个答案https://stackoverflow.com/a/21333244/1067213来根据计数显示数据并得到以下信息:

Scan Types based on Time

问题1:时间显示错了,我不明白它是什么时间。该图似乎是正确的,因为预期的峰值时刻和扫描流与预期的峰值时刻(通过经验)相匹配。

问题2:我无法根据时间显示总扫描量。

在此先感谢您提供更多信息,以便更加清晰明了或有任何疑问,我们将尽力澄清或提供更多信息。

编辑:这正是我用来可视化数据的代码:

data = pd.read_excel("Scanlog.xlsx")
df = pd.DataFrame(data, columns=['Scan Type', 'Time'])

df['Time'] = pd.to_datetime(df['Time'], format="%H:%M:%S", errors="coerce")
df.groupby([df['Time']]).count().plot(style=".", figsize=(15, 4))

编辑2-问题1的解决方案 经过一番研究,我发现缺少的部分是dt.time:

df['Time'] = pd.to_datetime(df['Time'], format="%H:%M:%S", errors="coerce").dt.time

现在时间显示正确了。

0 个答案:

没有答案