假如你有一份数据,有淘宝店铺的一些基本数据,比如店铺名称、发货地址、付款人数、评论数、商品价格、商品名称。由于爬取的数据较乱不能直接用于数据分析,所以要先进行数据清洗。数据如下大概如下:
(关于如何爬取可以参考前面博文python爬取淘宝评论)
加载数据
import pandas as pd
pro_data=pd.read_csv("taobaoproducts.csv",header=0)
pro_data
数据清洗:地址列
爬取的地址列是省+城市名,当然还有北京这种直辖市,这里我们要把城市和省份分开,分成两列,对于北京则让城市和省份都显示为北京。
def get_province(x):
if len(x)==2:
return x+"市"
else:
pro_list=x.split()
return pro_list[0]+"省"
def get_city(x):
if len(x)==2:
return x+"市"
else:
pro_list=x.split()
return pro_list[1]+"市"
pro_data["省份"]=pro_data["地址"].map(get_province)
pro_data["城市"]=pro_data["地址"].map(get_city)
pro_data.head()
#这里还可以将函数写成三元表达式
def get_province(x):
return x.split()[0]+"省" if len(x)>2 else x+"市"
pro_data["省份"]=pro_data["地址"].map(get_province)
pro_data
数据清洗:付款人数
这里只需要付款人数的数字,要把文字删除掉。
#第一种方法用str接口和正则表达式
pro_data["付款人数"]=pro_data["付款人数"].str.findall("\d+").str[0]
#第二种直接利用str接口
pro_data["付款人数"]=pro_data["付款人数"].str[:-3]
数据清洗:评论数
这里的评论数是小数,并且评论数会有缺失值,我们将它改为整型并填补缺失值。
pro_data["评论数"]=pro_data["评论数"].fillna(0)
pro_data["评论数"]=pro_data["评论数"].astype("int")
pro_data
最后可以做一些基础的数据分析,比如分省份计算销售量等,销售量的前五名:
turn_over=pro_data.groupby("省份")["付款人数"].agg([("销售量","sum")])
turn_over.sort_values(by="销售量",ascending=False,inplace=True)
turn_over.head()