十二、python-数据框处理:统计|筛选|排序|计算|索引

1、数据样例

import pandas as pd
data=pd.read_excel("路径",sheet_name="sheet名")
data
user_idnum1num2num3
5624984222945353728083
34954530436557703461284
5525728571643764736290
5634158985852153856152211
5635157627565940736163
............

2、统计函数:count|sum|mean|median|min|max

2.1、整表汇总

按行汇总:axis=0

按列汇总:axis=1

#按列汇总
data.sum(axis=0)
#输出
user_id   -2228512839579620074
num1                     25320
num2                     42318
num3                     18752
dtype: int64
#按行汇总
data.sum(axis=1)
#输出
Out[12]: 
0       11
1       24
2       11
3       48
4       10
        ..
4567     4
4568     7
4569     1
4570     6
4571     3
Length: 4572, dtype: int64

 2.2、单列汇总


print(data['num1'].count())
print(data['num1'].sum())
print(data['num1'].mean())
print(data['num1'].max())
print(data['num1'].min())
print(data['num1'].median())

#输出
4572
25320
5.5380577427821525
29
0
3.0

#保留小数
a=data['num1'].mean()
round(a,2)
Out[14]: 5.54

2.3、多列汇总

单列统计返回的是一个值,多列统计返回的是一个序列series(有索引和值,索引就是列名)

data
data[['num1','num2']].mean()
#输出
Out[18]: 
num1    5.538058
num2    9.255906
dtype: float64

3、排序:data.sort_values(by='排序列',ascending=False)

data.sort_values(by='num1',ascending=False)
Out[20]: 
                  user_id  num1  num2  num3
809   5579044487854575616    29     2     1
3962  3477094759968014580    29    13     7
4003  5494510426380918784    29     7     4
104   3501613821985226946    29     6     3
826   5628591245644963840    28     4     2
                  ...   ...   ...   ...
2406  3513087378315608128     0     4     1
2399  5499283457239011328     0    15     7
2398  3526511975088193706     0     0     3
2394  3514020486669795392     0     0     0
4571  5593801780474507264     0     3     0

[4572 rows x 4 columns]
data.sort_values(by='num1',ascending=True)
Out[21]: 
                  user_id  num1  num2  num3
0     5624984222945353728     0     8     3
2210  5640957769152696320     0     3     0
2209  5511987672741662720     0     3     0
2208  3503518403813572842     0     4     0
2207  3513332095081316416     0     3     1
                  ...   ...   ...   ...
2263  5630924861299671040    28    12     9
809   5579044487854575616    29     2     1
3962  3477094759968014580    29    13     7
4003  5494510426380918784    29     7     4
104   3501613821985226946    29     6     3

[4572 rows x 4 columns]

4、计算

data['计算字段']=data['num1']*data['num2']

data
Out[28]: 
                  user_id  num1  num2  num3  计算字段
0     5624984222945353728     0     8     3     0
1     3495453043655770346    12     8     4    96
2     5525728571643764736     2     9     0    18
3     5634158985852153856    15    22    11   330
4     5635157627565940736     1     6     3     6
                  ...   ...   ...   ...   ...
4567  5634110336097857536     2     2     0     4
4568  5637013192119177216     0     5     2     0
4569  5548573528932507648     0     1     0     0
4570  5588803197797904384     3     2     1     6
4571  5593801780474507264     0     3     0     0

[4572 rows x 5 columns]

5、索引

5.1、字符串索引

#字符串筛选:user_id包含'888'的用户信息
data['user_id']=data['user_id'].astype(str)
data[data['user_id'].str.contains('888')]

#输出
Out[36]: 
                  user_id  num1  num2  num3  计算字段
28    5568885551092862976     1    10     6    10
83    3513088872978776166     0     2     0     0
361   5513788817125425152     0     5     1     0
367   3497567788853166144     0    41    40     0
403   5631960332737888256     1    10     2    10
                  ...   ...   ...   ...   ...
4430  5499199389701541888     0     2     1     0
4432  3488825295054372932     0     0     0     0
4434  5631848889448972288     7     4     0    28
4540  5636977079971237888    14     6     2    84
4570  5588803197797904384     3     2     1     6

5.2、最大最小值索引

data["列名"].idxmax()

data.loc[索引值]

data=data.set_index("user_id")
max_user=data["num1"].idxmax()
#输出
'3501613821985226946'

data.loc[max_user]
#输出
Out[51]: 
                     num1  num2  num3
user_id                              
3501613821985226946    29     6     3
3501613821985226946     0     6     3

5.3、条件筛选

data[data['num1']==0]
#输出
Out[116]: 
                     num1  num2  num3
user_id                              
5624984222945353728     0     8     3
5619592819730538504     0    13     7
5642761933520007168     0     4     0
5584447292178771968     0     7     1
5498604286447411200     0     3     2
                  ...   ...   ...
3523537620163690535     0     3     0
5502579930471976960     0     4     1
5637013192119177216     0     5     2
5548573528932507648     0     1     0
5593801780474507264     0     3     0

索引设置

data=data.set_index("设置为索引的列名")

data=data.reset_index()


data=data.set_index("user_id")
data
Out[38]: 
                     num1  num2  num3  计算字段
user_id                                    
5624984222945353728     0     8     3     0
3495453043655770346    12     8     4    96
5525728571643764736     2     9     0    18
5634158985852153856    15    22    11   330
5635157627565940736     1     6     3     6
                  ...   ...   ...   ...
5634110336097857536     2     2     0     4
5637013192119177216     0     5     2     0
5548573528932507648     0     1     0     0
5588803197797904384     3     2     1     6
5593801780474507264     0     3     0     0

[4572 rows x 4 columns]

#索引重置
data=data.reset_index()
data
Out[40]: 
                  user_id  num1  num2  num3  计算字段
0     5624984222945353728     0     8     3     0
1     3495453043655770346    12     8     4    96
2     5525728571643764736     2     9     0    18
3     5634158985852153856    15    22    11   330
4     5635157627565940736     1     6     3     6
                  ...   ...   ...   ...   ...
4567  5634110336097857536     2     2     0     4
4568  5637013192119177216     0     5     2     0
4569  5548573528932507648     0     1     0     0
4570  5588803197797904384     3     2     1     6
4571  5593801780474507264     0     3     0     0

[4572 rows x 5 columns]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值