【问题标题】:Count records between timespan of an hour in csv file计算 csv 文件中一个小时的时间跨度之间的记录
【发布时间】:2021-10-10 05:59:51
【问题描述】:

我正在尝试从 csv 文件中读取数据,记录如下:

Lane 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)

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

【问题讨论】:

    标签: python pandas csv matplotlib


    【解决方案1】:

    您可以使用 Pandas dt.hour 仅获取日期时间的小时数。然后,使用value_counts 获取同一小时内出现的记录数量。

    sample.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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 2010-09-15
      相关资源
      最近更新 更多