gpt4 book ai didi

python - pandas 绘制聚合时间戳索引

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

我有一个想要绘制的数据时间序列。在晚上,当我不收集数据时,晚上 9 点和早上 7 点之间有一个间隙,这在图表上看起来有点难看,并且难以阅读。

这里有一个小例子来理解这个问题:

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


df2 = pd.DataFrame({ 'A' : pd.Series(np.random.randn(4),index=list(range(4)),dtype='float32'),
'B' : pd.date_range('1/1/2000', periods=4)})




print(df2.to_string())
df2.ix[3,'B'] = pd.to_datetime('2005-01-02')

print(df2.to_string())

df2.index = df2.B
fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(df2.index, df2["A"])
plt.show()

从 1/1/2000 到 1/3/2000 的图表几乎不可读,因为该图已按比例缩放以显示 2005 年的数据。有没有办法消除 1/3 中的索引(?)/2000 至 2005 年 1 月 3 日?

谢谢和欢呼,E.

最佳答案

IIUC,让我创建一个样本集和糟糕的结果。

np.random.seed(0)
df = pd.DataFrame(np.random.random(500), index=pd.date_range('2018-11-25 07:00:00', periods=500, freq='10T'))
df2 = df[(df.index.hour >= 7) & (df.index.hour < 21)]
df2.plot()

输出:

enter image description here

但是,我们可以像这样消除那些平坦的部分:

np.random.seed(0)
df = pd.DataFrame(np.random.random(500), index=pd.date_range('2018-11-25 07:00:00', periods=500, freq='10T'))

df2 = df[(df.index.hour >= 7) & (df.index.hour < 21)]

df2.index = df2.index.strftime('%Y-%m-%d')

fig, ax = plt.subplots()
_ = df2.plot(ax=ax)
skip = df2.shape[0]//7 + 1
label = [i for i in df2.index[::skip]]
_ = plt.xticks(np.arange(0,df2.shape[0],skip),label,rotation=45)

输出:

enter image description here

关于python - pandas 绘制聚合时间戳索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53101884/

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