【发布时间】:2016-09-18 14:52:49
【问题描述】:
我有一个考试成绩频率表:
score count
----- -----
77 1105
78 940
79 1222
80 4339
etc
我想显示频率表汇总的样本的基本统计数据和箱线图。 (比如上面例子的平均值是79.16,中位数是80。)
有没有办法在 Pandas 中做到这一点?我见过的所有例子都假设一个单独的案例表。
我想我可以生成一个个人分数列表,像这样 --
In [2]: s = pd.Series([77] * 1105 + [78] * 940 + [79] * 1222 + [80] * 4339)
In [3]: s.describe()
Out[3]:
count 7606.000000
mean 79.156324
std 1.118439
min 77.000000
25% 78.000000
50% 80.000000
75% 80.000000
max 80.000000
dtype: float64
-- 但我希望避免这种情况;真实非玩具数据集中的总频率高达数十亿。
任何帮助表示赞赏。
(我认为这是与Using describe() with weighted data 不同的问题,它是关于将权重应用于个别案例。)
【问题讨论】:
-
我认为它是与我链接到的问题相同:您想要
score列的加权描述性统计数据,权重由count列给出。唉,我不认为这个问题有一个令人满意的答案。 -
我同意他们问的问题非常相似,但我不知道 SAS proc 是如何工作的,所以我将在此处发布我的答案,因为它可能无法满足这些要求。