wangxishi

2020-08-06   阅读量: 5653

数据分析师 python 大数据 统计学

python 按照等频分箱并依据好坏客户画出每个分数的分箱趋势图

扫码加入数据分析学习群

想实现依据不同的score1,score2..分别将分数进行排序后分别等频分箱,每个分数等频分5箱,并依据好坏客户指标画图

image.png


22.6115 3 9 关注作者 收藏

评论(6)

wangxishi
2020-08-06

我这刚才的代码里面"td_device_proxy"这个字段就相当于“score1”,只是名字不同

0.0000 0 0 回复
ermutuxia
2020-08-06
data["score1均匀分箱"]=pd.qcut(data["score1"],5,labels=["a","b","c","d","e


0.0000 0 0 回复
ermutuxia
2020-08-06

你的命令错误的地方应该是data.columns=

["td_device_proxy"]

你要把这一句删掉

后面的命令改为

data["score1均匀分箱"]=pd.qcut(data["td_device_proxy"],5,labels=["a","b","c","d","e


0.0000 0 0 回复
ermutuxia
2020-08-06

你把你的data数据框看下:用下面的命令

data.head()


0.0000 0 0 回复
wangxishi
2020-08-06

数据是这个样子的

image.png

0.0000 0 0 回复
ermutuxia
2020-08-06

image.png

0.0000 0 0 回复
wangxishi
2020-08-06

我从23列中挑选其中的一列【td_device_proxy】进行分箱,但是提示错误,代码如下

data.columns=["td_device_proxy"]

data["td_device_proxy均匀分箱"]=pd.qcut(data["td_device_proxy"],5,labels=["a","b","c","d","e"])

提示错误如下:

image.png

0.0000 0 0 回复
ermutuxia
2020-08-06

你试一下下面的代码

import pandas as pd

import numpy as np

#模拟一些数据

data1=pd.DataFrame(np.random.random_integers(1,1000,(100,3)))

data1.columns=["x1","x2","x3"]

data1["x1均匀分箱"]=pd.qcut(data1["x1"],4,labels=["a","b","c","d"])


0.0000 0 0 回复
wangxishi
2020-08-06

可以解释下每个位置都需要输入什么参数吗,然后还想根据分箱画图的代码有吗

image.png


0.0000 0 0 回复
ermutuxia
2020-08-07

测试

0.0000 0 0
ermutuxia
2020-08-06

data1=pd.DataFrame(np.random.random_integers(1,1000,(100,3)))

data1.columns=["x1","x2","x3"]

上面这两句的意思是导入数据或者生成模拟数据,只要生成一个数据框对象就行,根据你前面的截图,你已经有数据框了,不需要执行这两句。

你需要用到的是下面这句

data1["x1均匀分箱"]=pd.qcut(data1["x1"],4,labels=["a","b","c","d"])

pd.qcut是对变量进行分位数分箱,data1["x1"]是你对哪个变量进行分箱,4是分箱分成4类,labels参数设定这四类的标签,如果不设定就会用0、1、2、3代替。

0.0000 0 0

推荐课程