【数据可视化-40】Amazon 销售数据集可视化分析

🧑 博主简介:曾任某智慧城市类企业算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907

💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

在这里插入图片描述

一、引言

  在市场分析中,数据可视化是揭示销售趋势、探索消费者行为的强大工具。本文将利用Amazon销售数据集,从多个维度进行可视化分析,深入探讨影响产品销售的因素以及各变量之间的关系。以下分析包括完整的Python代码实现,可供读者参考和复现。

二、数据探索

2.1 数据集介绍

该数据集包含以下变量:

  • product_id:产品ID
  • product_name:产品名称
  • category:产品类别
  • discounted_price:折扣价
  • actual_price:原价
  • discount_percentage:折扣百分比
  • rating:产品评分
  • rating_count:评分人数
  • about_product:产品描述
  • user_id:用户ID
  • user_name:用户名
  • review_id:评论ID
  • review_title:评论标题
  • review_content:评论内容
  • img_link:产品图片链接
  • product_link:产品页面链接

2.2 数据清洗探索

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 加载数据
df = pd.read_csv('amazon_sales_data.csv')  # 请替换为实际文件路径

# 查看数据基本信息
print(df.info())

  从数据基本信息可发现:

  • 数据共16个维度,都是类别型变量,在做数字统计是需要将目标类别型变量转换成数字型变量。
  • 数据中缺失值情况较好,只有rating_count字段有两个缺失值,其它特征无缺失值存在

  为了方便后面的数据可视化展示,将数据进行清洗,并将其转换成数值型特;

df['category'] = df['category'].apply(lambda x:x.split('|')[0])

df = df[df['rating'] != '|']
df['rating'] = df['rating'].map(float)


df['discount_percentage'] = df['discount_percentage'].apply(lambda x:x[:-1])
df['discount_percentage'] = df['discount_percentage'].map(int)


df['actual_price'] = df['actual_price'].apply(lambda x:x[1:])
df['actual_price'] = df['actual_price'].apply(lambda x:x.replace(',',''))
df = df[df['actual_price'] != '']
df['actual_price'] = df['actual_price'].map(float)

三、单维度特征可视化

3.1 产品类别分布

plt.figure(figsize=(10, 6))
sns.countplot(y='category', data=df, order=df['category'].value_counts().index)
plt.title('Product Category Distribution')
plt.xlabel('Count')
plt.ylabel('Category')
plt.show()

3.2 评分分布

plt.figure(figsize=(8, 6))
sns.histplot(df['rating'], bins=5, kde=True, color='skyblue')
plt.title('Product Rating Distribution')
plt.xlabel('Rating')
plt.ylabel('Count')
plt.show()

3.3 折扣百分比分布

plt.figure(figsize=(8, 6))
sns.boxplot(x='discount_percentage', data=df)
plt.title('Discount Percentage Distribution')
plt.xlabel('Discount Percentage')
plt.show()

四、各个特征与销售关系的可视化

4.1 价格与评分关系

plt.figure(figsize=(10, 6))
sns.scatterplot(x='actual_price', y='rating', data=df, hue='category')
plt.title('Price vs Rating Relationship')
plt.xlabel('Actual Price')
plt.ylabel('Rating')
plt.legend(title='Category', loc='upper right')
plt.show()

4.2 类别与评分关系

plt.figure(figsize=(12, 6))
category_rating = df_top_20.groupby('category')['rating'].mean().reset_index()
sns.barplot(x='category', y='rating', data=category_rating, palette='pastel')
plt.title('Average Rating by Category')
plt.xlabel('Category')
plt.ylabel('Average Rating')
plt.xticks(rotation=45)
plt.show()

4.3 折扣与评分关系

plt.figure(figsize=(10, 6))
sns.lineplot(x='discount_percentage', y='rating', data=df, marker='o', color='coral')
plt.title('Discount vs Rating Relationship')
plt.xlabel('Discount Percentage')
plt.ylabel('Average Rating')
plt.show()

4.4 多维度组合分析(类别、价格、折扣与评分)

plt.figure(figsize=(14, 8))
for i, category in enumerate(df['category'].unique()[:5], 1):
    plt.subplot(2, 3, i)
    sns.scatterplot(x='actual_price', y='rating', data=df[df['category'] == category], 
                   hue='discount_percentage', palette='plasma', size='discount_percentage', legend=False)
    plt.title(f'{category} - Price vs Rating')
    plt.xlabel('Actual Price')
    plt.ylabel('Rating')

