Python Pandas 根据时间从列中选择值

我是 Python 和 ML 的新手,我正在尝试使用 csv 文件并创建一个模型来预测主机响应的持续时间。


我所做的第一件事是使用 Pandas 解析 csv 文件中的日志,现在我有 csv 文件,其中的列按以下顺序排列并附有示例:


                               _time             host  duration

202     2020-09-26T10:56:33.630+0200           malcon       850

203     2020-09-26T10:56:33.630+0200          malcon2       878

703     2020-09-25T21:26:04.651+0200           malcon       973

我想做的第一件事是使用一些模型进行异常检测,但也许有一种更简单的方法来完成我想要的事情。我希望按时间戳获取每 3 分钟间隔高于 800 的持续时间值,并根据我一周内的数据预测这些值。


我从代码开始,该代码会发现持续时间值高于或等于 800,但不知道如何将它们与时间关联并定义间隔。


到目前为止我的代码是:


import pandas as pd


data = pd.read_csv("example_all.csv")


df = pd.DataFrame(data,columns=['_time','host','duration'])


high = (df.loc[df['duration'] >= 800])


print(high) 

任何提示和建议将不胜感激!谢谢!


更新:


我正在尝试使用滚动功能,但我认为我没有正确理解它,并且我有点迷失其中。


正如此处所建议的,我使用 to_datetime 函数转换时间戳并按时间对数据进行排序。不幸的是,我找不到一种方法来指定持续时间高于 800 的 3 分钟时间间隔。


我的代码现在看起来像这样:


import pandas as pd


data = pd.read_csv("example_all.csv")


data["_time"] = pd.to_datetime(data["_time"], utc='true')


df = pd.DataFrame(data,columns=['_time','host','duration'])


df.sort_values('_time')


high = (df.loc[df['duration'] >= 800])


print(high)

输出:


                                  _time             host  duration

202    2020-09-26 08:56:33.630000+00:00           malcon       850

203    2020-09-26 08:56:33.630000+00:00          malcon2       850

702    2020-09-25 19:26:05.573000+00:00           malcon       878

703    2020-09-25 19:26:04.651000+00:00           malcon       973

704    2020-09-25 19:26:03.667000+00:00           malcon       993

...


有只小跳蛙
浏览 40回答 1
1回答

开心每一天1111

如果您要查找任何 >= 800 的值,并且在前 3 分钟内未记录任何 < 800 的值,则此方法将起作用:import pandas as pdfrom pandas.tseries.offsets import Minutedata = pd.read_csv("example_all.csv", parse_dates=[0])data = data.sort_values('_time')def all_over_800(values):&nbsp; &nbsp; return values.map(lambda x: x >= 800).all()data['over_threshold'] = data[['_time', 'duration']].rolling(&nbsp; &nbsp; Minute(3), on='_time').apply(lambda win: all_over_800(win))['duration']请注意,center窗口选项未针对日期时间偏移窗口实现,因此检查前 3 分钟(或根据顺序后的 3 分钟)是此方法的唯一选项。如果您不介意对数据帧进行两次排序,则可以结合前面和后面的结果来检查样本的两侧。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python