2003031103—代春荣—Python数据分析五一假期作业—MySQL的安装以及使用
| 项目 | 内容 |
| 课程班级博客链接 | 20级数据班(本) |
| 这个作业要求链接 | Python数据分析五一假期作业 |
|
博客名称 |
2003031103—代春荣—Python数据分析五一假期作业—MySQL的安装以及使用 |
| 要求 | 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果)。 |
一、分析1996~2015年人口数据特征间的关系(1题50分,共50分)
考查知识点:掌握pyplot常用的绘图参数的调节方法;掌握子图的绘制方法;掌握绘制图形的保存与展示方法;掌握散点图和折线图的作用与绘制方法。
需求说明:
人口数据总共拥有6个特征,分别为年末总人口、男性人口、女性人口、城镇人口、乡村人口和年份。查看各个特征随着时间推移发生的变化情况可以分析出未来男女人口比例、城乡人口变化的方向。
截图如下:
要求:
(1)使用NumPy库读取人口数据。
(2)创建画布,并添加子图。
(3)在两个子图上分别绘制散点图和折线图。
(4)保存,显示图片。
(5)分析未来人口变化趋势
代码:
''' (1)使用NumPy库读取人口数据。 (2)创建画布,并添加子图。 (3)在两个子图上分别绘制散点图和折线图。 (4)保存,显示图片。 (5)分析未来人口变化趋势 ''' # 导入模块 import numpy as np import matplotlib.pyplot as plt #使⽤numpy库读取⼈⼝数据 data=np.load('C:/Users\HUAWEI\Desktop\考试\populations.npz',allow_pickle=True) print(data.files)#查看⽂件中的数组 print(data['data']) print(data['feature_names']) plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示 plt.rcParams['axes.unicode_minus'] = False# 防止字符无法显示 name=data['feature_names']#提取其中的feature_names数组,视为数据的标签 values=data['data']#提取其中的data数组,视为数据的存在位置 p1=plt.figure(figsize=(12,12))#确定画布⼤⼩ pip1=p1.add_subplot(2,1,1)#创建⼀个两⾏⼀列的⼦图并开始绘制 #在⼦图上绘制散点图 plt.scatter(values[0:20,0],values[0:20,1])#,marker='8',color='red' plt.ylabel('总人口(万⼈)') plt.legend('年末') plt.title('1996~2015年末与各类人口散点图') pip2=p1.add_subplot(2,1,2)#绘制⼦图2 plt.scatter(values[0:20,0],values[0:20,2])#,marker='o',color='yellow' plt.scatter(values[0:20,0],values[0:20,3])#,marker='D',color='green' plt.scatter(values[0:20,0],values[0:20,4])#,marker='p',color='blue' plt.scatter(values[0:20,0],values[0:20,5])#,marker='s',color='purple' plt.xlabel('时间') plt.ylabel('总人口(万人)') plt.xticks(values[0:20,0]) plt.legend(['男性','女性','城镇','乡村']) #在⼦图上绘制折线图 p2=plt.figure(figsize=(12,12)) p1=p2.add_subplot(2,1,1) plt.plot(values[0:20,0],values[0:20,1])#,linestyle = '-',color='r',marker='8' plt.ylabel('总人口(万人)') plt.xticks(range(0,20,1),values[range(0,20,1),0],rotation=45)#rotation设置倾斜度 plt.legend('年末') plt.title('1996~2015年末总与各类人口折线图') p2=p2.add_subplot(2,1,2) plt.plot(values[0:20,0],values[0:20,2])#,'y-' plt.plot(values[0:20,0],values[0:20,3])#,'g-.' plt.plot(values[0:20,0],values[0:20,4])#,'b-' plt.plot(values[0:20,0],values[0:20,5])#,'p-' plt.xlabel('时间') plt.ylabel('总人口(万人)') plt.xticks(values[0:20,0]) plt.legend(['男性','女性','城镇','乡村']) #显⽰图⽚ plt.show()
结果截图:




(5)分析未来人口变化趋势
答:根据折线图和散点图可以看出未来随着时间的改变,未来人口乡村人口逐渐转型为城镇人口,男女人口都在缓慢增加且比例将逐渐趋于平衡状态。
二、读取并查看P2P网络贷款数据主表的基本信息(1题10分,共10分)
考查知识点:掌握常见的数据读取方式;掌握DataFrame常用属性与方法;掌握基础时间数据处理方法;掌握分组聚合的原理与方法;掌握透视表与交叉表的制作。
需求说明:
P2P贷款主表数据主要存放了网贷用户的基本信息。探索数据的基本信息,能够洞察数据的整体分布、数据的类属关系、从而发现数据间的关联。
要求:
(1)使用ndim、shape、memory_usage属性分别查看维度、大小、占用内存信息。
代码:
'''
使用ndim、shape、memory_usage属性分别查看维度、大小、占用内存信息。
'''
# 导入模块
import os
import pandas as pd
# 导入数据
master = pd.read_csv('C:/Users\HUAWEI\Desktop\考试\Training_Master.csv',encoding='gbk')
print('P2P网络贷款主表数据的维度为:',master.ndim)
print('P2P网络贷款主表数据的形状大小为:',master.shape)
print('P2P网络贷款主表数据的占用内存为:',master.memory_usage)
#代码16-2
print('P2P网络贷款主表数据的描述性统计为:\n',master.describe())
运行结果截图:


