python - 计算 csv 文件中一个小时的时间跨度之间的记录
问题描述
我正在尝试从具有如下记录的 csv 文件中读取数据:
车道 4 Op2, 2259,13:03:50, 100%, 209, 0:02:26
我需要计算在同一小时内出现的记录数量。这是我能达到的最远距离。
data = pd.read_csv('2021-07-30.csv', parse_dates=['hour'], infer_datetime_format=True)
datafiltr = data[data.lane=="Lane 4 Op2"]
datafiltr['hour'] = pd.to_datetime(datafiltr['hour'], infer_datetime_format=True)
df = datafiltr.resample('H', on='hour').agg({'detal':'sum'})
amount = (df.iloc[0][0]/datafiltr.iloc[1][1])
int_array = amount.astype(int)
但我对结果不太满意,我很想收到任何提示。提前致谢。
解决方案
您可以使用 Pandas dt.hour仅获取日期时间的小时数。然后,用于value_counts
在同一小时内出现的记录数量。
样本.csv
0 1 2 3 4 5
0 Lane4Op2 2259 13:03:50 100% 209 0:02:26
1 Lane4Op2 2596 19:35:00 1% 209 0:02:26
2 Lane4Op2 2325 15:50:00 72% 209 0:02:26
3 Lane4Op2 1516 20:02:00 63% 209 0:02:26
4 Lane4Op2 2391 12:35:00 78% 209 0:02:26
.. ... ... ... ... ... ...
96 Lane4Op2 1924 07:52:00 70% 209 0:02:26
97 Lane4Op2 2223 00:22:00 15% 209 0:02:26
98 Lane4Op2 1621 23:07:00 86% 209 0:02:26
99 Lane4Op2 2386 01:02:00 82% 209 0:02:26
100 Lane4Op2 2437 18:05:00 63% 209 0:02:26
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('sample.csv', header=None)
print(df)
datetime = pd.to_datetime('01/01/2021'+' '+df[2])
dt_count = datetime.dt.hour.value_counts()
dt_count = dt_count.sort_index()
ax = dt_count.plot.bar()
plt.xticks(dt_count.index.values)
plt.show()
推荐阅读
- arrays - 当传递给 Fortran 中的子例程时,数组是否被视为指针?
- php - 查找 PHP 中活着的人数最多的年份
- java - 如何将域类从 jar 导入 Micronaut 项目?
- gremlin - 将 valueMap 与 match() 一起使用
- python - 为没有主目录的用户安装 Anaconda
- azure - Azure IoT 中心消息路由
- android - 从 Kotlin 协程访问类变量
- regex - 如何使用 ansible 注释掉特定行
- c++ - 使用了未初始化的局部变量“totalPrice”
- android - 使用 onClickListener 切换片段