草庐IT

python实验三:P2P网络带宽数据主表Training_Master、用户信息更新表Training_Userupdate和登录信息表Training_LogInfo

密涅瓦de猫头鹰 2023-07-07 原文

目录

一、问题描述

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

 

有关python实验三:P2P网络带宽数据主表Training_Master、用户信息更新表Training_Userupdate和登录信息表Training_LogInfo的更多相关文章

  1. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  2. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby-on-rails - 使用 rails 4 设计而不更新用户 - 2

    我将应用程序升级到Rails4,一切正常。我可以登录并转到我的编辑页面。也更新了观点。使用标准View时,用户会更新。但是当我添加例如字段:name时,它​​不会在表单中更新。使用devise3.1.1和gem'protected_attributes'我需要在设备或数据库上运行某种更新命令吗?我也搜索过这个地方,找到了许多不同的解决方案,但没有一个会更新我的用户字段。我没有添加任何自定义字段。 最佳答案 如果您想允许额外的参数,您可以在ApplicationController中使用beforefilter,因为Rails4将参数

  5. ruby - Ruby 有 `Pair` 数据类型吗? - 2

    有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳

  6. ruby - 用 Ruby 编写一个简单的网络服务器 - 2

    我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b

  7. ruby-on-rails - 简单的 Ruby on Rails 问题——如何将评论附加到用户和文章? - 2

    我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。

  8. ruby - RVM "ERROR: Unable to checkout branch ."单用户 - 2

    我在新的Debian6VirtualBoxVM上安装RVM时遇到问题。我已经安装了所有需要的包并使用下载了安装脚本(curl-shttps://rvm.beginrescueend.com/install/rvm)>rvm,但以单个用户身份运行时bashrvm我收到以下错误消息:ERROR:Unabletocheckoutbranch.安装在这里停止,并且(据我所知)没有安装RVM的任何文件。如果我以root身份运行脚本(对于多用户安装),我会收到另一条消息:Successfullycheckedoutbranch''安装程序继续并指示成功,但未添加.rvm目录,甚至在修改我的.bas

  9. ruby - 我如何添加二进制数据来遏制 POST - 2

    我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_

  10. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

随机推荐