diff --git a/main.py b/main.py deleted file mode 100644 index 5a74688..0000000 --- a/main.py +++ /dev/null @@ -1,91 +0,0 @@ -import pandas as pd -import numpy as np - -print("2021142108 林俊聪") - -def dropnullstd(data): - print("删除前的的形状为:", data.shape) - before = data.shape[1] - colisNull = data.describe().loc["count"] == 0 - for i in range(len(colisNull)): - if colisNull[i]: - data.drop(labels=colisNull.index[i], axis=1, inplace=True) - stdisZero = data.describe().loc["std"] == 0 - for j in range(len(stdisZero)): - if stdisZero[j]: - data.drop(labels=stdisZero.index[j], axis=1, inplace=True) - after = data.shape[1] - print("删除后数据的形状为:", data.shape) - -def transformdayintominute(data): - for i in range(0, len(data)): - data[i] = data[i].total_seconds()/60 - return data - -def transformdayintohour(data): - for i in range(0, len(data)): - data[i] = data[i].total_seconds() / 3600 - return data - -# 1.读取并查查看P2P网络带宽数据主表Training_Master的基本信息 -data = pd.read_csv("Training_Master.csv") -print("主表的维度为:", data.ndim) -print("主表的形状为:", data.shape) -print("主表的内存为:", data.memory_usage()) - -# describe方法 -print("主表的描述性统计为:", data.describe()) - - -# 删除值相同或者全空的列 -dropnullstd(data) - - -# 2.提取用户信息更新表Training_Userupdate和登录信息表Training_LogInfo的时间信息: -data2 = pd.read_csv("Training_Userupdate.csv") -data3 = pd.read_csv("Training_LogInfo.csv") - - -# 使用to_datetime函数转换用户信息更新表和登录信息表的时间字符串。 -data2["ListingInfo1"] = pd.to_datetime(data2["ListingInfo1"]) -data2["UserupdateInfo2"] = pd.to_datetime(data2["UserupdateInfo2"]) - -data3["Listinginfo1"] = pd.to_datetime(data3["Listinginfo1"]) -data3["LogInfo3"] = pd.to_datetime(data3["LogInfo3"]) - - -# 使用year、 month、week等方法提取用户信息更新表和登录信息表中的时间信息 -year = [i.year for i in data2["ListingInfo1"].head()] -print("ListingInfo1中的前5个年份信息:", year[:5]) -month = [i.month for i in data2["ListingInfo1"].head()] -print("ListingInfo1中的前5个月份信息:", month[:5]) -week = [i.week for i in data2["ListingInfo1"].head()] -print("ListingInfo1中的前5个星期信息:", week[:5]) -day = [i.day for i in data2["ListingInfo1"].head()] -print("ListingInfo1中的前5个日期信息:", day[:5]) - - -#计算用户信息更新表和登录信息表中两时间的差,分别以日、小时、分钟计算 -timeDeltaUserupdate=data2["ListingInfo1"] - data2["UserupdateInfo2"] -print("计算时间差以日期为单位:\n", timeDeltaUserupdate.head()) -print("计算时间差以小时为单位:\n", transformdayintohour(timeDeltaUserupdate).head()) -timeDeltaUserupdate=data2["ListingInfo1"] - data2["UserupdateInfo2"] -print("计算时间差以分钟为单位:\n", transformdayintominute(timeDeltaUserupdate).head()) - - -# 3.使用分组聚合方法进一步分析用户信息更新表和登录信息表 -# 使用groupby方法对用户信息更新表和登录信息表进行分组 -UserupdateGroup = data2[["Idx", "UserupdateInfo2"]].groupby(by="Idx") -LogInfoGroup = data3[["Idx", "LogInfo3"]].groupby(by="Idx") -print('分组后的用户信息更新表为:', UserupdateGroup.head()) -print('分组后的登录信息表为:', LogInfoGroup.head()) - - -# 使用agg方法求取分组后的最早和最晚更新及登录时间 -print("分组后最早更新时间:", UserupdateGroup.agg(np.min).head()) -print("分组后最晚更新时间:", UserupdateGroup.agg(np.max).head()) - - -# 使用size方法求取分组后的数据的信息更新次数与登录次数 -print("分组后信息更新次数:", UserupdateGroup.size().head()) -print("分组后登录次数:", LogInfoGroup.size().head()) \ No newline at end of file