plt.tight_layout()
plt.show()

4.5 评分人数与评分关系

plt.figure(figsize=(10, 6))
sns.regplot(x='rating_count', y='rating', data=df, scatter_kws={'alpha':0.5}, line_kws={'color':'red'})
plt.title('Rating Count vs Rating Relationship')
plt.xlabel('Rating Count')
plt.ylabel('Rating')
plt.show()

从以上可视化分析可以看出:

  • 产品类别分布:不同类别产品在数据集中占比差异显著。
  • 评分分布:多数产品获得较高评分,表明消费者对产品质量的认可。
  • 折扣与评分:存在一定正相关关系,高折扣产品可能获得更多关注和好评。
  • 价格与评分:存在一定负相关关系,高价产品评分略低,可能因消费者对高价产品期望值更高。
  • 类别与评分:不同类别产品评分差异明显,电子产品通常评分较高。
  • 评分人数与评分:存在一定正相关关系,评分人数多的产品通常评分较高。

以上分析为理解影响产品销售的关键因素提供了多维度视角,为进一步的市场研究和销售策略制定提供了数据支持。

五、完整代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 加载数据
df = pd.read_csv('amazon_sales_data.csv')  # 请替换为实际文件路径
# 查看数据基本信息
print(df.info())


df['category'] = df['category'].apply(lambda x:x.split('|')[0])
df = df[df['rating'] != '|']
df['rating'] = df['rating'].map(float)
df['discount_percentage'] = df['discount_percentage'].apply(lambda x:x[:-1])
df['discount_percentage'] = df['discount_percentage'].map(int)
df['actual_price'] = df['actual_price'].apply(lambda x:x[1:])
df['actual_price'] = df['actual_price'].apply(lambda x:x.replace(',',''))
df = df[df['actual_price'] != '']
df['actual_price'] = df['actual_price'].map(float)


plt.figure(figsize=(10, 6))
sns.countplot(y='category', data=df, order=df['category'].value_counts().index)
plt.title('Product Category Distribution')
plt.xlabel('Count')
plt.ylabel('Category')
plt.show()


plt.figure(figsize=(8, 6))
sns.histplot(df['rating'], bins=5, kde=True, color='skyblue')
plt.title('Product Rating Distribution')
plt.xlabel('Rating')
plt.ylabel('Count')
plt.show()


plt.figure(figsize=(8, 6))
sns.boxplot(x='discount_percentage', data=df)
plt.title('Discount Percentage Distribution')
plt.xlabel('Discount Percentage')
plt.show()


plt.figure(figsize=(10, 6))
sns.scatterplot(x='actual_price', y='rating', data=df, hue='category')
plt.title('Price vs Rating Relationship')
plt.xlabel('Actual Price')
plt.ylabel('Rating')
plt.legend(title='Category', loc='upper right')
plt.show()


plt.figure(figsize=(12, 6))
category_rating = df_top_20.groupby('category')['rating'].mean().reset_index()
sns.barplot(x='category', y='rating', data=category_rating, palette='pastel')
plt.title('Average Rating by Category')
plt.xlabel('Category')
plt.ylabel('Average Rating')
plt.xticks(rotation=45)
plt.show()


plt.figure(figsize=(10, 6))
sns.lineplot(x='discount_percentage', y='rating', data=df, marker='o', color='coral')
plt.title('Discount vs Rating Relationship')
plt.xlabel('Discount Percentage')
plt.ylabel('Average Rating')
plt.show()


plt.figure(figsize=(14, 8))
for i, category in enumerate(df['category'].unique()[:5], 1):
    plt.subplot(2, 3, i)
    sns.scatterplot(x='actual_price', y='rating', data=df[df['category'] == category], 
                   hue='discount_percentage', palette='plasma', size='discount_percentage', legend=False)
    plt.title(f'{category} - Price vs Rating')
    plt.xlabel('Actual Price')
    plt.ylabel('Rating')

plt.tight_layout()
plt.show()


plt.figure(figsize=(10, 6))
sns.regplot(x='rating_count', y='rating', data=df, scatter_kws={'alpha':0.5}, line_kws={'color':'red'})
plt.title('Rating Count vs Rating Relationship')
plt.xlabel('Rating Count')
plt.ylabel('Rating')
plt.show()

如果您在后续分析中有其他问题或需要进一步的帮助,欢迎随时交流探讨!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云天徽上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值