生肖屬相單變量分析


本文基於金融風控違約用戶相關數據進行的單變量分析,代碼親測有效。

1. 導入相應的包和數據

import pandas as pd
import numpy as np
ft_zodiac = pd.read_csv('ft_zodiac.txt')
print(ft_zodiac.shape)
ft_zodiac.head()

在這裏插入圖片描述
pd15作爲好壞的分割節點。>15 爲壞人,<15爲好人?

15天以上的人爲壞,標籤爲1;5天以內的人爲好標籤爲0;5至15天的標籤爲2。

zodiac_label = pd.read_csv('zodiac_label.txt')
#這裏去除標籤爲2的數據
ft_label = zodiac_label[zodiac_label.label != 2]
ft_label.head()

在這裏插入圖片描述

2. 將兩個表中的數據通過merge合併起來

data = pd.merge(ft_label,ft_zodiac,on = 'order_id',how = 'inner')
data.head()

在這裏插入圖片描述

3. 用集合將數據存起來並放在字典中

#用集合將出現的值存起來
zodiac_list = set(data.zodiac)
chinese_zodiac_list = set(data.chinese_zodiac)
zodiac_list

在這裏插入圖片描述

chinese_zodiac_list

在這裏插入圖片描述

#創建字典,來表示星座及對應的壞賬率
zodiac_badrate = {}
for i in zodiac_list:
    total = data[data.zodiac == i]
    bad = total[total.label == 1]['label'].count()
    good = total[total.label == 0]['label'].count()
    zodiac_badrate[i] = round(bad/(bad + good),3)
zodiac_badrate

在這裏插入圖片描述

4. 將數據轉化爲DataFrame格式(排序),畫圖展示

f = zip(zodiac_badrate.keys(),zodiac_badrate.values())
#f = sorted(f,key = lambda x : x[1],reverse = True )
zodiac_badrate = pd.DataFrame(f)
zodiac_badrate.columns = pd.Series(['星座','badrate'])
zodiac_badrate = zodiac_badrate.sort_values('badrate',ascending = False)

這裏用了兩種方式,一種是matplotlib,一種是pyecharts

matplotlib

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False 
plt.rcParams['figure.figsize'] = (8, 5)
x = zodiac_badrate['星座']
y = zodiac_badrate['badrate']
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set(title='變量星座與壞賬率的關係',ylabel='badrate',xlabel='星座')
ax.set_ylim(0.08,0.16,0.05)
ax.plot(x, y, color='blue', linewidth=3)
plt.show()

在這裏插入圖片描述

pyecharts

from pyecharts.charts import *
from pyecharts import options as opts
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
np.set_printoptions(suppress=True)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
line = (
    Line()
    .add_xaxis(list(zodiac_badrate['星座']))
    .add_yaxis(
        "分組壞人佔比",
        list(zodiac_badrate['badrate']),
        yaxis_index=0,
        color="red",
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="變量星座與壞賬率的關係"),
    )
)
line.render_notebook()

在這裏插入圖片描述

#生肖
chinese_zodiac_badrate = {}
for x in chinese_zodiac_list:
    
    a = data[data.chinese_zodiac == x]
    
    bad = a[a.label == 1]['label'].count()
    good = a[a.label == 0]['label'].count()
    
    chinese_zodiac_badrate[x] = round(bad/(bad+good),3)
chinese_zodiac_badrate

在這裏插入圖片描述

f = zip(chinese_zodiac_badrate.keys(),chinese_zodiac_badrate.values())
f = sorted(f,key = lambda x : x[1],reverse = True )
chinese_zodiac_badrate = pd.DataFrame(f)
chinese_zodiac_badrate.columns = pd.Series(['生肖','badrate'])
chinese_zodiac_badrate

在這裏插入圖片描述

import matplotlib.pyplot as plt
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False 
plt.rcParams['figure.figsize'] = (8, 5)
x = chinese_zodiac_badrate['生肖']
y = chinese_zodiac_badrate['badrate']
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set(title='變量生肖與壞賬率的關係',ylabel='badrate',xlabel='生肖')
ax.set_ylim(0.08,0.16,0.05)
ax.plot(x, y, color='blue', linewidth=3)
plt.show()

在這裏插入圖片描述

from pyecharts.charts import *
from pyecharts import options as opts
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
np.set_printoptions(suppress=True)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
line = (
    Line()
    .add_xaxis(list(chinese_zodiac_badrate['生肖']))
    .add_yaxis(
        "分組壞人佔比",
        list(chinese_zodiac_badrate['badrate']),
        yaxis_index=0,
        color="red",
    )
    .set_global_opts(
        title_opts=opts.TitleOpts(title="變量生肖與壞賬率的關係"),
    )
)
line.render_notebook()

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章