PyPackage01---Pandas02_汇总和频数统计

  单变量频数统计&多变量分组统计中的相关方法~

1. count&unique&nunique

import pandas as pd
test_data = pd.DataFrame({
    'x1': ["a", "b", "c", "b"],
    "x2": [1, 2, 3, 4],
    "x3": [4, 3, 2, 1]
})
test_data
x1x2x3
0a14
1b23
2c32
3b41

1.1 统计个数count

## 统计个数
test_data.x1.count()
4

1.2 统计不重复值个数nunique

## 统计不重复的个数
test_data.x1.nunique()
3

1.3 筛选不重复值

## 得到不重复的值
## 返回结果是array
test_data.x1.unique()
array(['a', 'b', 'c'], dtype=object)

1.4 统计某一个值的频数

  不同于列表,可以直接统计某个值出现的次数,DataFrame需要做一些转换。

list(test_data.x1).count('b')
2
sum(test_data.x1.apply(lambda x: 1 if x=='b' else 0))
2
test_data.x1.apply(lambda x: 1 if x=='b' else 0).sum()
2

2. 分组统计—groupby

  groupby有一点奇葩,分组之后,label都变成索引(行名了),可以设置as_index=False改变默认参数。
文档地址:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html

import pandas as pd
x = pd.DataFrame({
    "x1": ["a", "a", "b", "b", 'c'],
    "x2": [1, 1, 1, 2, 2],
    "x3": [1, 2, 3, 4, 5]
})
x
x1x2x3
0a11
1a12
2b13
3b24
4c25

2.1 分组统计count(*)

# 分组统计各个列的个数
x.groupby(by='x1').count()
x2x3
x1
a22
b22
c11
x.groupby(by=['x1', 'x2'], as_index=False).count()
x1x2x3
0a12
1b11
2b21
3c21
# 这里没有分各个列。
x.groupby(by='x1').size()
x1
a    2
b    2
c    1
dtype: int64

2.2 分组统计count(distinct col1)

# 类似于sql:select x1,count(distinct x1),count(distinct x2),count(distinct x3) from table group by x1
x.groupby(by='x1').nunique()
x1x2x3
x1
a112
b122
c111

2.4 其余统计函数

x.groupby(by=["x1",'x2']).mean()
x3
x1x2
a11.5
b13.0
24.0
c25.0
x.groupby(by=["x1",'x2']).sum()
x3
x1x2
a13
b13
24
c25
x.groupby(by=["x1",'x2'], as_index=False).aggregate(sum)
x1x2x3
0a13
1b13
2b24
3c25

2.5 整体的描述统计

x.groupby(by=["x1",'x2'], as_index=True).describe()
x3
countmeanstdmin25%50%75%max
x1x2
a12.01.50.7071071.01.251.51.752.0
b11.03.0NaN3.03.003.03.003.0
21.04.0NaN4.04.004.04.004.0
c21.05.0NaN5.05.005.05.005.0
x.groupby(by=["x1",'x2'], as_index=False).describe()
x2x3
countmeanstdmin25%50%75%maxcountmeanstdmin25%50%75%max
02.01.00.01.01.01.01.01.02.01.50.7071071.01.251.51.752.0
11.01.0NaN1.01.01.01.01.01.03.0NaN3.03.003.03.003.0
21.02.0NaN2.02.02.02.02.01.04.0NaN4.04.004.04.004.0
31.02.0NaN2.02.02.02.02.01.05.0NaN5.05.005.05.005.0

                                            2018-10-13 于南京市栖霞区紫东创业园

  • 20
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值