在Panadas中使用不同度量(倾斜)每小时聚合数据

2024-10-02 16:33:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个从传感器数据中获取的大型数据表,如下所示:

    Code                             A1    A2  A3 ... AB40
    Time
2000-01-01 00:00:10.730              NaN   1   NaN    NaN
2010-01-01 00:00:12.730              1     2   3      NaN

有一段时间,并且没有与设备关闭时间相关的可用数据。我想每一小时汇总一次数据。 我使用了以下代码:

^{pr2}$

在给定的时间窗下,我不能用同样的方法来得到信号的偏态度量或峰度度量,得到了不同的结构:

telemetry_Skew=pd.pivot_table(Telemetry,  index='Time').resample('1H').skew().dropna(how='all')

输出

Code
A1                                 0.762252
A2                                 0.021107
A3                                 -1.035745
A4                                  0.578501

我错过了什么?在

我还想知道,是否有更优雅的方法来计算所有这些统计指标在一个参考数据(由于数据的大性质)。例如,用“遥测”来代替=pd.pivot_表(Telemetry,index='Time').resample('1H').skew().dropna(how='all')对于我能做的每个统计,std和。。。一次引用数据。在

如果有人能帮我,我很感激。在

谢谢

更新

我要查找的输出是这种格式的

                                     A1                A2      ........ AB40      
    Time                           mean std skew  mean std skew
2000-01-01 00:00:00.00             1    2    0    2    1    9
.
.
.
2010-01-01 00:01:00.00              1   2    3    1    0    1

我随机填写了平均值,标准偏差,偏差来描述


Tags: 数据方法a2timea1时间codenan
1条回答
网友
1楼 · 发布于 2024-10-02 16:33:38

你可以试试这个。 听起来简单多了,但我不确定它是否适合你的需要。在

# setting the time as index
df = df.set_index('Time')
# grouping by hour
grouped = df.groupby(df.index.hour)
# computing various stats
grouped = grouped.agg(['std', 'mean', 'skew']).transpose().unstack()
# cosmetics dropping a useless column level
grouped.columns = grouped.columns.droplevel()

grouped

#            std  mean  skew
# A1         NaN   1.0   NaN
# A2    0.707107   1.5   NaN
# A3         NaN   3.0   NaN
# AB40       NaN   NaN   NaN

替代方案

从pandas 0.20开始,您可以直接在DataFrame上使用agg来计算各种统计信息。见详图here。 你应该考虑做什么是值得的。在

^{pr2}$

相关问题 更多 >