【Python】参加淘宝天猫天池大数据比赛的代码解析(一)

最近报名参加了天池大数据比赛,题目是搭建一个推荐系统,我使用的是Python语言,挖掘的第一步是输入原始数据,折腾了很久才把数据按照期望的格式进行输入存储,在这里介绍一下
41 399 131001,58750,195405,23594,131035,43341,92435,18294,43299,43660,86400,25984,59461,91068
46 338 42453,52550,142033,64060,37355,92435,66180,122877,84899,186483,101916,178051,148830,43299,208642
116 396 200256,69355,92435,43341,132321,218736,140701,137354,91068,2110,26749,198110,195405,131001
121 221 19244,2592,77682,183335,18294,131001,154301,156739,25155,40127,195405,37355,44665
166 199 6603,55565,59009,141815,17823,56660,94566,168708,186022,47149,178981,40718,119433,143243
216 627 37355,11054,48817,127829,102013,18928,100780,205795,170954,61410,59606,145333,29836,18136,157099
236 235 198355,92344,92435,128535,165874,37355,104975,69042,202561,218532,103148,13817
246 220 131035,89627,92435,98279,189223,297,11054,116175,56022,78553,164790,86400,195405,34939
281 487 168887,183868,200798,165530,94632,188186,205124,109662,99521,109662,66980,131060,200762

 

  • 处理方法1:首先是在read_csv函数中设定converters参数,将第三列的数据转化成数组进行存储;另外是重新将read_csv获得的DataFrame的第三列进行拆分,重新赋值给新的DataFrame,问题顺利解决
import pandas as pd
def seq_item(s_items):
	# 将商品描述词分列,商品最多的商品描述分词数为33个
	return s_items.split(',')
def read_dim_items(read_rows = None):
	# 读入商品信息表,参数read_rows表示读入的行数,默认是全读
	dim_items = pd.read_table('dim_items\\dim_items.txt',header = None,sep = ' ',converters = {2:seq_item},index_col = [1,0],nrows = read_rows) 
	dim_items = pd.DataFrame(dim_items[2].tolist(),index = dim_items.index)
	return dim_items
  •  处理方法2:利用pandas自带的str.split函数进行拆分并重新赋值给新的df
def read_dim_items(read_rows = None):
	# 读入商品信息表,参数read_rows表示读入的行数,默认是全读
	# 第一列为商品ID(item_id),第二列为商品所属类目ID(cat_id),第三列为商品标题分词后的结果(items)
	dim_items = pd.read_table('dim_items\\dim_items.txt',header = None,sep = ' ',index_col = [1,0],nrows = read_rows)  # ,converters = {2:seq_item}
	dim_items = dim_items[2].str.split(',',expand = True)
	return dim_items
 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 答:要建立一个用Python编写的爬虫代码来采集大数据,可以使用Python中的urllib库或者requests库,然后使用BeautifulSoup来解析网页内容,最后将采集到的数据存入到数据库中。 ### 回答2: 要用Python建立一个采集大数据的爬虫代码,你可以使用Python中的爬虫库,如BeautifulSoup和Scrapy。 首先,你需要安装这些库,你可以使用pip命令来安装它们。在终端中运行以下命令来安装这些库: ``` pip install BeautifulSoup4 pip install Scrapy ``` 接下来,你可以创建一个Python脚本文件,并导入相关的库: ```python from bs4 import BeautifulSoup import requests import csv ``` 然后,你可以定义一个函数来采集网页数据,例如: ```python def scrape_data(url): # 发起请求并获取网页内容 response = requests.get(url) # 使用BeautifulSoup解析网页内容 soup = BeautifulSoup(response.text, "html.parser") # 根据网页结构,提取所需数据 data = [] # ... # 将数据存储到CSV文件中 with open("data.csv", "w", encoding="utf-8", newline="") as csvfile: writer = csv.writer(csvfile) writer.writerow(["Column 1","Column 2","Column 3"]) # 根据需要定义列名 writer.writerows(data) ``` 在这个函数中,你需要替换`url`参数为你要采集数据的网页URL。然后,你可以使用`requests`库发起HTTP请求,并使用`BeautifulSoup`库解析网页内容。 根据具体的网页结构,你可以使用BeautifulSoup的各种方法来提取所需的数据。将数据存储到一个列表中。 最后,你可以使用`csv`库将数据存储到CSV文件中,方便后续处理。 你可以在主程序中调用这个函数并传入相应的URL: ```python if __name__ == "__main__": url = "http://example.com" # 替换为你要采集数据的网页URL scrape_data(url) ``` 以上是使用Python建立一个采集大数据的爬虫代码的示例。当然,在实际应用中,你还可以根据具体需求进行更加复杂的网络请求、页面解析和数据处理。 ### 回答3: 用Python编写一个爬虫代码来采集大数据可以分为以下几个步骤: 1. 导入所需的库和模块,如requests、beautifulsoup等。 2. 创建一个函数,命名为"爬虫数据",用来处理请求并抓取网页内容。在函数内部,使用requests库发送HTTP请求,并将返回的响应保存在一个变量中。 3. 使用beautifulsoup库解析网页内容,并提取所需的数据。可以使用find()或find_all()方法来查找特定的HTML标签或CSS选择器,以定位并提取数据。将提取的数据保存在一个列表或字典中。 4. 可选步骤,如果需要采集多个网页的数据,可以使用循环或递归来遍历每个页面,并重复执行上述步骤。 5. 最后,将提取的数据存储到CSV文件或数据库中,以供后续分析或使用。 以下是一个简单的示例代码: ```python import requests from bs4 import BeautifulSoup def 爬取数据(url): # 发送HTTP请求并保存响应 response = requests.get(url) # 解析网页内容 soup = BeautifulSoup(response.text, 'html.parser') # 提取所需的数据 数据列表 = [] 数据标签 = soup.find_all('span', class_='数据类别') for 数据 in 数据标签: 数据列表.append(数据.text) return 数据列表 # 测试代码 url = 'https://example.com' 数据 = 爬取数据(url) print(数据) ``` 需要注意的是,在实际应用中,还需要处理异常、设置延时和请求头等,以确保爬虫的可靠性和合法性。另外,需要遵守网站的规定和协议,以避免对服务器造成过大的压力或侵犯他人的合法权益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值