【发布时间】:2019-02-02 23:58:10
【问题描述】:
我有以下数据:
[4.1, 4.1, 4.1, 4.2, 4.3, 4.3, 4.4, 4.5, 4.6, 4.6, 4.8, 4.9, 5.1, 5.1, 5.2, 5.2, 5.3, 5.3, 5.3, 5.4, 5.4, 5.5, 5.6, 5.6, 5.6, 5.7, 5.8, 5.9, 6.2, 6.2, 6.2, 6.3, 6.4, 6.4, 6.5, 6.6, 6.7, 6.7, 6.8, 6.8]
我需要根据上面的数据来构建它的计数/频率表:
4.1 - 4.5: 8
4.6 - 5.0: 4
5.1 - 5.5: 10
5.6 - 6.0: 6
6.1 - 6.5: 7
6.6 - 7.0: 5
我能得到的最接近的是以下结果:
counts freqs
categories
[4.1, 4.6) 8 0.200
[4.6, 5.1) 4 0.100
[5.1, 5.6) 10 0.250
[5.6, 6.1) 6 0.150
[6.1, 6.6) 7 0.175
[6.6, 7.1) 5 0.125
通过这段代码:
sr = [4.1, 4.1, 4.1, 4.2, 4.3, 4.3, 4.4, 4.5, 4.6, 4.6, 4.8, 4.9, 5.1, 5.1, 5.2, 5.2, 5.3, 5.3, 5.3, 5.4, 5.4, 5.5, 5.6, 5.6, 5.6, 5.7, 5.8, 5.9, 6.2, 6.2, 6.2, 6.3, 6.4, 6.4, 6.5, 6.6, 6.7, 6.7, 6.8, 6.8]
ncut = pd.cut(sr, [4.1, 4.6, 5.1, 5.6, 6.1, 6.6, 7.1],right=False)
srpd = pd.DataFrame(ncut.describe())
我需要创建一个新列,它是“类别”值的中位数(例如,对于“[4.1, 4.6)”,它包含从 4.1 到 4.5 的数据的计数/频率(不包括 4.6)) , 所以我需要得到 (4.1 + 4.5) / 2,等于 4.3。
这是我的问题:
1) 如何访问“类别”索引下的值以将其用于上述计算?
2)有没有办法以这种方式反映范围:4.1 - 4.5、4.6到5.0等......?
3) 有没有更简单的方法来计算像这样的分组数据的平均值、中位数、众数等?还是我必须在 Python 中为这些创建自己的函数?
谢谢
【问题讨论】:
-
描述性统计教程我也遇到这种问题
标签: python pandas numpy statistics