我试着用Pandas分析一个日志文件。我想为每秒计算“错误”、“信息”和“警告”的级别绘制三行代码。与x=日期(秒),y=计数。
导入日志文件后,我的数据框架如下所示:
df_logs

我以每秒的速度计算日期:
df_logs['date'] = df_logs['date'].dt.floor('S')然后,我按消息级别分组:
ds_grouped = df_logs.groupby(['date','level'])['level'].count()

从这里开始,我完全被困住了:
type(ds_grouped)
> pandas.core.frame.DataFrame我想正确的海上阴谋是:
sns.lineplot(x='date',
y='count',
hue='level',
data=ds_grouped)如何绘制分组数据框架?
发布于 2020-08-27 17:03:46
下面是一种创建情节的方法:
# create test data
import numpy as np
import pandas as pd
n = 10_000
np.random.seed(123)
timestamps = pd.date_range(start='2020-08-27 09:00:00',
periods=60*60*4, freq='1s')
level = ['info', 'info', 'info', 'warn','warn', 'error']
df = pd.DataFrame(
{'timestamp': np.random.choice(timestamps, n),
'level': np.random.choice(level, n),})
print(df.head())
timestamp level
0 2020-08-27 09:59:42 info
1 2020-08-27 12:14:06 warn
2 2020-08-27 09:22:26 info
3 2020-08-27 12:24:12 error
4 2020-08-27 10:26:58 info第二,每隔5分钟取样.您可以在下面的pd.Grouper中更改频率:
t = (df.assign(counter = 1)
.set_index('timestamp')
.groupby([pd.Grouper(freq='5min'), 'level']).sum()
.squeeze()
.unstack())
print(t.head())
level error info warn
timestamp
2020-08-27 09:00:00 35 123 66
2020-08-27 09:05:00 32 91 73
2020-08-27 09:10:00 41 113 64
2020-08-27 09:15:00 32 110 66
2020-08-27 09:20:00 35 107 61第三,用t.plot();创建绘图

https://stackoverflow.com/questions/63620167
复制相似问题