假如你有一份数据,有淘宝店铺的一些基本数据,比如店铺名称、发货地址、付款人数、评论数、商品价格、商品名称。由于爬取的数据较乱不能直接用于数据分析,所以要先进行数据清洗。数据如下大概如下:
(关于如何爬取可以参考前面博文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()

在这里插入图片描述

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