数据结构:
HEIGHT Category
51 1
45 1
89 2
目标:计算几何平均值
import pandas as pd
import numpy as np
df = pd.read_csv('BaseFish',delimiter=',')
df.dropna(axis = 0)
df = df[df.HEIGHT != 0]
table = pd.pivot_table(df,values = 'HEIGHT',index = 'Category',aggfunc=(np.prod,np.count_nonzero))
table.insert(2,'GMEAN',0)
table['GMEAN']=table['prod']**(1/table['count_nonzero'])
问题:具有大量数据点的类别产生np.prod =无限。因此,最终的GMEAN也是无限的。
我的python知识非常基础,并且我使用它的唯一原因是因为数据点数超过了excels限制。
答案 0 :(得分:3)
此处无需使用数据透视表。您可以按类别分组,然后计算每个类别的几何平均值。
from scipy.stats import gmean
df.groupby('category').height.apply(gmean)
或者不导入spicy.stats
:
gmean = lambda group: group.prod()**(1/len(group))
df.groupby('category').height.apply(gmean)