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())

运行结果:

 

 

 

 

posted @ 2022-05-04 00:10  简.平(J.P)  阅读(82)  评论(0)    收藏  举报