统计df表格怎么用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计df表格怎么用相关的知识,希望对你有一定的参考价值。

在pandas库中实现Excel的数据透视表效果通常用的是df['a'].value_counts()这个函数,表示统计数据框(DataFrame) df的列a各个元素的出现次数;例如对于一个数据表如pd.DataFrame('a':['A','A','B','C','C','C'],'b':[1,2,3,4,5,6],'c':[11,11,12,13,13,14]),Excel数据透视表与Python实现对比效果如下:

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=df.loc[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外的所有列进行分组求和操作,可以用df.groupby('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对应的值就是0.5;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=df.loc[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列分表的过程直接用df.groupby('a')实现,于是直接写df.groupby('a').c.nunique()或df.groupby('a').['c'].nunique()就是期望的结果,效率比用for循环更高,值得学习。

Python的去重计数实现
参考技术A df检验表怎么看?
1%、%5、%10不同程度拒绝原假设的统计值和ADF Test result的比较,ADF Test result同时小于1%、5%、10%即说明非常好地拒绝该假设。
(2) P-value是否非常接近0。ADF检验的原假设是存在单位根,P-value是小于1%水平下的数字就可以极显著的拒绝原假设,认为数据平稳。注意,ADF值一般是负的,也有正的,但是它只有小于1%水平下的才能认为是及其显著的拒绝原假设!
参考技术B 直接在百度中搜索下载。
2.
利用任意一款PDF编辑工具打开包含表格的PDF文档,点击“编辑内容”按钮后就可以对表格数据进行编辑操作了。
3.
当然,我们也可以直接将包含表格的PDF文档转换成excel文档进行编辑。利用Excel打开PDF文档,会提示进行格式转换。
4.
待转换PDF文档为Excel之后,就可以对其中的内容进行编辑操作了。同时还可以

用excel怎么统计绘图

做了个调查报告。
现有数据如用户的职业:engineer
writer
administrator
educator
entertainment
student
student
student
none
healthcare
writer
educator
对产品评价(5分制):3
3
4
3
4
3
3
4
4
3
3
4
3
3
3
3
怎样做个图来表示用户职业与他评价之间的关系。

用数据透视
1、在数据菜单下有数据透视,点击打开向导
2、选择数据区域
3、布局里吧职业拖到行,评分拖到数据区域
4、报字段汇总类型改成平均值
在统计结果里选择职业和评分平均值,点工具栏上的图表按钮,生成一个柱状图
参考技术A 把你的数据做成这样的形式
A B
职业 评分
engineer 3
writer 3
administrator 4
educator 3
entertainment 4
student 3
student 3
student 4
none 4
healthcare 3
writer 3
educator 4
即第一列是职业 第二列是评价

选中所有数据 执行分类汇总 分类字段:职业 汇总方式:平均值 选定汇总项:评价 点确定

点一下汇总栏(左边那个)上面的小数字 2 得到:
职业 评分
engineer 平均值 3
writer 平均值 3
administrator 平均值 4
educator 平均值 3
entertainment 平均值 4
student 平均值 3.333333333
none 平均值 4
healthcare 平均值 3
writer 平均值 3
educator 平均值 4
总计平均值 3.416666667

选中这些数据 再插入图表就可以了 选择你喜欢的图形
希望对你有用
参考技术B 先分类汇总,然后就用普通的柱形图就行啊。 参考技术C 很简单的,我是教授,给我分啊,回头告诉你 参考技术D 我能做,不过说详细点。可HI我本回答被提问者采纳

以上是关于统计df表格怎么用的主要内容,如果未能解决你的问题,请参考以下文章

用excel怎么统计绘图

wps表格怎么统计相同的单元格个数

考勤记录在一个单元格,快速统计上班天数?

Excel表格如何统计选中行的行数?

干货 利用SPSS进行高级统计分析第二期

企业统计报表系统软件怎么用?