-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplot2
More file actions
237 lines (227 loc) · 11.8 KB
/
plot2
File metadata and controls
237 lines (227 loc) · 11.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
import numpy as np
import pandas as pd
#导入图表库以进行图表绘制
import matplotlib.pyplot as plt
#DataFrame(数据框)是一种二维的数据结构,非常接近于电子表格或者类似 mysql 数据库的形式。
#它的竖行称之为columns,横行称之为index
#pd.read_excel('loan_data.xlsx')读取excel里的值创建一个数据框
loanData=pd.DataFrame(pd.read_excel('loan_data.xlsx'))
ldDate=loanData.set_index('issue_d') #设置索引值
def TongJiPicture1():
#获得数据框中第'loan_amnt'列的值
loan_plot=ldDate['loan_amnt']
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=15)
#创建一个一维数组赋值给a
a=np.array([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14])
#创建折线图,数据源为按月贷款均值,标记点,标记线样式,线条宽度,标记点颜色和透明度
plt.subplot(2,1,1) #2*2的两幅图中的上图
#'EE5C42'表示颜色的rgb表示
plt.plot(loan_plot,'-^',color='#EE5C42',linewidth=3,markeredgewidth=3,markeredgecolor='#99CC01',alpha=0.8)
#添加x轴标签
plt.xlabel(u'月份') #u或U开头的字符串表示unicode字符串
#添加y周标签
plt.ylabel(u'贷款金额')
#添加图表标题
plt.title(u'分月贷款金额分布')
ax=plt.gca()
#添加图表网格线,设置网格线颜色,线形,宽度和透明度;axis='y'表示只在垂直方向有网格
plt.grid( color='#95a5a6',linestyle='--', linewidth=1 ,axis='y',alpha=0.4)
#设置数据分类名称
plt.xticks(a)
ax.set_xticklabels( ('2014年1月','2月','3月','4月','5月','6月','7月','8月','9月',
'10月',u'11月','12月','2015年1月','2月','3月'),rotation=15)
#输出图表
plt.show()
#柱状图
#按用户等级对'grade'字段进行分组,并对贷款金额'loan_amnt'进行求和汇总
#使用aggregate()或agg()函数调用自定义函数或者直接调用诸如mean,std之类的方法进行聚合运算
loan_grade=ldDate.groupby('grade')['loan_amnt'].agg('sum')
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=15)
#创建一个一维数组赋值给a
a=np.array([1,2,3,4,5,6])
plt.subplot(2,1,2) #2*2的两幅图中的下图
#创建柱状图,数据源为按用户等级汇总的贷款金额,设置颜色,透明度和外边框颜色
plt.bar([1,2,3,4,5,6],loan_grade,color='#76EEC6',alpha=0.8,align='center',edgecolor='white')
#设置x轴标签
plt.xlabel(u'用户等级')
#设置y周标签
plt.ylabel(u'贷款金额')
#设置图表标题
plt.title(u'不同用户等级的贷款金额分布')
#设置图例的文字和在图表中的位置
plt.legend([u'贷款金额'], loc='upper right')
#设置背景网格线的颜色,样式,尺寸和透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='y',alpha=0.4)
#设置数据分类名称
plt.xticks(a,(u'A级',u'B级',u'C级',u'D级',u'E级',u'F级'))
#显示图表
plt.show()
def TongJiPicture2():
#条形图
#按用户等级grade字段对贷款金额进行求和汇总
#使用aggregate()或agg()函数调用自定义函数或者直接调用诸如mean,std之类的方法进行聚合运算
loan_grade=ldDate.groupby('grade')['loan_amnt'].agg(sum)
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=15)
#创建一个一维数组赋值给a
a=np.array([1,2,3,4,5,6])
plt.subplot(1,2,1) #2*2的四幅图中第一行的左图
#创建柱状图,数据源为按用户等级汇总的贷款金额,设置颜色,透明度和外边框颜色
plt.barh([1,2,3,4,5,6],loan_grade,color='#B03060',alpha=0.8,align='center',edgecolor='white')
#设置x轴标签
plt.ylabel(u'用户等级')
#设置y周标签
plt.xlabel(u'贷款金额')
#设置图表标题
plt.title(u'不同用户等级的贷款金额分布')
#设置图例的文字和在图表中的位置
plt.legend([u'贷款金额'], loc='upper right')
#设置背景网格线的颜色,样式,尺寸和透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='x',alpha=0.8)
#设置数据分类名称
plt.yticks(a,(u'A级',u'B级',u'C级',u'D级',u'E级',u'F级'))
#显示图表
plt.show()
#饼图
#按用户等级grade字段对贷款金额进行求和汇总
loan_grade=ldDate.groupby('grade')['loan_amnt'].agg(sum)
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=15)
#设置饼图中每个数据分类的名称
name=[u'A级', u'B级', u'C级', u'D级', u'E级',u'F级']
plt.subplot(1,2,2) #2*2的四幅图中第一行的左图
#创建饼图,设置分类标签,颜色。explode=(0, 0, 0, 0, 0.2, 0.2)表示将后两个元素拉出饼图,
#范围在0-1之间,数越大,表示拉出距离越大。startangle=60表示饼图其实角度为60度
plt.pie(loan_grade,labels=name,colors=["#99CC01","#FFFF01","#0000FE","#FE0000","#00CD00",
"#8A2BE2"],explode=(0, 0, 0, 0, 0.2, 0.2),startangle=60,autopct='%1.1f%%')
#添加图表标题
plt.title(u'不同用户等级的贷款金额占比')
#添加图例,并设置显示位置
plt.legend(name, loc='upper left')
#显示图表
plt.show()
def TongJiPicture3():
#按月汇总贷款金额,以0填充空值
xDaikuan=ldDate['loan_amnt']
#按月汇总利息金额,以0填充空值
yLixi=ldDate['total_rec_int']
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=13)
plt.subplot(2,1,1) #2*1的2幅图中第一幅图
plt.subplots_adjust(left=0.13, bottom=0.1, right=0.95,top=0.9,wspace=0, hspace=0.5)
#pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None,
#vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, facecolors=None
#edgecolors=None, hold=None, data=None, **kwargs)
#x,y分别表示点的x序列和y序列,scalar(s)表示散点的大小,color(c)表示散点的颜色
#marker表示散点的形状,cmap设置散点周围的颜色,norm表示点的亮度(范围在0-1之间)
#verts为(x,y)的序列,如果没有设置marker,那这些顶点将被用于构建散点形状。
#创建散点图,贷款金额为xDaikuan,利息金额为yLixi,s=70表示散点大小;设置颜色,标记点样式和透明度等
plt.scatter(xDaikuan,yLixi,s=70,color='white',marker='o',edgecolors='#FF1493',linewidth=3,alpha=0.8)
#添加x轴标题
plt.xlabel(u'贷款金额')
#添加y轴标题
plt.ylabel(u'利息收入')
#添加图表标题
plt.title(u'客户的贷款金额与利息收入的散点图',Fontsize=13)
#设置背景网格线的颜色,样式,和透明度。axis表示在x轴还是y轴上有网格,或两轴都有。
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='both',alpha=0.7)
#显示图表
plt.show()
#气泡图
#按月汇总贷款金额及利息.代码中M表示聚合方式是按月,how表示数据的计算方式,默认是计算平均值
#按月汇总贷款金额,以0填充空值
loan_x=ldDate['loan_amnt'].resample('M').sum().fillna(0)
#按月汇总利息金额,以0填充空值
loan_y=ldDate['total_rec_int'].resample('M').sum().fillna(0)
loan_z=ldDate['total_rec_int'].resample('M').sum().fillna(0)
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=13)
#设置气泡图颜色
plt.subplot(2,1,2) #2*1的2幅图中第二幅图
colors = ["#76EE00","#FFFF01","#0000FE","#D02090","#C71585","#D9E021",'#00EEEE','#0D8ECF',
'#FA4D3D','#D2D2D2','#FFDE45','#383838']
#创建气泡图贷款金额为x,利息金额为y,同时设置利息金额为气泡大小,并设置颜色透明度等。
plt.scatter(loan_x,loan_y,s=loan_z,color=colors,alpha=0.6)
#添加x轴标题
plt.xlabel('每月贷款金额')
#添加y轴标题
plt.ylabel('每月利息收入')
#添加图表标题
plt.title('本公司每月贷款金额与利息收入对应图',Fontsize=13)
#设置背景网格线的颜色,样式,尺寸和透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='both',alpha=0.4)
#显示图表
plt.show()
def TongJiPicture4():
#箱线图
# 箱形图有5个参数:
# 下边缘(Q1),表示最小值;
# 下四分位数(Q2),又称“第一四分位数”,等于该样本中所有数值由小到大排列后第25%的数字;
# 中位数(Q3),又称“第二四分位数”等于该样本中所有数值由小到大排列后第50%的数字;
# 上四分位数(Q4),又称“第三四分位数”等于该样本中所有数值由小到大排列后第75%的数字;
# 上边缘(Q5),表述最大值。
# 第三四分位数与第一四分位数的差距又称四分位间距。
#箱线图中位数越高,则整体情况越好;箱子越短,数据分布越集中;中位数距离上下四位数的间距越接近,数据越对称
#图表字体为华文细黑,字号为15
plt.rc('font', family='STXihei', size=15)
#六个参数的取值范围都为0到1。left=0.1表示子图距离左边界0.1个单位;bottom=0.1表示子图距离下边界0.1个单位;
#right=0.95表示子图距离图像右边界(1-0.95)个单位;top=0.9表示子图距离图像上边界1-0.9个单位;
#wspace,hspace分别控制子图之间的水平间距和垂直间距用占轴长的比例表示
plt.subplots_adjust(left=0.1, bottom=0.1, right=0.95,top=0.9,wspace=0.25, hspace=0)
plt.subplot(1,2,1) #1*2的2幅图中第一幅图
#创建箱线图,数据源为贷款来源,设置横向显示
Bp=plt.boxplot(ldDate['loan_amnt'], patch_artist=True,vert=True)
#设置箱体的颜色和宽度
for box in Bp['boxes']:
# change outline color
box.set( color='#1874CD', linewidth=2)
# change fill color
box.set( facecolor = '#7FFF00' )
# 设置上下边缘的颜色和宽度
for cap in Bp['caps']:
cap.set(color='r', linewidth=2)
#设置箱线的颜色和宽度
for whisker in Bp['whiskers']:
whisker.set(color='#8B7D6B',linestyle="--",linewidth=2)
# 设置中位数线的宽度和颜色
for median in Bp['medians']:
median.set(color='k', linewidth=2.5)
# 设置异常点的颜色和形状
for flier in Bp['fliers']:
flier.set(marker='o', color='#e7298a', alpha=0.5)
#添加x轴标题
plt.xlabel('贷款金额')
plt.title('贷款金额分布')
#设置背景网格线的颜色,样式,尺寸和透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='both',alpha=0.4)
#显示图表
plt.show()
#直方图
#图表字体为华文细黑,字号为15;plt.rc()设置图表后面的一些特性
plt.rc('font', family='STXihei', size=15)
plt.subplot(1,2,2) #1*2的2幅图中第一幅图 #1*2的2幅图中第二幅图
#创建直方图,数据源为贷款金额,bins=8:指定直方图的矩形个数;normed=True表示被归一化以形成概率密度;
#histtype : ['bar' | 'barstacked' | 'step' | 'stepfilled'];设置矩形的宽度,颜色和透明度等
plt.hist(ldDate['loan_amnt'],bins=7,normed=True, histtype='bar',facecolor='#CD00CD',
rwidth=0.9,alpha=0.8,edgecolor='white')
#添加x轴标题
plt.xlabel('贷款金额')
#添加y轴标题
plt.ylabel('概率密度')
#添加图表标题
plt.title('贷款金额概率密度')
#设置背景网格线的颜色,样式,尺寸和透明度
plt.grid(color='#95a5a6',linestyle='--', linewidth=1,axis='y',alpha=0.4)
#显示图表
plt.show()
plt.close('all') #关闭所有图
#plt.figure(1)
#TongJiPicture1()
#plt.figure(2)
#TongJiPicture2()
#plt.figure(3)
#TongJiPicture3()
plt.figure(4)
TongJiPicture4()