gpt4 book ai didi

python - 如何可视化 Pandas Dataframe 中的时间数据?

转载 作者:行者123 更新时间:2023-11-30 22:28:34 25 4
gpt4 key购买 nike

偶尔我会有时间数据,我想直观地了解事件发生的频率。所以我基本上有一个日期时间列表,我想用 来显示一个情节

  • x 轴是小时(0 - 24,因此有 24 个 bin)
  • y 轴是事件数量

所以基本上它是一个直方图,按小时分组。

我已经有了一个解决方案,但是如何确保所有 24 个垃圾箱都存在?(而且它看起来也更好)

最小示例

#!/usr/bin/env python


"""Create and visualize date with timestamps."""

# core modules
from datetime import datetime
import random

# 3rd party module
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt


def create_data(num_samples, year, month_p=None, day_p=None):
"""
Create timestamp data.

Parameters
----------
num_samples : int
year: int
month_p : int, optional (default: None)
day_p : int, optional (default: None)

Returns
-------
data : Pandas.Dataframe object
"""
data = []
for _ in range(num_samples):
if month_p is None:
month = random.randint(1, 12)
else:
month = month_p
if day_p is None:
day = random.randint(1, 28)
else:
day = day_p
hour = int(np.random.normal(loc=7) * 3) % 24
minute = random.randint(0, 59)
data.append({'date': datetime(year, month, day, hour, minute)})
data = sorted(data, key=lambda n: n['date'])
return pd.DataFrame(data)


def visualize_data(df):
"""
Plot data binned by hour.

x-axis is the hour, y-axis is the number of datapoints.

Parameters
----------
df : Pandas.Dataframe object
"""
df.groupby(df["date"].dt.hour).count().plot(kind="bar")
plt.show()


df = create_data(2000, 2017)
visualize_data(df)

如您所见,7、9 和 10 丢失了。

enter image description here

最佳答案

reindex生成包含所有值的 DataFrame,然后调用绘图方法:

res = df.groupby(df["date"].dt.hour).count().reindex(np.arange(24), fill_value=0)
res.plot(kind="bar")
plt.show()

enter image description here

关于python - 如何可视化 Pandas Dataframe 中的时间数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46593211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com