jupyter notebook 5.2.2
Python 3.6.4
pandas 0.22.0
matplotlib 2.2.2
嗨,我正尝试使用Hive SQL基于从hadoop存储中检索的小时和分钟日志数据在jupyter笔记本中呈现和格式化直方图。
我在演示中遇到问题。我希望能够将轴从00:00设置为23:59,并将垃圾箱从零开始到下一分钟结束。我想要半小时刻度。我只是看不到该怎么做。
以下内容将回溯2年的数据,其中包含1440行以及每分钟的事件总数。
%%sql -o jondat
select eventtime, count(1) as cnt
from logs.eventlogs
group by eventtime
数据以字符串形式存储,但是是小时和分钟hh:mm
,但是笔记本似乎正在将其自动转换为sysdate和timestamp,我一直在使用这种格式的数据以及其他格式。
如果我剔除冒号
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)
当前,我的轴在数据前后都已经很好地启动了,并且垃圾箱在一分钟内居中,如果更改垃圾箱的数量,这会更痛苦。我看不到在哪里停止从字符串到日期时间的自动转换,而且我不确定是否需要这样做才能得到想要的结果。
这与格式化事件时间和设置轴有关,还是可以不考虑数据类型而轻松地设置轴。理想情况下,标记的刻度线将是用户友好的
答案 0 :(得分:0)
感谢https://stackoverflow.com/users/4124317/importanceofbeingernest为我提供了足够的线索来找到答案。
%%local
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import datetime as dt
import mateplotlib.dates as md
plt.rcParams['figure.figsize'] = [15,10]
df = pd.DataFrame(jondat)
xtformat = md.DateFormatter('%H:%M')
xtinter = md.MinuteLocator(byminute=[0], interval=1)
xtmin = md.MinuteLocator(byminute=[30], interval=1)
x=df['eventtime']
b=144
y=df[cnt']
fig, ax=plt.subplots()
ld=min(df['eventtime'])
hd=max(df['eventtime'])
ax.xaxis_date()
ax.hist(x,b,weights=y)
ax.xaxis.set_major_formatter(xtformat)
ax.xaxis.set_major_locator(xtinter)
ax.xaxis.set_minor_locator(stmin)
ax.set_xlim([ld,hd])
plt.show(ax);
这使我可以整理图表并使用bin设置,以查看它对曲线的影响程度,既可以显示在仪表板上,也可以帮助您考虑将其归类为时间段,以便按时间分析偶数类型。