python - 在数据框中搜索模式
问题描述
我有一个巨大的 csv 文件,其中包含有关正在驾驶的自行车的数据。所以我得到了一个以秒为单位的时间列和一个速度列。我想检查数据中的特定模式,以总结路上发生的事情。
例如驶向红绿灯:
到目前为止我得到了这个:
import pandas as pd
df = pd.read_csv('.csv', usecols = ['time', 'speed'])
df['accelerating'] = df['speed'].diff() > 0
我想要这样的东西:
df_traffic_light = df.loc[df['speed'] < 15 & accelerating == False #driving torwards the traffic light;
& df.loc[df['speed']< 1 #getting really slow or Standing still;
& df.loc[df['speed'] > 5 & accelerating == True #for light switched to green and starting again
预期输出:
time speed acceleration
0 5.000 14.0 false
1 7.056 12.0 false
2 10.097 8.0 false
3 12.131 1.0 false
4 14.165 0.0 false
5 16.201 0.0 false
6 18.236 2.0 true
7 20.267 4.0 true
我用 dataframe.rolling 进行了尝试,但效果不佳。任何想法我如何解决这个问题?
解决方案
这个答案可能并不令人满意,但正如你描述的问题,它是不可能解决的。只要您不知道某个(子)序列在现实中代表什么,就不可能将数据分割成带标签的类别,例如“驶向红绿灯”等。
除了手动调整逻辑函数、可视化数据并对其进行推理之外,我还看到了机器学习领域的 2 个选项:
监督学习:您至少需要一些标记数据,算法可以从中学习某些类别的特征。即,您将需要一些您知道它们代表什么的事件,或者通过实验(让 10 个不同的人每个生成 10 倍您想要识别的事件/类别)或通过手动评估数据的(子)序列,可视化和根据您的专业知识来判断它们。该
sklearn
包包含一些或多或少简单的方法来预测仍然未知的数据的类别,即决策树或支持向量机无监督学习:您只需搜索特征子序列,而无需先验地知道它们代表什么。
sklearn.cluster
有一些算法。然后,还取决于您和您的专业知识来查看集群的特征并给它们贴标签。
这两种方法都需要一些努力才能进入它。但我希望它为您指明正确的方向。如果在您的研究过程中出现了您无法找到答案的更具体的问题,请随时提出。
推荐阅读
- css - 我的布局有问题
- r - 增加图例键之间的空间并在 ggplot 中对齐它们
- go - 在函数内部定义函数
- python - 如何在python的新列中将id拆分为多个值
- javascript - 有没有办法在 es6 过滤器或 lodash 中获得相同的结果?
- tensorflow - 如何在keras中查看层输出的张量值
- kubernetes - 如何使用 Kubernetes Go 客户端调用 Pod 代理动词?
- c# - 尝试设置 GridViewColumn 宽度时出现异常
- delphi - 如何摆脱 Delphi MySQL 查询中的破折号错误?
- python - 向量化两个数字之间的查找