dhu 数据科学与技术 第7次作业

一. 简答题(共1题,100分)

  1. (简答题, 100分)
    文件bankpep.csv存放着银行储户的基本信息,数据格式如表4-7所示。
    表4-7  bankpep.csv数据文件的数据格式
    通过绘图对这些客户数据进行可视化分析。
    (1)客户年龄分布的直方图和密度图(见图4-25)。
    (2)客户年龄和收入关系的散点图(见图4-26)。
    dhu 数据科学与技术 第7次作业_第1张图片
    图4-25 客户年龄分布
    dhu 数据科学与技术 第7次作业_第2张图片
    图4-26 按客户年龄和收入关系绘制的散点图

(3)绘制散点图观察客户(年龄、收入、孩子数)之间的关系,用对角线显示直方图(见图4-27)。
(4)按区域展示平均收入的柱状图,并显示标准差(见图4-28)。
dhu 数据科学与技术 第7次作业_第3张图片
图4-27 按客户年龄、收入、孩子数关系绘制的散点矩阵
dhu 数据科学与技术 第7次作业_第4张图片
图4-28 各区域客户的平均收入

(5)多子图绘制:客户中性别占比饼图,有车客户的性别占比饼图,按孩子数的客户占比饼图(见图4-29)。
(6)各性别、收入绘制的箱形图(见图4-30)。
dhu 数据科学与技术 第7次作业_第5张图片
图4-29 按性别、有车客户的性别、孩子数占比绘制的饼图
dhu 数据科学与技术 第7次作业_第6张图片
图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()

你可能感兴趣的:(dhu,python,python)