相关疑难解决方法(0)

NumPy中的加权标准差

numpy.average()有一个权重选项,但numpy.std()没有.有没有人有解决方法的建议?

python numpy weighted standard-deviation statsmodels

64
推荐指数
4
解决办法
4万
查看次数

在Python/Pandas中创建部分SAS PROC SUMMARY替换

我们正在努力摆脱SAS和Python/Pandas.但是,我们遇到麻烦的一件事是创建具有SAS例程灵活性的PROC SUMMARY(AKA PROC MEANS)替代品.对于非SAS用户:PROC SUMMARY只是一个例程,用于生成一个表,其中包含数据集中"所有观察或观察组内变量的描述性统计",以解释SAS文档.我们的要求只是完整功能的一小部分 - 输出我们拥有的表格:

  • 能够将不同的统计数据应用于不同的列(现在只是计数,总和,平均值,加权平均值)
  • 能够处理零到多个分组变量
  • 能够为加权平均值指定权重变量

我们不会尝试做任何其他事情(任何图形化等)

这是我们迄今为止所拥有的:

def wmean_ungrouped (d,w):
    return (d.dot(w)).sum() / w.sum()

def wmean_grouped (group, var_name_in, var_name_weight):
    d = group[var_name_in]
    w = group[var_name_weight]
    return (d * w).sum() / w.sum()

FUNCS = {
    "mean"   : np.mean ,
    "sum"   : np.sum ,
    "count" : np.count_nonzero
}

def my_summary (
        data ,
        var_names_in ,
        var_names_out ,
        var_functions ,
        var_name_weight = None ,
        var_names_group = None
):
    result = DataFrame()

    if var_names_group …
Run Code Online (Sandbox Code Playgroud)

python pandas

9
推荐指数
1
解决办法
1325
查看次数

pandas 频率表的描述性统计数据

我有一个测试分数的频率表:

score    count
-----    -----
  77      1105
  78       940
  79      1222
  80      4339
etc
Run Code Online (Sandbox Code Playgroud)

我想显示由频率表总结的样本的基本统计数据和箱线图。(例如,上例的平均值为 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
Run Code Online (Sandbox Code Playgroud)

——但我希望避免这种情况;真实非玩具数据集中的总频率高达数十亿。

任何帮助表示赞赏。

(我认为这是一个与使用describe()与加权数据不同的问题,后者是关于将权重应用于个别情况。)

python pandas

2
推荐指数
1
解决办法
3928
查看次数

如何在Python中获得频率分布表的均值和标准差

我有一个元组列表[(val1,freq1),(val2,freq2)....(valn,freqn)].我需要测量上述数据的中心趋势(平均值,中位数)和偏差度量(方差,均值).我还想绘制值的箱线图.

我看到numpy数组有直接的方法来从值列表中获得均值/中值和标准差(或方差).

numpy(或任何其他知名图书馆)是否有直接的手段在这样的频率分配表上运行?

另外,将上面的元组列表以编程方式扩展到一个列表的最佳方法是什么?(例如,如果freq dist是[(1,3),(50,2)],最好的方法是获得列表[1,1,1,50,50]来使用np.mean([1,1,1, 50,50]))

在这里看到了一个自定义函数,但是如果可能的话我想使用标准实现

python numpy dataframe python-3.x

1
推荐指数
1
解决办法
2376
查看次数