一. 简答题(共1题,100分)
- (简答题, 100分)
文件bankpep.csv存放着银行储户的基本信息,数据格式如表4-7所示。

讯享网
通过绘图对这些客户数据进行可视化分析。
(1)客户年龄分布的直方图和密度图(见图4-25)。
(2)客户年龄和收入关系的散点图(见图4-26)。

图4-25 客户年龄分布

图4-26 按客户年龄和收入关系绘制的散点图
(3)绘制散点图观察客户(年龄、收入、孩子数)之间的关系,用对角线显示直方图(见图4-27)。
(4)按区域展示平均收入的柱状图,并显示标准差(见图4-28)。

图4-27 按客户年龄、收入、孩子数关系绘制的散点矩阵

图4-28 各区域客户的平均收入

(5)多子图绘制:客户中性别占比饼图,有车客户的性别占比饼图,按孩子数的客户占比饼图(见图4-29)。
(6)各性别、收入绘制的箱形图(见图4-30)。

图4-29 按性别、有车客户的性别、孩子数占比绘制的饼图

图4-30 按性别、收入绘制的箱形图
bankpep.csv
解题
import matplotlib.pyplot as plt import pandas as pd from pandas import DataFrame import numpy as np import matplotlib data = pd.read_csv('C:\\python\\bankpep.csv') # 1) plt.hist(data['age'],bins=10,density=True) data['age'].plot(kind='kde') plt.title('Customer Age') plt.xlabel('Age') plt.ylabel('Density') plt.show() # 2) plt.scatter(data['age'],data['income'],label = '(age,income)',marker=',',s=7) plt.grid(True) plt.xlim(0,80) plt.title('Customer Income') plt.legend() plt.xlabel('Age') plt.ylabel('Income') plt.show() # 3) pd.plotting.scatter_matrix(data[['age','income','children']]) plt.show() # 4) mean = data.groupby(['region']).agg({
'income':np.mean}) std = data.groupby(['region']).agg({
'income':np.std}) plt.bar(mean.index,mean.income,yerr=std.income,width=0.6) plt.xlabel('Recion') plt.title('Customer Income') plt.xticks(rotation=45) plt.show() # 5) fig=plt.figure(figsize=(6,6)) ax1=fig.add_subplot(2,2,1) list1=data.groupby(['sex'])['sex'].count() plt.pie(list1,labels=['FEMALE','MALE'],startangle = 45,autopct='%0.1f%%') plt.ylabel('sex') plt.title('Customer Sex') ax2=fig.add_subplot(2,2,2) list1=data[data['car'] =='YES'].groupby(['sex'])['sex'].count() plt.pie(list1,labels=['FEMALE','MALE'],startangle = 45,autopct='%0.1f%%') plt.ylabel('sex') plt.title('Customer Car Sex') ax3=fig.add_subplot(223) list1=data.groupby(['children'])['children'].count() plt.pie(list1,labels=[0,1,2,3],startangle = 45,autopct='%0.1f%%') plt.ylabel('Children') plt.title('Customer Children') plt.show() # 6) MALE = data[data['sex']=='MALE']['income'] FEMALE = data[data['sex']=='FEMALE']['income'] plt.boxplot([FEMALE,MALE],labels=['FEMALE','MALE']) plt.xlabel('[sex]') plt.title('Boxplot grouped by sex income') plt.grid(True) plt.show()
讯享网



版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/109455.html