三、提取用户信息更新表和登录信息表的时间信息(1题10分,共10分)
考查知识点:掌握常见的数据读取方式;掌握DataFrame常用属性与方法;掌握基础时间数据处理方法;掌握分组聚合的原理与方法;掌握透视表与交叉表的制作。
需求说明:
用户信息更新表和登录信息表汇总均存在大量的时间数据,提取时间数据内存在的信息,一方面可以加深对数据的理解,另一方面能够探索这部分信息和目标的关联程度。同时用户登录时间、借款成交时间、用户信息更新时间这些时间的时间差信息冶能反映出P2P网络贷款不同用户的行为信息。
要求:
(1)使用to_datetime函数转换用户信息更新表和登录信息表的时间字符串。
代码:
''' 使用to_datetime函数转换用户信息更新表和登录信息表的时间字符串 ''' import pandas as pd # 导入数据 User_data = pd.read_csv('C:/Users\HUAWEI\Desktop\考试\Training_Userupdate.csv', encoding="gbk") LogInfo_data = pd.read_csv('C:/Users\HUAWEI\Desktop\考试\Training_LogInfo.csv', encoding="gbk") # 使用to_datetime函数转换用户信息更新表的时间字符串 User_data['ListingInfo1'] = pd.to_datetime(User_data['ListingInfo1']) User_data['UserupdateInfo2'] = pd.to_datetime(User_data['UserupdateInfo2']) print('用户信息更新表的前4行数据为:\n',User_data.head(4)) # head()函数返回前n行数据,n默认等于5 # 使用to_datetime函数转换登录信息表的时间字符串 LogInfo_data['Listinginfo1'] = pd.to_datetime(LogInfo_data['Listinginfo1']) LogInfo_data['LogInfo3'] = pd.to_datetime(LogInfo_data['LogInfo3']) print('用户登录信息表的前4行数据为:\n',LogInfo_data.head(4))
运行结果截图:

四、使用分组聚合方法进一步分析用户信息更新表和登录信息表(1题30分,共30分)
考查知识点:掌握常见的数据读取方式;掌握DataFrame常用属性与方法;掌握基础时间数据处理方法;掌握分组聚合的原理与方法;掌握透视表与交叉表的制作。
需求说明:
分析用户信息更新表和登录信息表时,除了提取时间本身的信息外,还可以结合用户编号进行分组聚合,然后进行组内分析。通过组内分析可以得出每组组内的最早和最晚信息更新时间、最早和最晚登录时间、信息更新的次数、登录的次数等信息。
要求:
(1)使用groupby方法对用户信息更新表和登录信息表进行分组。
(2)使用agg方法求取分组后的最早和最晚更新及登录时间。
(3)使用size方法求取分组后的数据的信息更新次数与登录次数。
代码:
''' (1)使用groupby方法对用户信息更新表和登录信息表进行分组 (2)使用agg方法求取分组后的最早和最晚及登录时间 (3)使用size方法求取分组后的数据信息更新次数与登录次数 ''' import numpy as np import pandas as pd # 导入数据 User_data = pd.read_csv('C:/Users\HUAWEI\Desktop\考试\Training_Userupdate.csv', encoding="gbk") LogInfo_data = pd.read_csv('C:/Users\HUAWEI\Desktop\考试\Training_LogInfo.csv', encoding="gbk") # 使用groupby方法对用户信息更新表和登录信息表进行分组 User_dataGroup = User_data[["Idx", "UserupdateInfo2"]].groupby(by="Idx") Log_dataGroup = LogInfo_data[["Idx", "LogInfo3"]].groupby(by="Idx") # 使用agg方法求取分组后的最早和最晚及登录时间 print("分组后最早更新时间:\n", User_dataGroup.agg(np.min)) print("分组后最晚更新时间:\n", User_dataGroup.agg(np.max)) # 使用size方法求取分组后的数据信息更新次数与登录次数 print("分组后信息更新次数:\n", User_dataGroup.size()) print("分组后登录次数:\n", Log_dataGroup.size())
运行结果截图:




浙公网安备 33010602011771号