pandas apply lambda_python之pandas趣味练习题(一)

v2-2c20a8a90cc2b04b3f57f83216e4481b_1440w.jpg?source=172ae18b

图片摄于2015年6月13日于北京百花山我们首先构建一个DataFrame数据。字段定义如下:

applied_from:申请渠道

applied_type:申请类型

refused_id:拒绝原因代码

import pandas as pd
import warnings
warnings.filterwarnings("ignore")
df = pd.DataFrame({'applied_from': [1,1,1,1,1,2,2,2,2,2,2],
                   'applied_type': [0,0,0,1,1,0,0,0,1,1,1],
                   'refused_id':   [100,100,100,102,102,102,102,102,102,102,100]})
df

v2-7ef1acbd53b28fd434c77b9cd1c8d16d_b.jpg

我们所需要求的是什么呢?求三列数据。

求第一列数据id_cnt不同申请渠道applied_from不同申请类型applied_type 不同拒绝原因refused_id总数

#不同申请渠道不同申请类型不同拒绝原因总数
df_new = df.groupby(by=['applied_from','applied_type','refused_id'])['refused_id'].agg({'id_cnt':'count'}).reset_index()
df_new

v2-56869e4ce49a7454a61745fe22e64fd7_b.jpg

求第二列数据id_all:不同申请渠道applied_from不同申请类型applied_type总数

#不同渠道不同产品类型的个数
df_new_tmp = df_new.groupby(by=['applied_from','applied_type'])['id_cnt'].agg({'id_all':'sum'}).reset_index()
df_new_tmp

v2-a377d5658049cdf528cae13445d50501_b.jpg

注意哦,id_all 只是一个中间变量 ,它是帮我们求id_per。

求第三列数据id_per不同申请渠道applied_from不同申请类型applied_type不同拒绝原因refused_id总数作为分子(id_cnt),不同申请渠道不同申请类型总数作为分母(id_all

首先,我们合并数据集。

df_new = pd.merge(df_new, df_new_tmp, on=['applied_from', 'applied_type'])
df_new

v2-d22197d6733dd305eb3bfb9592701619_b.jpg

然后我们开始计算求第三列数据id_per

df_new

v2-7f1379729cd0a049f2680aa6201edd01_b.jpg

我们用了apply和lambda函数去计算。

pandas是很灵活的,结合python的基础语法去运用,多结合实际需求去使用pandas的各个方法,慢慢你就熟悉熟练了!关键是多结合实际去运用。

v2-13510193227f65cf54853911cc2366d7_b.jpg

图片摄于2015年6月13日于北京百花山

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值