

最后的结果如果我不想除以总数5000,而是‘’北京‘’列下面的的数据显示北京总数的占比,黑龙江列的数据显示的是黑龙江总数的占比,就是分别显示两列总数的占比,怎么做呢

1,是所有变量都要分箱,但是可能有的变量需要手动调整分箱,可以把不需要手动调整分箱的变量一次性分箱吗
2,之前这行代码temp = df.groupby(["注册时长_y","sf"]).count()['序号'].unstack(1)/5000里面的【注册时长_y】是在哪个位置命名的?【unstack(1)/5000】是什么意思?
3,qcut和cut有什么区别?
谢谢

还有一个问题,可以一次性跑出所有列的分箱吗
1、上一个问题
代码如下
# 导入工具包
import pandas as pd
import numpy as np
# 导入原始数据
df = pd.read_excel("./data/1600139052_431496.xlsx")
# 数据转换
qc = pd.qcut(df.sort_values("注册时长")["注册时长"],q=4) #
df = pd.merge(df,qc,left_index=True,right_index=True) #
temp = df.groupby(["注册时长_y","所在省份"]).count()["序号"].unstack(1)/5000 #
temp["PSI"] = temp.apply(lambda x:(x[1]-x[0])*(np.log10(x[1]/x[0])/np.log10(np.e)),axis=1) # 计算PSI
# 数据存盘
temp.to_excel("result.xlsx")
2、一次性跑出来也是可以的,但不是所有变量都要分箱吧
import pandas as pd
df = pd.read_excel("./data/1600139052_431496.xlsx")
qc = pd.qcut(df.sort_values("注册时长")["注册时长"],q=4) # 等宽分箱
df = pd.merge(df,qc,left_index=True,right_index=True) # 拼接数据集
df.groupby(["注册时长_y","所在省份"]).count()["序号"].unstack(1)/5000 #聚合转换