首页 > 解决方案 > 计算 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)

但我对结果不太满意,我很想收到任何提示。提前致谢。

标签: pythonpandascsvmatplotlib

解决方案


您可以使用 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()

时间跨度


推荐阅读