相关疑难解决方法(0)

使用带有加权数据的describe() - 平均值,标准差,中位数,分位数

我对python和pandas(使用SAS作为我的主力分析平台)相当新,所以如果已经被问到/已经回答过,我会事先道歉.(我搜索了文档以及这个网站搜索答案,但还没找到.)

我有一个包含受访者级别调查数据的数据框(称为resp).我想对其中一个字段(称为anninc [年收入的简称])执行一些基本的描述性统计.

resp["anninc"].describe()
Run Code Online (Sandbox Code Playgroud)

这给了我基本的统计数据:

count     76310.000000
mean      43455.874862
std       33154.848314
min           0.000000
25%       20140.000000
50%       34980.000000
75%       56710.000000
max      152884.330000
dtype: float64
Run Code Online (Sandbox Code Playgroud)

但是有一个问题.鉴于样本是如何构建的,需要对响应数据进行权重调整,以便在执行分析时不会将每个数据视为"相等".我在数据框中有另一列(称为tufnwgrp),表示在分析期间应应用于每条记录的权重.

在我之前的SAS生活中,大多数proc都有选项来处理具有这样权重的数据.例如,标准proc单变量给出相同的结果看起来像这样:

proc univariate data=resp;
  var anninc;
  output out=resp_univars mean=mean median=50pct q1=25pct q3=75pct min=min max=max n=count;
run;
Run Code Online (Sandbox Code Playgroud)

使用加权数据的相同分析看起来像这样:

proc univariate data=resp;
  var anninc;
  weight tufnwgrp;
  output out=resp_univars mean=mean median=50pct q1=25pct q3=75pct min=min max=max n=count
run;
Run Code Online (Sandbox Code Playgroud)

对于像describe()等方法,pandas中是否有类似的加权选项?

python pandas statsmodels

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

如何根据带有权重的数据创建箱线图?

我有以下数据:aName名称出现的次数 ( Count),以及Score每个名称的 a 。我想创建 的箱须图,并按Score每个名称的 进行加权。ScoreCount

结果应该与我拥有原始(非频率)形式的数据相同。但我实际上不想将数据转换为这种形式,因为它的大小会很快膨胀。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

data = {
    "Name":['Sara', 'John', 'Mark', 'Peter', 'Kate'],
    "Count":[20, 10, 5, 2, 5], 
    "Score": [2, 4, 7, 8, 7]
}
df = pd.DataFrame(data)
print(df)
Run Code Online (Sandbox Code Playgroud)
   Count   Name  Score
0     20   Sara      2
1     10   John      4
2      5   Mark      7
3      2  Peter      8
4      5   Kate      7
Run Code Online (Sandbox Code Playgroud)

我不知道如何在 Python 中解决这个问题。任何帮助表示赞赏!

python data-visualization dataframe pandas

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

如何在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
查看次数