目录
美国某公司购物数据报告
一、引言
随着现代电子商务的飞速发展,顾客购物数据量也在飞速增长。这些数据包含了丰富的信息,如消费者的购买习惯、喜好、趋势等。然而,如何有效地处理和利用这些数据,使其为商业决策提供有价值的洞见,成为了一个重要的问题。为此,通过数据可视化技术,将复杂的数据转化为直观、易理解的图形,可以帮助企业更好地理解市场和消费者行为,进一步优化商业决策。
本报告旨在通过数据可视化技术,对顾客购物数据进行深入挖掘和分析,为商家提供全面的市场分析和商业洞察。通过使用先进的数据可视化工具和技术,我们将从大量的顾客购物数据中提取有价值的信息,并通过直观的图形展示出来,更好地理解市场和消费者行为,优化商业决策。
二、数据概览
该数据集来源于名为file的csv文件,原始数据共有52924条,20个特征变量,各变量含义解释如下:
-
CustomerID:每个客户的唯一标识符
-
Gender:客户性别
-
Location:客户的地址或地址信息
-
Tenure_Months:客户与平台关联的月数
-
Transaction_ID:每笔交易的唯一标识符
-
Transaction_Date:交易日期
-
Product_SKU:产品的库存单位(SKU)标识符
-
Product_Description:产品描述
-
Product_Category:产品所属类别
-
Quantity:交易中购买的产品数量
-
Avg_Price:产品平均价格
-
Delivery_Charges:交易中的运费
-
Coupon_Status:与交易相关的优惠券的状态
-
GST:与交易相关的商品和服务税
-
Date:交易日期
-
Offline_Spend:客户离线消费的金额
-
Online_Spend:客户在线消费的金额
-
Month:客户总消费金额
-
Coupon_Code与优惠券相关的代码
-
Discount_pct:交易折扣百分比
三、数据整理
3.1 数据预处理
考虑到文件中的特征变量或条目数量众多,我们首先需要进行前置处理阶段,我们首先需要进行数据预处理。
-
对空白值所在行进行删除
-
对不必要的特征变量进行删除
进行以上处理之后,我们可以得到一个新的csv文件。数据包括客户性别、地址、与平台关联的月数、交易日期、产品描述、类别、购买数量、价格、运费、优惠券状态、离线与在线消费金额以及交易折扣百分比等字段。通过对这些字段的分析,我们可以了解客户的购物行为以及公司的销售情况。
3.2 数据导入
# 导包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 导入数据
data=pd.read_csv("file.csv")
print(data.shape)
(52524, 16)
可以发现该数据集的形状为(52524, 16)。在这个数据中,有16个分类列,52524条数据,没有缺失值。
四、客户特征分析
4.1 客户性别分布
通过对客户性别字段进行分析,我们可以深入探究不同性别客户在购物中的占比情况。此分析可以帮助公司更好地了解其客户群体,并制定针对性的营销策略。
colors = ["#89CFF0", "#FF69B4", "#FFD700", "#7B68EE", "#FF4500",
"#9370DB", "#32CD32", "#8A2BE2", "#FF6347", "#20B2AA",
"#FF69B4", "#00CED1", "#FF7F50", "#7FFF00", "#DA70D6"]
# 性别比例
plt.figure(figsize=(6, 4))
G_vis = data['Gender'].value_counts()
bars = plt.bar(G_vis.index, G_vis.values, color='red')
# x,y轴说明
plt.xlabel('Gender')
plt.ylabel('Number of Gender')
plt.title('Gender Distribution')
# 给图表填上数据
for bar in bars:
plt.text(bar.get_x() + bar.get_width() / 2, bar.get_height(), str(int(bar.get_height())), ha='center', va='bottom')
plt.show()
# 饼图
plt.figure(figsize = (20, 6))
counts = data["Gender"].value_counts()
explode = (0,0.1)
# 绘制
counts.plot(kind = 'pie', fontsize = 12, colors = colors, explode = explode, autopct = '%1.1f%%')
plt.xlabel('Gender', weight = "bold", color = "#2F0F5D", fontsize = 14, labelpad = 20)
plt.axis('equal')
plt.legend(labels = counts.index, loc = "best")
plt.show()
可以看出该数据集的客户是女性多于男性的。这种性别差异可能是由于多种因素综合作用的结果,例如社会文化、经济地位、个人偏好等。需要注意的是,这只是一种概括性的描述,具体情况可能因市场、行业、产品等因素而有所不同。
4.2 客户地址分布
通过分析客户地址字段,我们可以了解不同地区的客户购物行为的差异,这些差异可能包括购买偏好、购买力、购买频率等,对于企业在不同地区制定有针对性的营销策略至关重要,为公司在不同地区的营销策略提供参考。
# 饼图
plt.figure(figsize = (20, 6))
counts = data["Location"].value_counts()
explode = (0.1,0,0,0,0)
# 绘制
counts.plot(kind = 'pie', fontsize = 12, colors = colors, explode = explode, autopct = '%1.1f%%')
# x,y轴说明
plt.xlabel('Location', weight = "bold", color = "#2F0F5D", fontsize = 14, labelpad = 20)
plt.axis('equal')
plt.legend(labels = counts.index, loc = "best")
plt.show()
可以看出该数据集的客户地点分布大致分布在Chicago、California、New York三个城市,在产品设计和营销策略上可能需要考虑到这些地区的文化、经济和社会特点。这是该数据集客户分布的重要信息,以便更好地制定营销策略和调整产品或服务,有助于企业更好地了解其客户和市场,从而制定更为精准的商业决策。
4.3 客户与平台关联月数分布
分析客户与平台关联的月数字段,可以了解客户的活跃程度以及他们对平台的忠诚度,有助于公司制定客户保留策略。
活跃度可以通过客户在一个月内与平台的交互次数、使用频率等指标来衡量;而忠诚度则可以通过客户在一段时间内与平台的关联时长、持续时间等指标来评估。
如果分析结果显示某个客户的活跃度非常高,对平台的忠诚度也很高,那么企业可以制定特定的客户保留策略,如提供更多个性化的服务和优惠,以保持该客户的忠诚度和持续使用;另外,如果发现某些客户的活跃度较低或者忠诚度有所下降,那么企业可以采取措施来增强这些客户的满意度和黏性,如改善用户体验、提供更多实用功能等。
# Tenure_Months
plt.figure(figsize=(6, 4))
G_vis = data['Tenure_Months'].value_counts()
bars = plt.bar(G_vis.index, G_vis.values, color='blue')
# x,y轴说明
plt.xlabel('Tenure Months')
plt.ylabel('Number of Tenure Months')
plt.title('Tenure Months Distribution')
可以看出客户关联月数比较平均,这说明公司的客户群体相对较为稳定,有不错的发展前景。公司可以加强客户服务质量,提高客户满意度和忠诚度。
五、购物行为分析
5.1 交易日期分布
通过对交易日期字段的分析,我们可以了解购物高峰期和低谷期,从而更好地调配库存和优化物流。
具体来说,对交易日期字段的分析能够揭示消费者购物的周期性模式。在购物高峰期,消费者对产品的需求量激增,企业需要确保充足的库存以应对需求。同时,为了满足大量订单的配送需求,物流优化也显得尤为重要。通过提前预测和规划,企业可以采取有效的措施提高物流效率、缩短配送时间,从而提升客户满意度。
通过对交易日期字段的分析,企业不仅可以更好地理解消费者的购物习惯和需求变化,还可以有效调整库存和优化物流策略。这有助于提高企业的运营效率、降低成本并提升客户的购物体验。因此,对交易日期字段的深入分析对于企业的日常运营和战略规划具有重要的指导意义。
# Month月份分布
plt.figure(figsize=(6, 4))
G_vis = data['Month'].value_counts()
bars = plt.bar(G_vis.index, G_vis.values)
# x,y轴说明
plt.xlabel('Month')
plt.ylabel('Number of Tenure Months')
plt.title('Months Distribution')
可以看出客户的交易日期七八月最多,其余的比较平均。这可能是因为当时是旅游、户外活动、烧烤等产品的销售高峰期,导致客户交易日期较为集中。
如果是这样,公司可以提前调整销售策略,在销售旺季到来前,可以提前准备库存、加强市场宣传和推广。
5.2 产品描述与类别分析
通过对产品描述和类别字段的分析,可以了解最受欢迎的产品类型以及其销售情况,帮助公司调整产品线。
由于产品种类较多,我们只展示排名前八种类别的产品。
# 饼图
plt.figure(figsize = (20, 6))
counts = data["Product_Category"].value_counts()[:8]
explode = (0) * counts
# 绘制
counts.plot(kind = 'pie', fontsize = 12, colors = colors, explode = explode, autopct = '%1.0f%%')
# x,y轴说明
plt.xlabel('Product_Category', weight = "bold", color = "#2F0F5D", fontsize = 14, labelpad = 20)
plt.axis('equal')
plt.legend(labels = counts.index, loc = "best")
plt.show()
从中可以看出,Apparel、Nest-USA和Office类别的产品最多且占据了大部分市场,据此可以考虑增大产量。而剩下的产品则可以考虑酌情减少生产与销售。
-
不断进行产品改进和创新,以保持其竞争优势;
-
加强品牌建设,提高消费者对品牌的认知度和忠诚度,从而增强其市场地位;
-
拓展渠道和市场份额,以进一步扩大其影响力。
5.3 购买数量与价格分析
通过分析购买数量和价格字段,我们可以了解客户的购买能力和对价格的敏感度,为公司制定定价策略提供依据。
如果分析结果显示客户更倾向于购买价格适中、性价比高的产品,公司可以考虑将更多资源投入到这类产品的研发和推广上;反之,如果发现某些客户对价格并不敏感,公司可以针对这些客户推出高端产品或提供更多增值服务,以获取更高的利润。
# 平均价格分布
plt.figure(figsize=(8, 4))
plt.hist(data['Avg_Price'],edgecolor = 'black',alpha=0.7,bins=25,color = 'skyblue',density=True)
data['Avg_Price'].plot(kind='kde', color = 'red')
# x,y轴说明
plt.xlabel('Avg_Price')
plt.ylabel('Count / Density')
plt.title('Avg Price Distribution Histogram with Density Curve')
plt.legend(['Density Curve', 'Histogram'])
plt.show()
# 产品购买数量分布
plt.figure(figsize=(8, 4))
plt.hist(data['Quantity'],edgecolor = 'black',alpha=0.7,bins=25,color = 'skyblue',density=True)
data['Quantity'].plot(kind='kde', color = 'red')
# x,y轴说明
plt.xlabel('Quantity')
plt.ylabel('Count / Density')
plt.title('Quantity Distribution Histogram with Density Curve')
plt.legend(['Density Curve', 'Histogram'])
plt.show()
意料之内的是,只有价格较低的产品客户才有可能进行大量购买。实际上,这也符合常理——没有人会大量购买高价格的产品。
5.4 不同性别在购物种类上的差异
# 不同性别在购物种类上的差异
plt.figure(figsize=(8, 3))
sns.countplot(data=data, x='Product_Category', hue='Gender',palette='pastel')
plt.title('Product Category by Gender')
# x,y轴说明
plt.xlabel('Product Category')
plt.ylabel('Count')
plt.legend(title='Gender', labels=data['Gender'].unique())
plt.show()
从图中可以看出,在某些产品上女性的购买率远远高于男性。对于女性群体的购买率,公司可以实行以下的措施:
-
增加女性产品线,以满足女性客户的需求。
-
据此考虑优化产品设计和功能,以提高女性客户的满意度和忠诚度;
-
针对女性的购物习惯和需求制定营销策略,例如在社交媒体上加强品牌宣传和购物体验分享,提供更多的女性专属产品和优惠活动;
-
针对女性客户的需求提供更好的售后服务质量,例如提供更及时的退换货服务、更多的产品使用指导和售后服务。
5.5 产品描述词云图
from wordcloud import WordCloud
#获取描述文本
descriptions = data['Product_Description']
# 将所有评论拼接成一个字符串
all_descriptions = ' '.join(descriptions)
# 创建WordCloud对象
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(all_descriptions)
# 绘制词云图
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()
通过词云图我们可以看出主要的产品种类,从中我们也可以了解到产品的一些特点。
六、消费金额分析
6.1 离线与在线消费金额对比
通过对比分析离线与在线消费金额字段,可以了解线上线下的消费习惯差异以及公司的线上线下销售策略的效果,从而制定更为科学合理的销售策略,提高市场竞争力并获得更大的商业价值。
根据这些分析结果,公司可以更好地了解客户的需求和偏好,并制定更为精准的线上线下销售策略。对于更喜欢线上购买的客户,可以优化线上产品的展示方式、提高网站的用户体验;而对于更喜欢线下购买的客户,可以在实体店提供更加个性化的服务,增强购物体验。
# 不同消费比例
plt.figure(figsize=(6, 4))
G_vis = [data['Offline_Spend'].sum(),data['Online_Spend'].sum()]
bars = plt.bar(['Offline_Spend','Online_Spend'], G_vis, color='red')
# x,y轴说明
plt.xlabel('Spend')
plt.ylabel('Number of Spend')
plt.title('Spend Distribution')
可以看出,该公司的客户的消费方式还是以线下为主。而在互联网发达的今天,线上销售的普及已是大势所趋。下面是一些推进线上销售的办法。
-
优化线上购物平台,提供更加便捷、安全、流畅的购物体验
-
采取线上线下融合的策略,提供线下体验和线上购买的结合方式
-
采取一些激励措施来促进客户从线下消费转向线上消费。例如,可以提供线上购物的优惠券、积分奖励等福利
6.2 交易折扣百分比分析
通过对交易折扣百分比字段的分析,可以了解公司在促销活动中的销售增长情况,以及客户对促销活动的反应。
如果客户对某个促销活动反应热烈,那么公司可以考虑将更多资源投入到该促销活动的策划和推广中。如果客户对某个促销活动反应冷淡,那么公司需要重新审视该活动的策划和实施情况,并及时调整策略。
# Discount_pct
# 饼图
plt.figure(figsize = (20, 6))
counts = data["Discount_pct"].value_counts()
explode = (0.1,0,0)
# 绘制
counts.plot(kind = 'pie', fontsize = 12, colors = colors, explode = explode, autopct = '%1.1f%%')
# x,y轴说明
plt.xlabel('Discount_pct', weight = "bold", color = "#2F0F5D", fontsize = 14, labelpad = 20)
plt.axis('equal')
plt.legend(labels = counts.index, loc = "best")
plt.show()
# 销售
spendSum = []
types = data['Discount_pct'].unique()
for spends in types:
spends_df = data[data['Discount_pct'] == spends]
spendSum.append(sum(spends_df['Spend_Sum']))
# 不同性别在购物种类上的差异
plt.figure(figsize=(6, 3))
bars = plt.bar(types,spendSum, color='blue')
# x,y轴说明
plt.xlabel('Discount_pct')
plt.ylabel('Spend')
plt.title('Spend Sum')
从图一中我们可以看出,三种促销活动的占比相当。图二也一样,30的折扣百分比略高于10和20的折扣,但总体来说都差不多。
这是需要改进的地方。公司需要进一步了解客户需求并优化促销策略,提高销售量。
七、结论与建议
根据以上分析,我们可以得出以下结论:
-
公司的客户群体具有多样性,涵盖了不同性别、地区和活跃程度的客户。
-
购物行为在时间分布上存在高峰期,公司需根据实际情况调整库存和物流策略。
-
最受欢迎的产品类型和类别为公司提供了优化产品线的方向。
-
购买数量和价格反映了客户的购买能力和价格敏感度,公司应据此制定相应的定价策略。在运输和优惠方面,公司应关注运费和优惠券对销售额的影响并适当调整相关策略。
-
线上线下的消费习惯存在差异,公司需根据实际情况制定相应的销售策略。
针对以上结论,我们提出以下建议:
-
针对不同客户群体制定个性化的营销策略以提高客户满意度和忠诚度。
-
优化库存和物流策略以应对购物高峰期和低谷期的需求变化。