【问题标题】:Calculating daily average from irregular time series using pandas使用熊猫计算不规则时间序列的每日平均值
【发布时间】:2014-02-05 10:47:03
【问题描述】:

我正在尝试从 csv 文件中获取不规则时间序列的每日平均值。

csv 文件中的数据从 2013 年 9 月 20 日 13:00 开始,一直运行到 2014 年 1 月 14 日 10:57:

Time                    Values
20/09/2013 13:00        5.133540
20/09/2013 13:01        5.144993
20/09/2013 13:02        5.158208
20/09/2013 13:03        5.170542
20/09/2013 13:04        5.167899    
20/09/2013 13:25        5.168780
20/09/2013 13:26        5.179351
...

我将它们导入:

import pandas as pd
data = pd.read_csv('<file name>', parse_dates={'Timestamp':'Time']},index_col='Timestamp')

这会导致

                           Values
Timestamp                          
2013-09-20 13:00:00        5.133540
2013-09-20 13:01:00        5.144993
2013-09-20 13:02:00        5.158208
2013-09-20 13:03:00        5.170542
2013-09-20 13:04:00        5.167899
2013-09-20 13:25:00        5.168780
2013-09-20 13:26:00        5.179351
...

然后我做

dataDailyAv = data.resample('D', how = 'mean')

这会导致

                  Values
Timestamp                 
2013-01-10        8.623744
2013-01-11             NaN
2013-01-12             NaN
2013-01-13             NaN
2013-01-14             NaN
...

换句话说,结果包含未出现在原始数据中的日期,并且对于其中一些日期(例如 2013 年 1 月 10 日),甚至出现了一个值。

对出了什么问题有任何想法吗?

谢谢。

编辑:显然日期解析出了点问题:01/10/2013 被解释为 2013 年 1 月 10 日而不是 2013 年 10 月 1 日。这可以通过编辑 csv 文件中的日期格式来解决,但是有没有办法在 read_csv 中指定日期格式?

【问题讨论】:

  • 虽然您的时间序列从 2013 年 9 月开始,但您从 2013 年 1 月开始获取数据,这看起来令人担忧。您的原始数据有问题吗?也许一些不规则的东西,你到目前为止没有观察到,因为文件太大了? resample 的文档有点薄,不幸的是 (pandas.pydata.org/pandas-docs/dev/generated/…)...

标签: python csv pandas timestamp


【解决方案1】:

您想要dayfirst=True,这是read_csv docs 中列出的众多调整之一。

【讨论】:

    猜你喜欢
    • 2020-08-09
    • 1970-01-01
    • 2019-11-24
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2022-11-14
    • 1970-01-01
    • 2021-02-27
    相关资源
    最近更新 更多