【问题标题】:Using Pandas to get 1 Minute Average of TmeSeries CSV Data使用 Pandas 获取时间序列 CSV 数据的 1 分钟平均值
【发布时间】:2019-04-13 11:16:12
【问题描述】:

我有以下 CSV 文件

日期时间,172.25.150.88,172.25.150.12,172.25.150.105,172.25.150.43,172.25.150.47,172.25.150.95

2018-11-0202:49:42,54457,51776,43164,52074,48227,52165

2018-11-0202:49:43,48728,48516,47605,48202,48077,48304

2018-11-0202:49:44,47879,48699,48243,48153,48483,48364

我使用 pandas 导入文件并设置日期时间索引:

data = pd.read_csv("throughput_88_12_105_43_47_95.csv")
data['datetime'] = pd.to_datetime(data['DateTIme'],format='%Y-%m-%d%H:%M:%S')

现在数据数据框如下所示:

日期时间 172.25.150.88 172.25.150.12 172.25.150.105 172.25.150.43 172.25.150.47 172.25.150.95 日期时间 0 2018-11-0202:49:42 54457 51776 43164 52074 48227 52165 2018-11-02 02:49:42

1 2018-11-0202:49:43 48728 48516 47605 48202 48077 48304 2018-11-02 02:49:43

2 2018-11-0202:49:44 47879 48699 48243 48153 48483 48364 2018-11-02 02:49:44

3 2018-11-0202:49:45 48009 48751 47813 48359 48581 48793 2018-11-02 02:49:45

4 2018-11-0202:49:46 48905 48650 47578 48285 48055 48761 2018-11-02 02:49:46

要对所有列进行 1 分钟平均:

 df = pd.DataFrame(data = data, columns = ['172.25.150.88','172.25.150.12','172.25.150.105','172.25.150.43','172.25.150.47','172.25.150.95'],index=data['datetime'])


 df.resample('1Min').mean()

这给了我:

172.25.150.88 172.25.150.12 172.25.150.105 172.25.150.43 172.25.150.47 172.25.150.95 日期时间
2018-11-02 02:49:00 NaN NaN NaN NaN NaN NaN

2018-11-02 02:50:00 NaN NaN NaN NaN NaN NaN

2018-11-02 02:51:00 NaN NaN NaN NaN NaN NaN

如何获得 1 分钟平均值?我得到的只是南。

【问题讨论】:

  • 检查你的数据类型,也许他们没有正确读入数字。 print df.dtypes 应该为数字列提供 float64int64。其他任何内容都表明您的数据集中存在问题
  • >>> df.dtypes 172.25.150.88 float64 172.25.150.12 float64 172.25.150.105 float64 172.25.150.43 float64 172.25.150.47 float64 172.25.150.95 float64 对象
  • 鉴于您正在使用 datetimeindex,您需要使用 df.index=pd.to_datetime(df.index,format='%Y-%m-%d%H:%M:% S')
  • 是不是 >>> df.index = pd.to_datetime(df.index,format='%Y-%m-%d%H:%M:%S') 但是 >>> df.resample('1Min').mean() 仍然给我所有的 NaN

标签: python pandas


【解决方案1】:

看这个:

In [1702]: df
Out[1702]: 
             DateTIme  172.25.150.88  172.25.150.12  172.25.150.105  172.25.150.43  172.25.150.47  172.25.150.95
0  2018-11-0202:49:42          54457          51776           43164          52074          48227          52165
1  2018-11-0202:49:43          48728          48516           47605          48202          48077          48304
2  2018-11-0202:49:44          47879          48699           48243          48153          48483          48364

In [1703]: df.DateTIme=pd.to_datetime(df.DateTIme,format='%Y-%m-%d%H:%M:%S') 
In [1707]: df.resample(rule='1Min', on='DateTIme').mean()
Out[1707]: 
                     172.25.150.88  172.25.150.12  172.25.150.105  172.25.150.43  172.25.150.47  172.25.150.95
DateTIme                                                                                                      
2018-11-02 02:49:00   50354.666667   49663.666667    46337.333333   49476.333333   48262.333333        49611.0

如果这有帮助,请告诉我。

【讨论】:

  • 我已经更新了我的答案。我完全使用了您在帖子中提供的数据框。它对我有用。请检查。
猜你喜欢
  • 1970-01-01
  • 2018-06-02
  • 1970-01-01
  • 2022-12-17
  • 2021-12-10
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多