zoukankan      html  css  js  c++  java
  • 天猫美妆数据清洗步骤概括

    一、天猫美妆数据清洗步骤概括

    01 准备工作

    # 导入数据
    data=pd.read_csv('双十一淘宝美妆数据.csv')
    

    02 检查数据

    • 对数据进行初步的了解
    • 查看数据的相关特征,对数据进一步分析
    # 查看前五行数据
    data.head()
    
    # 查看数据集的特征
    data.info()
    
    # 查看数据量
    data.shape
    
    # 查看各数字类型特征的一些统计量
    data.describe()
    
    # 查看一列的基本统计信息
    '''
    一共27598条数据
    唯一值:22条
    排名第一:悦诗风吟
    频率:3021 次
    '''
    data.店名.describe()
    

    image-20201020115450445

    # 查看某列的前几行数据
    data['店名'][:10]
    # 查看多列的前几行数据
    data[['title','店名']][:10]
    
    # where 条件过滤
    # 查看comment_count 列 评论数大于2000的数据
    data[data['comment_count']>2000]
    

    03 重复值处理

    # 去除重复数据 
    data.drop_duplicates(inplace=False)
    # 重置行索引
    data.reset_index(inplace=True,drop = True)
    data.shape
    

    04 缺失值处理

    '''
    通过上面观察数据发现sale_count,comment_count 存在缺失值,先观察存在缺失值的行的基本情况
    查看 sale_count列的空值
    '''
    data.loc[data['sale_count'].isnull()].head()
    
    # 查看 comment_count 列的空值情况  后五条数据
    data.loc[data['comment_count'].isnull()].tail()
    
    # 填充缺失值,用0填充空的值
    data=data.fillna(0)
    # 查看是否还有空值
    data.isnull().any()
    

    05 数据挖掘寻找新特征

    #使用jieba包对title进行分词,进一步了解每一个商品的特征
    import jieba 
    subtitle=[]
    for each in data['title']:
        k=jieba.lcut_for_search(each) ##搜索引擎模式
        subtitle.append(k)
    data['subtitle']=subtitle
    data[['title','subtitle']].head()
    

    image-20201020125042202

    data.loc[data['sub_type'] == '其他'].count() ##查看分类为其他的有多少商品
    
    # 计算销售总额并新增销售总额列
    data['销售额'] = data.price * data.sale_count
    

    二、数据的可视化

    matplotib绘图

    # 模块导入
    import matplotlib.pyplot as plt 
    %matplotlib inline
    plt.rcParams['font.sans-serif'] = [u'SimHei'] ##显示中文,设置字体
    plt.rcParams['axes.unicode_minus'] = False ##显示符号
    
    # 各店铺的商品数量
    plt.subplot(2,2,1) # 创建一个2*2的矩阵图,位置在第一个
    plt.tick_params(labelsize=15)# 标签字体的大小
    # 对店名计数后,排序(默认升序)
    data['店名'].value_counts().sort_values().plot.bar()
    # 柱状图的标题
    plt.title('各品牌商品数',fontsize = 20)
    # y轴代表商品数量
    plt.ylabel('商品数量',fontsize = 15)
    # x轴代表店名
    plt.xlabel('店名')
    
    #  各店铺的销量
    plt.subplot(2,2,2)
    # 标签的大小
    plt.tick_params(labelsize=15)
    # 根据店名,对sale_count 求和,排序,生成柱状图
    data.groupby('店名').sale_count.sum().sort_values().plot.bar()
    plt.title('各品牌所有商品的销量',fontsize = 20 )
    plt.ylabel('商品总销量',fontsize = 15)
    
    #各店铺总销售额
    plt.subplot(2,2,3)
    # 标签的大小
    plt.tick_params(labelsize=15)
    # 根据店名对销售额求和,排序,生成柱状图
    data.groupby('店名')['销售额'].sum().sort_values().plot.bar()
    plt.title('各品牌总销售额', fontsize = 20)
    plt.ylabel('商品总销售额' , fontsize = 15)
    #旋转显示plt.xticks(rotation=45)
    
    ##补充绘图,挖掘数据,各品牌的平均每单单价,三个销量为0的品牌暂时不考虑
    plt.subplot(2,2,4)
    plt.tick_params(labelsize = 15)
    # 对每个店名的销售额进行分组求和/每个店的销量,求出平均价格
    avg_price=data.groupby('店名')['销售额'].sum()/data.groupby('店名').sale_count.sum()
    # 对每个商品的平均价格排序,绘制图表
    avg_price.sort_values().plot.bar()
    plt.title('各品牌平均每单单价', fontsize = 20)
    plt.ylabel('售出商品的平均单价' , fontsize = 15)
    ##自适应调整子图间距
    plt.tight_layout()
    

    三、函数总结

    01 排序函数sort_values()

    • 用法:
      DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
    • 参数说明
    inplace 是否用排序后的数据集替换原来的数据,默认为False,即不替换
    参数 说明
    by 指定列名(axis=0或’index’)或索引值(axis=1或’columns’)
    axis 若axis=0或’index’,则按照指定列中数据大小排序;若axis=1或’columns’,则按照指定索引中数据大小排序,默认axis=0
    ascending 是否按指定列的数组升序排列,默认为True,即升序排列
    na_position {‘first’,‘last’},设定缺失值的显示位置

    02 jieba分词工具的使用

    特点

    • 支持三种分词模式:
      • 精确模式,试图将句子最精确地切开,适合文本分析;
      • 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
      • 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
    • 支持繁体分词
    • 支持自定义词典
    • MIT 授权协议

    主要功能

    1. 分词
    • jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
    • jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细
    • 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
    • jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用
    • jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
    • jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
  • 相关阅读:
    Postman使用教程
    CAD和ArcGIS转换 矢量配准
    SAP CRM Advanced search和Simple search里Max hit表现行为的差异
    SAP CRM Product simple search的启用步骤
    如何快速定位SAP CRM订单应用(Order Application)错误消息抛出的准确位置
    如何动态修改SAP CRM WebClient UI表格栏的宽度
    如何在SAP CRM WebClient UI里创建web service并使用ABAP消费
    如何处理SAP CRM Web Service错误
    如何使用SAP CRM WebClient UI实现一个类似新浪微博的字数统计器
    如何开启SAP CRM基于WORD模板创建附件的功能
  • 原文地址:https://www.cnblogs.com/James-221/p/13845898.html
Copyright © 2011-2022 走看看