作为一个SAS分析平台的用户,我刚接触Python和Pandas,如果这个问题已经有人问过/回答过,请提前谅解。(我已经搜索了文档和本网站,但还没有找到答案。)
我有一个名为resp的数据框,其中包含受访者调查数据。我想对其中一个字段(称为anninc,代表年收入)执行一些基本的描述性统计。
resp["anninc"].describe()
这给了我基本的统计数据:
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
但是有一个注意点。由于样本的构建方式,需要对受访者数据进行加权调整,以便在进行分析时不是每个人都被视为"平等的"。在数据帧中,我有另一列(称为tufnwgrp)表示应在分析期间应用于每个记录的权重。
在我之前的SAS生活中,大多数程序都有处理此类加权数据的选项。例如,通过标准proc univariate处理数据以得到相同结果,看起来是这样的:
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;
使用加权数据进行相同分析的结果大致如下:
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;
在Pandas中,像describe()这样的方法是否有类似的加权选项可用?
(df['anninc'] * df['tufnwgrp']).describe()
就可以解决问题了。你可能需要在某个时候转换数据类型。 - TomAugspurger