Excel数据透视表与Python实现对比
就是对表df中的a列各个值出现的次数进行统计。
Pandas中的数据透视表各功能
用过Excel透视表功能的话我们知道,出了统计出现次数之外,还可以选择计算某行的求和、最大最小值、平均值等(数据透视表对于数值类型的列默认选求和,文本类型默认选计数),还是拿表df来说,excel的数据透视表可以计算a列的A、B、C三个元素对应的c列的求和(sum),但是pandas库并没有value_sum()这样的函数,pandas的sum函数是对整列求和的,例如df['b']sum()是对b列求和,结果是21,和a列无关;所以我们可以自己按照根据a列分表再求和的思路去实现。自己造轮子的做法可以是:
def df_value_sum(df,by='a',s='b'):#by和s分别对应根据a列对b列的数求和
keys=set(df[by])
ss={}
for k in keys:
d=dfloc[df[by]==k]
ss[k]=d[s]sum()
return ss #返回一个字典
对于上面的表df,该函数df_value_sum(df,by='a',s='b')的输出是一个字典,{'B': 3, 'C': 15, 'A': 3},字典可以进一步转为DataFrame。同样的方法可以写出df_value_max(df)、df_value_min(df)、 df_value_min(df) df_value_avg(df)等;如果需要对除a外的所有列进行分组求和 *** 作,可以用dfgroupby('a')sum(),会输出一个DataFrame。
去重的数据透视表计数
另外还有一个很重要的需求是统计某列不重复元素的计数,这个用数据透视表是不能直接算出来的,例如有一个用户订单表,一个用户可能下了多个订单,用户有渠道属性,需要统计一段时间内各渠道的付费用户数,直接在透视表的行选渠道,值选uid计数,得到的是没去重的结果,拿df表来说,假设c列是用户id,a列是渠道,想统计a列的A、B、C各渠道各有多少付费用户数,透视表的结果和期望的结果如下图:
常规透视表与期望的去重效果对比
可以看到直接对c列计数是不去重的。pandas库的value_counts()库也是不去重的统计,查阅value_counts的官方文档可以发现,这个函数通过改变参数可以实现基础的分组计数、频率统计和分箱计数,normalize参数设置为True则将计数变成频率,例如df的a列中共有6行,而C出现了3次,于是C对应的值就是05;bin参数可以设置分箱;dropna可以设置是否考虑缺失值,默认是不考虑(可以结合normalize影响频率);sort可以设置是否根据统计值进行排序(关于value_counts函数的更多内容可以再看下官方文档)。复用之前df_value_sum(df)的思路和代码,可以这么实现去重的计数需求:
def df_value_countdistinct(df,by='a',s='c'):
keys=set(df[by])
ss={}
for k in keys:
d=dfloc[df[by]==k] w
ss[k]=len(set(d[s]))
return ss
调用这个函数df_value_countdistinct(df,by='a',s='c')得到的结果就是A对应1,B对于1,C对应2,通过set对c列去重后再计数。查资料的过程中发现StackOverflow网站提供的一种解法很优雅,思路就是把根据a列分表的过程直接用dfgroupby('a')实现,于是直接写dfgroupby('a')cnunique()或dfgroupby('a')['c']nunique()就是期望的结果,效率比用for循环更高,值得学习。
Python的去重计数实现统计学中的DF、F、P分别代表的意思解释如下:
一、DF代表自由度:
1、自由度指的是计算某一统计量时其取值不受限制的变量个数;
2、通常自由度为N与K的数值差,其中N为样本数量,而K为被限制的条件数或变量个数或计算某一统计量时用到其它独立统计量的个数,自由度通常用于抽样分布中。
二、F代表F统计量:
1、F统计量是指在零假设成立的情况下符合F分布的统计量;
2、零假设又称原假设,指进行统计检验时预先建立的假设的一种统计术语,零假设成立时有关统计量应服从已知的某种概率分布即F统计量。
三、P代表P值:
1、P值是用于判定、假设检验结果的一个参数,也可以根据不同的分布使用分布的拒绝域进行比较;
2、P值就是当原假设为真时所得到的样本观察结果或更极端结果出现的概率,P值越小则表明原假设情况的发生的概率越小,其结果则越显著。
MS是均方,其值等于相应的SS除以DF。
SS是平均偏差平方和,表示数据的总变化。
DF是自由度,它是计算统一测量时具有无限值的变量数。
F是F的值,F是方差分析的统计量,用于检验回归方程是否显著。
在统计学中,回归分析是指确定两个或两个以上变量之间数量关系的统计分析方法。回归分析按涉及的变量数可分为单回归分析和多元回归分析;按因变量数可分为单回归分析和多元回归分析。
扩展资料:
回归分析内容:
1、确定变量:确定预测的具体目标,然后确定因变量。如果预测目标是下一年的销售量,那么销售量y是因变量。通过市场调研和数据获取,找出相关影响因素,即自变量,从中选择主要影响因素。
2、建立预测模型:根据自变量和因变量的历史统计数据进行计算,建立回归分析方程,即回归分析预测模型。
3、相关分析:只有自变量与因变量之间存在一定的关系,回归方程才有意义。因此,作为自变量,因子是否作为因变量与预测对象相关,相关性如何,相关性程度如何容易判断,是回归分析中必须解决的问题。
4、预测误差的计算:回归预测模型能否用于实际预测,取决于回归预测模型的检验和预测误差的计算。回归方程只有通过各种检验,预测误差小,才能作为预测模型。
5、预测值的确定:采用回归预测模型计算预测值,并对预测值进行综合分析,确定最终预测值。
MS是均方,SS是离均差平方和,F就是F统计量,DF是自由度。
方差分析用于两个及两个以上样本均数差别的显著性检验。 由于各种因素的影响,研究所得的数据呈现波动状。造成波动的原因可分成两类,一是不可控的随机因素,另一是研究中施加的对结果形成影响的可控因素。
扩展资料:
方差分析中的原假设是:协变量对观测变量的线性影响是不显著的;在协变量影响扣除的条件下,控制变量各水平下观测变量的总体均值无显著差异,控制变量各水平对观测变量的效应同时为零。检验统计量仍采用F统计量,它们是各均方与随机因素引起的均方比。
参考资料来源:百度百科-方差分析
df行=4-1=3,df列=18-1=17,df交互=317=51,df误差=418(144/(418)-1)=72,df总计=418(144/(418))-1=143MS行=SS行/df行=195536,MS列=SS列/df列=54502,MS交互=SS交互/df交互=9731,MS误差=SS误差/df误差=8438,F行=MS行/MS误差=2317,F列=MS列/MS误差=646,F交互=MS交互/MS误差=115
df为自由度,就是degrees of freedom,简称df。卡方检验的自由度计算公式为(R-1)×(L-1),即(行-1)×(列-1)。
SPSS(Statistical Product and Service Solutions),“统计产品与服务解决方案”软件。
最初软件全称为“社会科学统计软件包”(SolutionsStatistical Package for the Social Sciences),但是随着SPSS产品服务领域的扩大和服务深度的增加,SPSS公司已于2000年正式将英文全称更改为“统计产品与服务解决方案”,标志着SPSS的战略方向正在做出重大调整。
为IBM公司推出的一系列用于统计学分析运算、数据挖掘、预测分析和决策支持任务的软件产品及相关服务的总称SPSS,有Windows和Mac OS X等版本。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)