【发布时间】:2017-10-14 06:31:23
【问题描述】:
我用
df = df.pivot_table(index='ID', columns='domain', values='active_seconds', aggfunc=np.var)
返回方差
但是我需要在函数中添加参数ddof=1,因为结果是错误的。
我该怎么做?
【问题讨论】:
标签: python pandas numpy variance
我用
df = df.pivot_table(index='ID', columns='domain', values='active_seconds', aggfunc=np.var)
返回方差
但是我需要在函数中添加参数ddof=1,因为结果是错误的。
我该怎么做?
【问题讨论】:
标签: python pandas numpy variance
使用lambda:
aggfunc=lambda x: np.var(x, ddof=1)
或者使用GroupBy.var 和默认ddof=1:
aggfunc='var'
示例:
np.random.seed(10)
df = pd.DataFrame({'ID':np.random.choice(list('def'),size=30),
'domain':np.random.choice(list('abc'),size=30),
'active_seconds':np.random.randint(10,size=30)})
print (df.head())
ID active_seconds domain
0 e 1 c
1 e 7 b
2 d 1 b
3 d 4 b
4 e 0 b
df1 = df.pivot_table(index='ID',
columns='domain',
values='active_seconds',
aggfunc=lambda x: np.var(x, ddof=1))
print (df1)
domain a b c
ID
d 8.333333 8.333333 10.000000
e 8.000000 11.300000 16.333333
f 19.000000 8.000000 24.500000
df1 = df.pivot_table(index='ID', columns='domain', values='active_seconds', aggfunc='var')
print (df1)
domain a b c
ID
d 8.333333 8.333333 10.000000
e 8.000000 11.300000 16.333333
f 19.000000 8.000000 24.500000
【讨论】: