2003031108—黄江—Python数据分析五一假期作业
| 项目 | 内容 |
| 课程班级博客链接 | 20级数据班 |
| 作业要求链接 | python作业 |
| 博客名称 | 2003031108—黄江—Python数据分析五一假期作业 |
| 要求 | 每道题要有题目,代码(使用插入代码,不会插入代码的自己查资料解决,不要直接截图代码!!),截图(只截运行结果)。 |
作业:
把期中考试代码看懂、运行并调通,要求每一行 或 每个重要功能写上注释。
一、分析1996~2015年人口数据特征间的关系
import numpy as np import matplotlib.pyplot as plt data = np.load('C:/Users/huangjiang/Desktop/数据库/populations.npz', allow_pickle=True) print(data.files) print(data['data']) print(data['feature_names']) plt.rcParams['font.sans-serif'] = 'SimHei' # 设置中文显示 name = data['feature_names'] values = data['data'] p1 = plt.figure(figsize=(15, 15)) pip1 = p1.add_subplot(2, 1, 1) # 创建一个2行1列的子图,并开始绘制第一幅 plt.scatter(values[0:20, 0], values[0:20, 1], marker='+', color='pink') 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='red') plt.scatter(values[0:20, 0], values[0:20, 5], marker='s', color='blue') plt.xlabel('时间');plt.ylabel('总人口(万人)') plt.xticks(values[0:20, 0]) plt.title("1996~2015年人口数据特征间散点图") plt.legend(['年末', '男性', '女性', '城镇', '乡村']) plt.savefig("C:/Users/huangjiang/Desktop/数据库/1996~2015年人口数据特征间散点图.png") plt.show() p1 = plt.figure(figsize=(15, 15)) pip1 = p1.add_subplot(2, 1, 2) # 创建一个2行1列的子图,并开始绘制第一幅 plt.plot(values[0:20, 0], values[0:20, 1], 'r-') plt.plot(values[0:20, 0], values[0:20, 2], 'b-') plt.plot(values[0:20, 0], values[0:20, 3], 'y--') plt.plot(values[0:20, 0], values[0:20, 4], 'k--') plt.plot(values[0:20, 0], values[0:20, 5], 'r:') plt.xlabel('时间');plt.ylabel('总人口(万人)') plt.xticks(values[0:20, 0]) plt.title("1996~2015年人口数据特征间折线图") plt.legend(['年末', '男性', '女性', '城镇', '乡村']) plt.savefig("C:/Users/huangjiang/Desktop/数据库/1996~2015年人口数据特征间折线图.png") plt.show()
populations.npz下载地址:https://pan.baidu.com/s/1B6qdSCLlYXJ2-UgyZ7pM5g
(PyCharm)运行结果:

(散点图)
(折线图)

二、读取并查看P2P网络贷款数据主表的基本信息
要求:下载Training_Master .csv
import os import pandas as pd master = pd.read_csv('C:/Users/huangjiang/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())
运行结果:

三、提取用户信息更新表和登录信息表的时间信息
import pandas as pd LogInfo = pd.read_csv('C:/Users/huangjiang/Desktop/数据库/Training_LogInfo.csv',encoding='gbk') Userupdate = pd.read_csv('C:/Users/huangjiang/Desktop/数据库/Training_Userupdate.csv',encoding='gbk') # 转换时间字符串 LogInfo['Listinginfo1']=pd.to_datetime(LogInfo['Listinginfo1']) LogInfo['LogInfo3']=pd.to_datetime(LogInfo['LogInfo3']) print('转换登录信息表的时间字符串前5行:\n',LogInfo.head()) Userupdate['ListingInfo1']=pd.to_datetime(Userupdate['ListingInfo1']) Userupdate['UserupdateInfo2']=pd.to_datetime(Userupdate['UserupdateInfo2']) print('转换用户信息更新表的时间字符串前5行:\n',Userupdate.head())
运行结果:

四、使用分组聚合方法进一步分析用户信息更新表和登录信息表
import pandas as pd import numpy as np LogInfo = pd.read_csv('C:/Users/huangjiang/Desktop/数据库/Training_LogInfo.csv',encoding='gbk') Userupdate = pd.read_csv('C:/Users/huangjiang/Desktop/数据库/Training_Userupdate.csv',encoding='gbk') # 使用groupby方法对用户信息更新表和登录信息表进行分组 LogGroup = LogInfo[['Idx','LogInfo3']].groupby(by = 'Idx') UserGroup = Userupdate[['Idx','UserupdateInfo2']].groupby(by = 'Idx') #代码18-2 # 使用agg方法求取分组后的最早,最晚,更新登录时间 print('分组后的最早登录时间为:\n',LogGroup.agg(np.min)) print('分组后的最晚登录时间为:\n',LogGroup.agg(np.max)) print('分组后的最早更新时间为:\n',UserGroup.agg(np.min)) print('分组后的最晚更新时间为:\n',UserGroup.agg(np.max)) #代码18-3 # 使用size方法求取分组后的数据的信息更新次数与登录次数 print('分组后的数据的信息更新次数为:\n',LogGroup.size()) print('分组后的数据的登录次数为:\n',UserGroup.size())
运行结果:




浙公网安备 33010602011771号