【问题标题】:Plotting distribution of time data in Python using Pandas使用 Pandas 在 Python 中绘制时间数据的分布
【发布时间】:2019-12-22 21:16:04
【问题描述】:

我有一个熊猫数据框,其中包含一些时间数据,看起来像

0    08:00 AM
1    08:15 AM
2    08:30 AM
3     7:45 AM
4     7:30 AM

总共有 660 行这样的行(数据类型 - 字符串)。我想绘制此列的分布(直方图)。我怎样才能做到这一点?还有一些行只是一个空字符串(缺少数据),所以我还必须在绘图时处理它。处理这个问题的最佳方法是什么?

我曾尝试使用pandas.to_datetime() 将字符串转换为时间戳,但在那之后我仍然坚持如何绘制这些时间戳和缺失数据的分布。

【问题讨论】:

  • 您希望它们如何分组?您的分发时间间隔是多少?
  • 整个数据(全部 660 行)是否来自同一天?
  • 日期无关紧要,它是几个不同机构的开始时间的数据。我想按小时频率绘制它,例如上午 7 点到 8 点、上午 8 点到 9 点、上午 9 点到 10 点等等

标签: python pandas datetime histogram


【解决方案1】:

假设您有您正在谈论的数据框,并且您可以转换为 pandas 日期时间对象:

import pandas as pd
df = pd.DataFrame(['8:00 AM', '8:15 AM', '08:30 AM', '', '7:45 AM','7:45 AM'], columns = ['time'])

df.time = pd.to_datetime(df.time)

df 看起来像这样:

time
0   2019-08-16 08:00:00
1   2019-08-16 08:15:00
2   2019-08-16 08:30:00
3   NaT
4   2019-08-16 07:45:00
5   2019-08-16 07:45:00

我会按小时和分钟分组。

df.groupby([df['time'].dt.hour, df['time'].dt.minute]).count().plot(kind="bar")

results

【讨论】:

    猜你喜欢
    • 2014-10-11
    • 2017-11-02
    • 2020-03-30
    • 2023-02-15
    • 1970-01-01
    • 2021-09-04
    • 2015-11-15
    • 2020-06-20
    • 1970-01-01
    相关资源
    最近更新 更多