赞
踩
链接: https://pan.baidu.com/s/1GVQ5rv3ElNDLOkaDzuD6Jw 密码:5h6g
本文数据爬取了淘宝全网手机销售数据,其中包括:
Index | Column | Non-Null Count | Dtype |
---|---|---|---|
0 | 爬取时间(__time) | 1691 non-null | object |
1 | 爬取链接(__url) | 1691 non-null | object |
2 | 商品ID(product_id) | 1691 non-null | int64 |
3 | 商品名称(name) | 1691 non-null | object |
4 | 商品描述(description) | 1587 non-null | object |
5 | 商品参数(params) | 1691 non-null | object |
6 | 商品现价(current_price) | 1691 non-null | object |
7 | 商品原价(original_price) | 1691 non-null | object |
8 | 月销量(month_sales_count) | 1684 non-null | float64 |
9 | 库存(stock) | 1675 non-null | float64 |
10 | 发货地址(shipping_address) | 1691 non-null | object |
11 | 商品发布时间(product_publish_time) | 1691 non-null | int64 |
12 | 店铺ID(shop_id) | 1691 non-null | int64 |
13 | 店铺名称(shop_name) | 1691 non-null | object |
14 | 商品链接URL(url) | 1691 non-null | object |
15 | 评分(总分5.0分)(score) | 1680 non-null | float64 |
16 | 收藏数(stores_count) | 1691 non-null | int64 |
17 | 累计评价数(comments_count) | 1679 non-null | float64 |
18 | 商品评价印象标签(impresses) | 1691 non-null | object |
19 | Unnamed: 19 | 0 non-null | float64 |
Index | Column | Non-Null Count | Dtype |
---|---|---|---|
0 | 图片(picNum) | 1232 non-null | float64 |
1 | 追评(used) | 1176 non-null | float64 |
2 | ID(id) | 1691 non-null | int64 |
3 | Unnamed: 3 | 0 non-null | float64 |
Index | Column | Non-Null Count | Dtype |
---|---|---|---|
0 | 商品ID(id) | 376760 non-null | int64 |
1 | 评价时间(time) | 376760 non-null | object |
2 | 评价内容(content) | 376759 non-null | object |
3 | 爬取链接(spurl) | 376760 non-null | object |
4 | 爬取时间(sptime) | 376760 non-null | object |
5 | Unnamed: 5 | 0 non-null | float64 |
import pandas as pd
import numpy as np
phone=pd.read_csv('cellphone.csv')
add_comments=pd.read_csv('count_add_comments.csv')
#删除空白列 phone=phone.drop(columns=['Unnamed: 19']) #先获取列名,在此基础上进行更改 phone.columns phone.columns=['爬取时间', '爬取链接', '商品ID', '商品名称', '商品描述', '商品参数', '商品现价', '商品原价', '月销量', '库存', '发货地址', '商品发布时间', '店铺ID', '店铺名称', '商品链接URL', '评分', '收藏数' ,'累计评价数', '商品评价印象标签'] #商品描述、月销量、库存、评分、累计评价数存在缺失 #查看月销量为0的商品信息 phone[phone['月销量'].isnull()].info() #对销量为零的数据进行 0 填充 phone['月销量']=phone['月销量'].fillna(0) #处理库存(0 填充)、评分(删除空白数据)、累计评价数(0填充) phone['库存']=phone['库存'].fillna(0) phone['累计评价数']=phone['累计评价数'].fillna(0) phone=phone.dropna(subset=['评分']) #重新梳理 index phone.index=np.arange(len(phone))
df=pd.merge(phone,add_comments,left_on='商品ID',right_on='ID(id)')
df.columns=['爬取时间', '爬取链接', '商品ID', '商品名称',
'商品描述', '商品参数', '商品现价',
'商品原价', '月销量', '库存',
'发货地址', '商品发布时间',
'店铺ID', '店铺名称', '商品链接URL', '评分',
'收藏数' ,'累计评价数', '商品评价印象标签','图片', '追评', 'ID(id)', 'Unnamed: 3']
df=df.drop(columns=['Unnamed: 3'])
df=df.drop(columns=['ID(id)'])
time.localtime():能将 int 格式的时间数据转化
如:time.localtime(1548475512)
输出结果:time.struct_time(tm_year=2019, tm_mon=1, tm_mday=26, tm_hour=12, tm_min=5, tm_sec=12, tm_wday=5, tm_yday=26, tm_isdst=0)
time.strftime(’%Y-%m-%d’,time.localtime(1548475512)):输出既定格式的时间信息;
输出结果:‘2019-01-26’
关于时间有关格式化信息
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00-59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身
import time
df['商品发布时间']=df['商品发布时间'].apply(lambda op:time.strftime('%Y-%m-%d',time.localtime(op)))
目前得到的‘商品现价’、‘商品原价’两列均为价格区间的表示格式,我们无法获取完整的价格,在此取其均值;
def get_price(s):
price=s.split('-')
l=[float(i) for i in price]
return np.mean(l)
df['商品现价']=df['商品现价'].apply(get_price)
df['商品原价']=df['商品原价'].apply(get_price)
目前发货城市数据为省+城市名的表示方式,我们要将省份+城市数据提取出来;
#获得中国全部的省级单位名称,找到全部的省级单位 #将每一个地址的省份提取出来,剩下的就是城市 pro_list=['北京', '天津', '上海', '重庆', '河北', '山西', '辽宁', '吉林', '黑龙江', '江苏', '浙江', '安徽', '福建', '江西', '山东', '河南', '湖北', '湖南', '广东', '海南', '四川', '贵州', '云南', '陕西', '甘肃', '青海', '台湾', '内蒙古', '广西', '西藏', '宁夏', '新疆', '香港', '澳门'] def get_city(address): for i in pro_list: if i in address: city=address.replace(i,'') if len(city)==0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。