Python有任何用于日期时间序列的简单直方图的绘图服务解决方案吗? Bokeh 或其他

标签 python pandas numpy data-visualization bokeh

花了几天时间研究片段并尝试与 Bokeh 相关的食谱。在这里问这个问题并不是我所期望的。

我有一个大型 CSV 结构:

ACQ_DATE
28/01/2017 0:00
28/01/2017 1:00
28/01/2017 2:00
29/01/2017 7:00
29/01/2017 7:00
30/01/2017 3:00
30/01/2017 3:00
30/01/2017 4:00
30/01/2017 4:00
31/01/2017 0:00
31/01/2017 9:00
...

我最终想提供一个交互式直方图,但现在即使是带有可读标签的简单绘图也可以!!

将该数据帧加载为 df 后,我最终得到了从一堆其他代码片段中乱码的代码,所有这些代码片段都试图以不同的方式执行此操作:

df['ACQ_DATE'] = pd.to_datetime(gdf['ACQ_DATE'])
df['DTI'] = df['ACQ_DATE']
df.set_index('DTI', inplace=True)

data = df.groupby(df["ACQ_DATE"].dt.month).count()

hist, edges = np.histogram(data)

p = figure()
p.quad(top=hist, bottom=0, left=edges[:-1], right=edges[1:], line_color="white")

main_row = row(p)
layout = column(main_row)

curdoc().add_root(layout)
curdoc().title = "Fire Points"

因此,在本示例中,它尝试将数据按月份分组。

它给了我一个图,但用数字作为 x 轴标签而不是日期/月份。

我对 Bokeh 文档非常失望,我发现它脱节,整个 Bokeh 体验出乎意料地糟糕。今天早上尝试全息 View 时发现完全相同的体验,这让我很困惑,我期待这就是它的构建目的......我期待这样一个简单的系列能够将它扔到一个直方图对象上,这只会做一些事情看在上帝的份上,计数和简单的标签,但没有。真的令人难以置信,每一篇涉及这个问题的帖子似乎都有一个截然不同的解决方案......

所以,我的问题是关于 Bokeh 服务器的简单解决方案,但我很高兴使用另一个库查看任何清晰简单的解决方案(呜呜呜,这只是一个 ts 直方图!)。

我很惊讶我不能做 (somelibplease).histogram(df, 'ACQ_DATE) 或类似的事情 - 我不需要大量的绘图选项。不幸的是,“holoview”没有通过那里。

显然,我是Python绘图的新手,我将来不会做太多事情,也不需要离谱的功能/选项,所以花了几天时间(我认为实际上需要几个月)来学习一个lib来实现这看起来一点也不Pythonic。

去酒吧吧,不习惯被Python挫败!!非常感谢所有帮助。

感谢和干杯

最佳答案

既然您在 python 中提到了“任何”库,那么这里有一个使用 pandas 的 matplotlib 包装器的解决方案。

import pandas as pd

#Copying your data 
a = pd.read_clipboard(header = None, sep="s+")
a.columns = ['ACQ_DATE']
a['ACQ_DATE'] = pd.to_datetime(a['ACQ_DATE'])

对框架进行一些增强,以便我可以获取数据来绘制直方图

date_groups = a.groupby(a['ACQ_DATE'].dt.date).size() 

date_groups
Out[44]: 
ACQ_DATE
2017-01-28    3
2017-01-29    2
2017-01-30    4
2017-01-31    2
dtype: int64

最后,使用 pandas plot.bar() 函数,

date_groups.plot.bar(width=1.0) # width = 1, to make this more like histogram

enter image description here

<小时/>

注意:我同意 bokeh 文档还有很多需要改进的地方。

<小时/>

关于Python有任何用于日期时间序列的简单直方图的绘图服务解决方案吗? Bokeh 或其他,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45830344/

相关文章:

python - 如何添加复制某些列的新行,但在其他列中分配新值

python - 在 pandas dataframe 中随机引入 NaN 值

python - 在没有 fillna 或 Interpolate 的情况下从数据框中删除 NaN 值

python - 如何使用索引替换列值的前两个字母

python - 加速 numpy 嵌套循环

python - Django/Python - 检查日期是否在本周

Python pandas CustomBusinessDay

python - 可选忽略字符串中的空格(来自字符集)正则表达式 Python

python - 如何使用 Python 在任意平面内绘制矢量场?

python - 有没有更快的方法在 numpy 中进行这种索引?