获取数据透视表中列部分的平均值

我有以下数据透视表。

http://img2.mukewang.com/6263bf180001688a02370266.jpg

http://img4.mukewang.com/6263bf1e000150b502460292.jpg

我通过这样做创建:

table = pd.pivot_table(df,index=['day_of_week','date'],values=['dt_hours'],aggfunc=np.sum)

问题是我不知道如何获得dt_hour所有日子的平均值。

因此,我成功地采用了以下平均值:[0.564167, 2.835278, ... , 1.119444, 8.287778]

我这样做是:table['dt_hours']['Friday'].mean()

但我需要一个列表中所有天的平均值。

所以: Friday average = 15.69706 Tuesday average = 7.56426 Wednesday average = 6.84077 etc.

我想将其放入数据框或字典中,因为我想对此进行绘图。

有任何想法吗?!


斯蒂芬大帝
浏览 160回答 1
1回答

皈依舞

检查以下是否适合您。我假设了一个带有虚拟数据的简化数据框,该数据框在以下答案中采用您的格式。dow这里对应day_of_week和hours对应dt_hours于你的情况。日期由第一个字母表示。即 f -> 星期五。我们首先重置索引以使用布尔索引。然后找到hours每一天的值并循环遍历结果系列以找到平均值。import pandas as pdimport numpy as npdf = pd.DataFrame({"dow": ["f", "f", "t", "t", "w","w"], "date": ["3/7","2/3","6/7","5/6","1/2","4/2"],"hours": ["21","34","56","78","32","88"]})table = pd.pivot_table(df,index=['dow','date'],values=['hours'],aggfunc=np.sum)t=table.reset_index()avg_arr = []print set(t.dow)for day in set(t.dow):    vals=t[(t.dow==day)]['hours']    total = 0    c=0    for i,r in vals.iteritems():        c+=1        total+=float(r)    avg = total/(c)    avg_arr.append(avg)print avg_arr 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python