前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kaggle | 女士电子商务服装数据分析

Kaggle | 女士电子商务服装数据分析

作者头像
润森
发布2020-02-25 11:54:31
2.5K0
发布2020-02-25 11:54:31
举报
文章被收录于专栏:毛利学Python

@Author:By Runsen

原文:https://maoli.blog.csdn.net/article/details/104461970

电商数据分析,是一个数据信息收集很多的数据行业。对电商数据进行分析意味着有更大的可能向市场进军。

数据集摘要:女士电子商务服装数据分析

链接:https://www.kaggle.com/nicapotato/womens-ecommerce-clothing-reviews

一、简介

该数据集包括23486行和10个特征变量。每行对应一个客户评论,并包含以下变量:

  • **服装ID:**整数分类变量,指的是要查看的特定作品。
  • **年龄:**评论者年龄的正整数变量。
  • **标题:**评论标题的字符串变量。
  • 评论文本:评论正文的字符串变量。
  • **评分:**客户授予的产品评分的正序整数变量,从1最差,到5最佳。
  • **推荐的IND:**二进制变量,说明客户在推荐1的地方推荐产品,不推荐0的地方。
  • **积极的反馈计数:**积极的整数,记录发现该评论为积极的其他客户的数量。
  • **高级部门名称:**产品高级部门的分类名称。
  • **部门名称:**产品部门名称的分类名称。
  • **类名称:**产品类名称的分类名称。

中文名称

英文名称

服装ID

Clothing ID

年龄

Age

标题

Title

评论文本

Review Text

评分:

Rating

推荐的IND

Recommended IND

积极的反馈计数

Positive Feedback Count

高级部门名称

Division Name

部门名称

Department Name

类名称

Class Name

二、数据读取

1、数据处理环境

pandaspandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。Pandas纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

MatplotlibMatplotlib就是Python绘图库中的佼佼者,它包含了大量的工具,你可以使用这些工具创建各种图形(包括散点图、折线图、直方图、饼图、雷达图等),Python科学计算社区也经常使用它来完成数据可视化的工作。

SeabornSeaborn是基于matplotlib的图形可视化python包。它提供了一种高度交互式界面,便于用户能够做出各种有吸引力的统计图表。

2、数据读取方法

pandas库支持csv和excel的操作;使用的是pd.read_csv的函数

导入numpy,seaborn``matplotlibpandas读取Womens Clothing E-Commerce Reviews.csv

参数:index_col=0——第一列为index值

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
df = pd.read_csv("Womens Clothing E-Commerce Reviews.csv", index_col=0)
查看df.head
查看df.info

df.info可以存在缺失数据,只需要通过df.dropna()对缺失数据进行删除即可

代码语言:javascript
复制
df = df.dropna()
df.info()
查看df.describe

