matplotlib批量生成子圖--用於比較分析
阿新 • • 發佈:2019-02-20
#################################################
#################0912 畫圖
#################################################
import numpy as np
import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt
import os,sys
os.chdir('/Users/cc/Documents/cc工作 餓了麼_生意金/201809/six_bad') #用於改變當前工作目錄到指定的路徑
data=pd.read_csv('cc_repay_fea_0912.csv')
#####計算均值
def avgsix(data,col):
data05=data[data['loan_month']=='2018-05']
data06=data[data['loan_month']=='2018-06']
data07=data[data['loan_month']=='2018-07']
data08=data[data['loan_month']=='2018-08']
a=[]###全部
a.append(np.mean(data05[col]))
a.append(np.mean(data06[col]))
a.append(np.mean(data07[col]))
a.append(np.mean(data08[col]))
b=[]####逾期
b.append(np.mean(data05[data05['dpd7']==1][col]))
b.append(np.mean(data06[data06['dpd7']==1][col]))
b.append(np.mean(data07[data07['dpd7']==1][col]))
b.append(np.mean(data08[data08['dpd7']==1][col]))
c=[]###不逾期
c.append(np.mean(data05[data05['dpd7']==0][col]))
c.append(np.mean(data06[data06['dpd7' ]==0][col]))
c.append(np.mean(data07[data07['dpd7']==0][col]))
c.append(np.mean(data08[data08['dpd7']==0][col]))
return a, b, c
simple=data[data['seg']=="simple"]
recall=data[data['seg']=="recall"]
normal=data[data['seg']=="normal"]
import matplotlib.pyplot as plt
def ccsubplot(col):
[t1,t2,t3]=avgsix(data,col)
[s1,s2,s3]=avgsix(simple,col)##簡易
[r1,r2,r3]=avgsix(recall,col)###體驗
[n1,n2,n3]=avgsix(normal,col)###正常
x=[5,6,7,8]
x1=["May","Ju","Jul","Aug"]
plt.figure(figsize=(20,15))
plt.figure()
plt.subplot(2, 1, 1)
plt.plot(x,t1,"b-",label="total",linewidth=2)
plt.plot(x,s1,"g-x",label="simple",linewidth=2)
plt.plot(x,r1,"c-+",label="recall",linewidth=2)
plt.plot(x,n1,"r-*",label="normal",linewidth=2)
plt.xticks(x,x1)###修改座標軸標籤
plt.legend(loc='upper right')
plt.ylabel("avg")
plt.title(col,fontsize=15)
plt.subplot(2,2,3)
plt.plot(x,t2,"b-",label="total",linewidth=2)
plt.plot(x,s2,"g-x",label="simple",linewidth=2)
plt.plot(x,r2,"c-+",label="recall",linewidth=2)
plt.plot(x,n2,"r-*",label="normal",linewidth=2)
plt.xticks(x,x1)###修改座標軸標籤
plt.ylabel("avg")
plt.title("ever7+",fontsize=12)
plt.subplot(224)
plt.plot(x,t3,"b-",label="total",linewidth=2)
plt.plot(x,s3,"g-x",label="simple",linewidth=2)
plt.plot(x,r3,"c-+",label="recall",linewidth=2)
plt.plot(x,n3,"r-*",label="normal",linewidth=2)
plt.xticks(x,x1)###修改座標軸標籤
plt.ylabel("avg")
plt.title("not ever7+",fontsize=12)
plt.savefig(col+".jpg")
plt.tight_layout()
coll=data.columns
col=coll[16:len(coll)-2]
for i in col:
ccsubplot(i)