目录
一、问题描述
1.读取并查查看P2P网络带宽数据主表Training_Master的基本信息
2.提取用户信息更新表Training_Userupdate和登录信息表Training_LogInfo的时间信息:
3使用分组聚合方法进一步分析用户信息更新表和登录信息表
二、实验代码
1.读取并查查看P2P网络带宽数据主表Training_Master的基本信息
2.提取用户信息更新表Training_Userupdate和登录信息表Training_LogInfo的时间信息:
3使用分组聚合方法进一步分析用户信息更新表和登录信息表
数据文件下载链接:
①:Training_Master.csv
②:Training_Userupdate.csv
③:Training_LogInfo.csv
(下载积分已改为0,请下载)
一、问题描述
1.读取并查查看P2P网络带宽数据主表Training_Master的基本信息
要求如下:
(1)使用ndim、shape、memory_useage属性分别查看维度、大小、占用内存信息
(2)使用describe方法进行描述性统计,并剔除值相同或全为空的列。
2.提取用户信息更新表Training_Userupdate和登录信息表Training_LogInfo的时间信息:
(1)使用to_datetime函数转换用户信息更新表和登录信息表的时间字符串
(2)使用year、month、week等方法提取用户信息更新表和登录信息表中的时间信息。
(3)计算用户信息更新表和登录信息表中两时间的差,分别以日、小时、分钟计算。
3使用分组聚合方法进一步分析用户信息更新表和登录信息表
(1)使用groupby方法对用户信息更新表和登录信息表进行分组
(2)使用agg方法求取分组后的最早和最晚及登录时间
(3)使用size方法求取分组后的数据信息更新次数与登录次数
二、实验代码
1.读取并查查看P2P网络带宽数据主表Training_Master的基本信息
'''
(1)使用ndim、shape、memory_useage属性
分别查看维度、大小、占用内存信息
'''
import pandas as pd
data = pd.read_csv("H:\Training_Master.csv")
#print(data)#输出数据以查看是否导入成功。
#查看主表信息的维度
print("主表信息的维度为:",data.ndim)
#查看主表信息的大小
print("主表信息的大小为:",data.shape)
#查看出表信息的占用内存信息
print("主表信息的占用内存信息是:n",data.memory_usage())
'''
(2)使用describe方法进行描述性统计,
并剔除值相同或全为空的列。
'''
import pandas as pd
data = pd.read_csv("H:\Training_Master.csv")
#print(data)#输出数据以查看是否导入成功。
#使用describe方法进行描述性统计
a_describe = data.describe()
print("使用describe方法进行描述性统计:",a_describe)
print("-------------分割线------------")
#剔除值相同或全为空的列
##定义剔除方法
bef = data.shape
print("剔除数据前主表的形状:",bef)
def del_The_sameandnull(data):
The_Null=data.describe().loc["count"]==0
for i in range(0,len(The_Null)):
if The_Null[i]:
data.drop(labels=The_Null.index[i],axis=1,inplace=True)
THe_Std=data.describe().loc["std"]==0
for j in range(0,len(THe_Std)):
if THe_Std[j]:
data.drop(labels=THe_Std.index[j],axis=1,inplace=True)
fin = data.shape
print("剔除数据后主表的形状:",fin)
#执行剔除方法
del_The_sameandnull(data)
2.提取用户信息更新表Training_Userupdate和登录信息表Training_LogInfo的时间信息:
'''
(1)使用to_datetime函数转换用户信息更新表和登录信息表的时间字符串
'''
import pandas as pd
User_data = pd.read_csv("H:\Training_Userupdate.csv",encoding="gbk")
Log_data = pd.read_csv("H:\Training_LogInfo.csv",encoding="gbk")
#print(Userupdate)#输出数据以查看是否导入成功。
#print(LogInfo)#输出数据以查看是否导入成功。
#使用to_datetime函数转换用户信息更新表的时间字符串
User_data['ListingInfo1'] = pd.to_datetime(User_data['ListingInfo1'])
User_data['UserupdateInfo2'] = pd.to_datetime(User_data['UserupdateInfo2'])
#使用to_datetime函数转换登录信息表的时间字符串
Log_data['Listinginfo1'] = pd.to_datetime(Log_data['Listinginfo1'])
Log_data['LogInfo3'] = pd.to_datetime(Log_data['LogInfo3'])
'''
(2)使用year、month、week等方法提取用户信息更新表和登录信息表中的时间信息。
'''
import pandas as pd
User_data = pd.read_csv("H:\Training_Userupdate.csv",encoding="gbk")
Log_data = pd.read_csv("H:\Training_LogInfo.csv",encoding="gbk")
#print(Userupdate)#输出数据以查看是否导入成功。
#print(LogInfo)#输出数据以查看是否导入成功。
#使用to_datetime函数转换用户信息更新表的时间字符串
User_data['ListingInfo1'] = pd.to_datetime(User_data['ListingInfo1'])
User_data['UserupdateInfo2'] = pd.to_datetime(User_data['UserupdateInfo2'])
#使用to_datetime函数转换登录信息表的时间字符串
Log_data['Listinginfo1'] = pd.to_datetime(Log_data['Listinginfo1'])
Log_data['LogInfo3'] = pd.to_datetime(Log_data['LogInfo3'])
##使用year、month、week等方法提取用户信息更新表中的时间信息。
###使用year方法
year=[i.year for i in User_data["ListingInfo1"]]
print("ListingInfo1中的第三到六个年份信息:",year[2:6])
###使用month方法
month=[i.month for i in User_data["ListingInfo1"]]
print("ListingInfo1中的前三条月份信息:",month[:3])
###使用week方法
week=[i.week for i in User_data["ListingInfo1"]]
print("ListingInfo1中的前十条周信息:",week[:10])
###使用day方法
day=[i.day for i in User_data["ListingInfo1"]]
print("ListingInfo1中的第三到十条周信息:",day[2:10])
print("----------------华丽的分割线-----------------")
##使用year、month、week等方法提取登录信息表中的时间信息。
###使用year方法
year=[i.year for i in Log_data["Listinginfo1"]]
print("ListingInfo1中的第三到六个年份信息:",year[2:6])
###使用month方法
month=[i.month for i in Log_data["Listinginfo1"]]
print("ListingInfo1中的前三条月份信息:",month[:3])
###使用week方法
week=[i.week for i in Log_data["Listinginfo1"]]
print("ListingInfo1中的前十条周信息:",week[:10])
###使用day方法
day=[i.day for i in Log_data["Listinginfo1"]]
print("ListingInfo1中的第三到十条周信息:",day[2:10])
'''
(3)计算用户信息更新表和登录信息表中两时间的差,分别以日、小时、分钟计算。
'''
import numpy as np
import pandas as pd
User_data = pd.read_csv("H:\Training_Userupdate.csv",encoding="gbk")
Log_data = pd.read_csv("H:\Training_LogInfo.csv",encoding="gbk")
#print(Userupdate)#输出数据以查看是否导入成功。
#print(LogInfo)#输出数据以查看是否导入成功。
#使用to_datetime函数转换用户信息更新表的时间字符串
User_data['ListingInfo1'] = pd.to_datetime(User_data['ListingInfo1'])
User_data['UserupdateInfo2'] = pd.to_datetime(User_data['UserupdateInfo2'])
#使用to_datetime函数转换登录信息表的时间字符串
Log_data['Listinginfo1'] = pd.to_datetime(Log_data['Listinginfo1'])
Log_data['LogInfo3'] = pd.to_datetime(Log_data['LogInfo3'])
#计算用户信息更新表和登录信息表中两时间的差
time = User_data["ListingInfo1"] - Log_data["Listinginfo1"]
##以日计算
as_day = time[:15].values/np.timedelta64(1, 'D')
print("以日为单位进行计算:",as_day)
##以小时计算
as_hour = time[:15].values/np.timedelta64(1, 'h')
print("以小时为单位进行计算:",as_hour)
##以分钟计算
as_min = time[:15].values/np.timedelta64(1, 'm')
print("以分钟为单位进行计算:",as_min)
3使用分组聚合方法进一步分析用户信息更新表和登录信息表
'''
(1)使用groupby方法对用户信息更新表和登录信息表进行分组
(2)使用agg方法求取分组后的最早和最晚及登录时间
(3)使用size方法求取分组后的数据信息更新次数与登录次数
'''
import numpy as np
import pandas as pd
User_data = pd.read_csv("H:\Training_Userupdate.csv",encoding="gbk")
Log_data = pd.read_csv("H:\Training_LogInfo.csv",encoding="gbk")
#print(Userupdate)#输出数据以查看是否导入成功。
#print(LogInfo)#输出数据以查看是否导入成功。
#使用groupby方法对用户信息更新表和登录信息表进行分组
User_dataGroup=User_data[["Idx","UserupdateInfo2"]].groupby(by="Idx")
Log_dataGroup=Log_data[["Idx","LogInfo3"]].groupby(by="Idx")
print("----------------------华丽的分割线---------------------")
#使用agg方法求取分组后的最早和最晚及登录时间
print("分组后最早更新时间:n",User_dataGroup.agg(np.min))
print("分组后最晚更新时间:n",User_dataGroup.agg(np.max))
print("----------------------华丽的分割线---------------------")
#使用size方法求取分组后的数据信息更新次数与登录次数
print("分组后信息更新次数:n",User_dataGroup.size())
print("分组后登录次数:n",Log_dataGroup.size())