数据中的Rating,Recommended,INDPositive Feedback Count的std`标准差都比较小,说明数据分布程度上比较集中

三、 数据分析

1、哪个年龄组给出了哪些类型的评分?

绘制年龄柱状图

只需要简单通过plt.hist方法来画出相对用的柱状图

代码语言:javascript
复制
plt.hist(df['Age'], color="green", label = "Age")
plt.legend()
plt.xlabel("Age")
plt.ylabel("Count")
plt.title("Age Distribution in Data")

我们可以从图片看出:数据中的顾客大部分集中于30到50之间,属于成年人较多

绘制不同年龄的评价等级图

sns.boxplotsns中的箱型图

代码语言:javascript
复制
plt.figure(figsize=(10,10))
sns.boxplot(x = 'Rating', y = 'Age', data = df)

在图中可以看出评分分布比较均匀

2、每个部门、推荐什么服装?

查看Division Name,Department Name'Class Name的唯一值
代码语言:javascript
复制
print(df['Division Name'].unique())
print(df['Department Name'].unique())
print(df['Class Name'].unique())

Recommended IND推荐产品为1,不推荐0的数据分开

代码语言:javascript
复制
rd = df[df['Recommended IND'] == 1] # recommended
nrd = df[df['Recommended IND'] == 0] # not recommended
rd.head()
下面绘制不同部门商品的推荐和不推荐叠加柱状图
代码语言:javascript
复制
plt.figure(figsize=(15,8))
plt.xticks(rotation=45)
plt.hist(rd['Department Name'], color="green", alpha = 0.5, label = "Recommended")
plt.hist(nrd['Department Name'], color="yellow", alpha = 0.5, label = "Not Recommended")
plt.legend()
plt.title("Recommended Items in each Department")

从图中看出:绿色的面积相对于黄色的面积大好几倍,说明大部分部门都可以推荐服装商品

下面绘制部门不同商品的推荐和不推荐叠加柱状图
代码语言:javascript
复制
plt.figure(figsize=(15,10))
plt.hist(rd['Class Name'], color="blue", alpha = 0.5, label = "Recommended")
plt.hist(nrd['Class Name'], color="cyan", alpha = 0.5, label = "Not Recommended")
plt.title("Recommended Items in each Class")
plt.xticks(rotation=45)
plt.legend()
plt.show()

从图中看出:并不是卖最多的Knits商品推荐成功率最大

3、哪个年龄段的人对什么样的衣服发表什么样的评论

代码语言:javascript
复制
df['Review Length'] = df['Review Text'].astype(str).apply(len)
df.head()
绘制单Review Length变量分布

单变量分布的最方便的方法是sns.distplot()功能。默认情况下,这将绘制直方图并拟合核密度估计(KDE)

代码语言:javascript
复制
fig = plt.figure(figsize=(15, 8))
ax = sns.distplot(df['Review Length'], color="blue")
ax = plt.title("Length of Reviews")

看出大部分人评论的长度都基本在500

绘制不同年龄段的人Review Length变量分布
代码语言:javascript
复制
plt.figure(figsize=(20,10))
sns.boxplot(x = 'Age', y = 'Review Length', data = df)

4、评分与正面反馈计数

代码语言:javascript
复制
plt.figure(figsize=(10,10))
sns.boxplot(x = 'Rating', y = 'Positive Feedback Count', data = df)

图中可以看出评分在3以上的正面反馈的计数大

四、词云评论可视化

词云是一种数据可视化技术,用于表示文本数据,其中每个单词的大小表示其出现的频率或重要性。可以使用词云突出显示重要的文本数据点。词云被广泛用于分析来自社交网络网站的数据。

1、清理数据

代码语言:javascript
复制
import re

def clean_data(text):
    letters_only = re.sub("[^a-zA-Z]", " ", text)
    words = letters_only.lower().split()
    return( " ".join( words ))

2、加载停用词

代码语言:javascript
复制
from wordcloud import WordCloud, STOPWORDS
stopwords= set(STOPWORDS)|{'skirt', 'blouse','dress','sweater', 'shirt','bottom', 'pant', 'pants' 'jean', 'jeans','jacket', 'top', 'dresse'}

def create_cloud(rating):
    x= [i for i in rating]
    y= ' '.join(x)
    cloud = WordCloud(background_color='white',width=1600, height=800,max_words=100,stopwords= stopwords).generate(y)
    plt.figure(figsize=(15,7.5))
    plt.axis('off')
    plt.imshow(cloud)
    plt.show()

3、等级是5的词云

代码语言:javascript
复制
rating5= df[df['Rating']==5]['Review Text'].apply(clean_data)
create_cloud(rating5)

3、等级是4的词云

代码语言:javascript
复制
rating4= df[df['Rating']==4]['Review Text'].apply(clean_data)
create_cloud(rating4)

4、等级是3的词云

代码语言:javascript
复制
rating3= df[df['Rating']==3]['Review Text'].apply(clean_data)
create_cloud(rating3)

5、等级是2的词云

代码语言:javascript
复制
rating2= df[df['Rating']==2]['Review Text'].apply(clean_data)
create_cloud(rating2)

6、等级是1的词云

代码语言:javascript
复制
rating1= df[df['Rating']==1]['Review Text'].apply(clean_data)
create_cloud(rating1)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小刘IT教程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简介
  • 二、数据读取
    • 1、数据处理环境
      • 2、数据读取方法
      • 三、 数据分析
        • 1、哪个年龄组给出了哪些类型的评分?
          • 2、每个部门、推荐什么服装?
            • 3、哪个年龄段的人对什么样的衣服发表什么样的评论
              • 4、评分与正面反馈计数
              • 四、词云评论可视化
                • 1、清理数据
                  • 2、加载停用词
                    • 3、等级是5的词云
                      • 3、等级是4的词云
                        • 4、等级是3的词云
                          • 5、等级是2的词云
                            • 6、等级是1的词云
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档