微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Pandas DataFrame中的PDF上直接计算统计指标?

如何解决如何在Pandas DataFrame中的PDF上直接计算统计指标?

说我在Pandas DataFrame中已经有一个PDF(概率密度函数)。

import pandas as pd
import numpy as np
from scipy import stats

df = pd.DataFrame([1,2,3,4,5,6,2],index=np.linspace(21,30,10),columns=['days'])
df.index.names=['temperature']
print(df)
             days
temperature      
21.0            1
22.0            2
23.0            3
24.0            4
25.0            5
26.0            6
27.0            5
28.0            4
29.0            3
30.0            2

如果我想计算偏度等指标,则必须将PDF转换回原始数据,如下所示:

temp_history = []
for i in df.iterrows():
    temp_history += i[1][0] * [i[0]]

print(temp_history)
[21.0,22.0,23.0,24.0,25.0,26.0,27.0,28.0,29.0,30.0,30.0]

skew = stats.skew(temp_history)

无论如何,我无需创建temp_history就可以计算指标吗?谢谢!

编辑:我想避免以任何形式创建原始数据的原因是,我不想仅在days列中的数字变大时就失去大量内存。

解决方法

使用-

df.reindex(df.index.repeat(df['days'])).reset_index()['temperature'].skew()

OR

坚持最初的实现-

stats.skew(df.reindex(df.index.repeat(df['days'])).reset_index()['temperature'])

如果您想知道为什么输出不匹配,请讨论here

要同时匹配两者,请在bias=False中设置stats.skew()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。