jupyter notebook 5.2.2
Python 3.6.4
pandas 0.22.0
matplotlib 2.2.2
嗨,我正试图在一个jupyter笔记本中呈现和格式化一个直方图,这个直方图基于使用hivesql从hadoop存储中检索到的小时和分钟日志数据。
我的演讲有问题。我想能够设置轴从00:00到23:59与箱子开始在零和结束在下一分钟。我想要半小时的刻度线。我就是不知道怎么做。
下面是两年的数据,共有1440行,每分钟的事件总数。
%%sql -o jondat
select eventtime, count(1) as cnt
from logs.eventlogs
group by eventtime
数据以字符串形式存储,但以小时和分钟为单位 hh:mm
,但它似乎是自动转换为sysdate加上时间戳的笔记本,我一直在玩这种格式的数据和其他。
如果我去掉结肠
df.dtypes
eventtime int64
cnt int64
如果我用管子之类的假填料
eventtime object
cnt int64
如果我把结肠和结肠放在一起
eventtime datetime64
cnt int64
这是我目前正在使用的。
...
2018-11-22 00:27:00 32140
2018-11-22 00:28:00 32119
2018-11-22 00:29:00 31726
...
2018-11-22 23:30:00 47989
2018-11-22 23:31:00 40019
2018-11-22 23:32:00 40962
...
然后我可以绘制数据
%%local
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import datetime as dt
import mateplotlib.dates as md
xtformat = md.DateFormatter('%H:%M')
plt.rcParams['figure.figsize'] = [15,10]
df = pd.DataFrame(jondat)
x=df['eventtime']
b=144
y=df['cnt']
fig, ax=plt.subplots()
ax.xaxis_date()
ax.hist(x,b,weights=y)
ax.xaxis.set_major_formatter(xtformat)
plt.show(ax)
目前我的轴开始之前和之后的数据和箱子是集中在一分钟,这是一个更痛苦的,如果我改变了箱子的数量。我看不到哪里可以停止从字符串到datetime的自动转换,我也不确定是否需要这样才能得到我想要的结果。
这是关于格式化我的事件时间和设置轴,还是我可以简单地设置轴而不考虑数据类型。理想情况下,标记的蜱虫应该是用户友好的
这是我得到的144个箱子的图表。由于一些日志记录是手动的,1440箱图表是“毛茸茸的”,因为手动记录的趋势是四舍五入。我正在试验的一件事是不同的垃圾箱计数。
1条答案
按热度按时间sqyvllje1#
多亏了https://stackoverflow.com/users/4124317/importanceofbeingernest 他给了我足够的线索来找到答案。
这使我可以整洁地绘制图表,并使用bin设置来查看它对曲线的影响程度,既可以显示在 Jmeter 板上,也可以帮助考虑将曲线分类为时间段,以便按时间分析偶数类型。