【数据可视化-47】自动售货机咖啡销售数据可视化分析

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

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

在这里插入图片描述

【数据可视化-47】自动售货机咖啡销售数据可视化分析

    • 一、引言
    • 二、数据探索
      • 2.1 数据集介绍
      • 2.2 数据清洗探索
    • 三、单维度特征可视化
      • 3.1 支付方式分布
      • 3.2 咖啡类型分布
      • 3.3 消费金额分布
    • 四、时间序列分析
      • 4.1 日销售趋势
      • 4.2 周销售趋势
      • 4.3 月销售趋势
    • 五、各个特征与销售关系的可视化
      • 5.1 支付方式与销售金额关系
      • 5.2 咖啡类型与销售金额关系
      • 5.3 时间与销售金额关系(小时维度)
      • 5.4 多维度组合分析(支付方式、咖啡类型与销售金额)
      • 5.5 日销售与支付方式关系
      • 5.6 周销售与支付方式关系

一、引言

  在当今数据驱动的商业环境中,分析消费者行为和销售趋势对于优化产品供应和提升客户满意度至关重要。本文聚焦于自动售货机咖啡销售数据集的可视化分析,通过深入探讨购买模式、销售趋势和客户偏好,旨在为自动售货机运营商提供数据支持的决策依据。该数据集涵盖了从2024年3月至今的每日交易记录,包括购买日期、支付方式、消费金额和咖啡类型等关键信息。以下分析将使用Seaborn库实现,提供完整的代码示例,供读者参考和复现。

二、数据探索

2.1 数据集介绍

  自动售货机咖啡销售数据集包含以下变量:

  • date:购买日期
  • datetime:购买具体时间
  • cash_type:支付方式(现金或卡片)
  • card:匿名卡号
  • money:消费金额(乌克兰格里夫纳)
  • coffee_name:咖啡类型

2.2 数据清洗探索

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

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


# 查看数据维度
df.shape
# 查看数据基本信息
print(df.info())
# 查看数据中缺失值情况
df.isna().sum()

  从数据基本信息可发现:

  • 数据共6个维度,包含字符型和数值类型,后续需要将date和datetime转换成时间类型的数据字段。
  • 一共有3636条数据记录,其中card特征存在89个缺失值。
# 将日期列转换为日期类型
df['date'] = pd.to_datetime(df['date'])
df['datetime'] = pd.to_datetime(df['datetime'])

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

三、单维度特征可视化

3.1 支付方式分布

plt.figure(figsize=(8, 6))
sns.countplot(x='cash_type', data=df)
plt.title('Distribution of Payment Methods')
plt.xlabel('Payment Method')
plt.ylabel('Count')
plt.show()

3.2 咖啡类型分布

plt.figure(figsize=(10, 6))
sns.countplot(x='coffee_name', data=df, order=df['coffee_name'].value_counts().index)
plt.title('Distribution of Coffee Types')
plt.xlabel('Coffee Type')
plt.ylabel('Count')
plt.xticks(rotation=45)
plt.show()

3.3 消费金额分布

plt.figure(figsize=(10, 6))
sns.histplot(df['money'], bins=20, kde=True, color='skyblue')
plt.title('Distribution of Purchase Amounts')
plt.xlabel('Amount (UAH)')
plt.ylabel('Frequency')
plt.show()

四、时间序列分析

4.1 日销售趋势

plt.figure(figsize=(12, 6))
daily_sales = df.groupby('date')['money'].sum().reset_index()
sns.lineplot(x='date', y='money', data=daily_sales)
plt.title('Daily Sales Trend')
plt.xlabel('Date')
plt.ylabel('Total Sales (UAH)')
plt.tight_layout()
plt.show()

4.2 周销售趋势

plt.figure(figsize=(12, 6))
df['week'] = df['date'].dt.isocalendar().week
weekly_sales = df.groupby('week')['money'].sum().reset_index()
sns.barplot(x='week', y='money', data=weekly_sales)
plt.title('Weekly Sales Trend')
plt.xlabel('Week')
plt.ylabel('Total Sales (UAH)')
plt.show()

4.3 月销售趋势

plt.figure(figsize=(12, 6))
df['month'] = df['date'].dt.month
monthly_sales = df.groupby('month')['money'].sum().reset_index()
sns.barplot(x='month', y='money', data=monthly_sales)
plt.title('Monthly Sales Trend')
plt.xlabel('Month')
plt.ylabel('Total Sales (UAH)')
plt.show()

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

5.1 支付方式与销售金额关系

plt.figure(figsize=(10, 6))
sns.boxplot(x='cash_type', y='money', data=df)
plt.title('Sales Amount by Payment Method')
plt.xlabel('Payment Method')
plt.ylabel('Sales Amount (UAH)')
plt.show()

5.2 咖啡类型与销售金额关系

plt.figure(figsize=(12, 6))
sns.boxplot(x='coffee_name', y='money', data=df)
plt.title('Sales Amount by Coffee Type')
plt.xlabel('Coffee Type')
plt.ylabel('Sales Amount (UAH)')
plt.xticks(rotation=45)
plt.show()

5.3 时间与销售金额关系(小时维度)

plt.figure(figsize=(12, 6))
df['hour'] = df['datetime'].dt.hour
sns.boxplot(x='hour', y='money', data=df)
plt.title('Sales Amount by Hour')
plt.xlabel('Hour')
plt.ylabel('Sales Amount (UAH)')
plt.show()

5.4 多维度组合分析(支付方式、咖啡类型与销售金额)

plt.figure(figsize=(14, 8))
for i, cash_type in enumerate(df['cash_type'].unique(), 1):
    plt.subplot(2, 2, i)
    sns.boxplot(x='coffee_name', y='money', data=df[df['cash_type'] == cash_type])
    plt.title(f'Sales Amount by Coffee Type ({cash_type})')
    plt.xlabel('Coffee Type')
    plt.ylabel('Sales Amount (UAH)')
    plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

5.5 日销售与支付方式关系

plt.figure(figsize=(12, 6))
daily_sales_cash = df[df['cash_type'] == 'cash'].groupby('date')['money'].sum().reset_index()
daily_sales_card = df[df['cash_type'] == 'card'].groupby('date')['money'].sum().reset_index()

plt.plot(daily_sales_cash['date'], daily_sales_cash['money'], label='Cash', marker='o', alpha=0.7)
plt.plot(daily_sales_card['date'], daily_sales_card['money'], label='Card', marker='o', alpha=0.7)

plt.title('Daily Sales by Payment Method')
plt.xlabel('Date')
plt.ylabel('Total Sales (UAH)')
plt.legend()
plt.tight_layout()
plt.show()

5.6 周销售与支付方式关系

plt.figure(figsize=(12, 6))
weekly_sales_cash = df[df['cash_type'] == 'cash'].groupby('week')['money'].sum().reset_index()
weekly_sales_card = df[df['cash_type'] == 'card'].groupby('week')['money'].sum().reset_index()

sns.barplot(x='week', y='money', data=weekly_sales_cash, label='Cash')
sns.barplot(x='week', y='money', data=weekly_sales_card, label='Card', alpha=0.7)

plt.title('Weekly Sales by Payment Method')
plt.xlabel('Week')
plt.ylabel('Total Sales (UAH)')
plt.legend()
plt.show()

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

  • 支付方式分布:消费者使用现金和卡片的支付比例存在差异,可能受地理位置和人群特征影响。
  • 咖啡类型分布:不同咖啡类型销量差异显著,经典口味通常更受欢迎。
  • 消费金额分布:消费金额呈现多样化,少数高额消费可能为特殊订单或套餐购买。
  • 日销售趋势:销售金额随日期波动,受工作日、周末和节假日影响明显。
  • 周销售趋势:每周的销售金额变化反映消费者的购买习惯,周末通常销量较高。
  • 月销售趋势:月度销售金额差异显著,可能受季节、促销活动和新品推出影响。
  • 支付方式与销售金额关系:支付方式对销售金额有影响,卡片支付通常支持更高额消费。
  • 咖啡类型与销售金额关系:不同咖啡类型的平均销售金额差异明显,高端咖啡通常价格更高。
  • 时间与销售金额关系:销售金额在一天中的不同时段存在显著差异,高峰时段通常为上午和下午。
  • 多维度组合分析:不同支付方式下,咖啡类型的销售金额分布差异显著,反映消费者支付偏好和消费能力的差异。
  • 日销售与支付方式关系:现金和卡片支付的日销售趋势呈现不同模式,卡片支付增长趋势更明显。
  • 周销售与支付方式关系:现金和卡片支付的周销售金额分布差异显著,卡片支付在周末增长更为明显。

  以上分析为理解自动售货机咖啡销售的关键因素提供了多维度视角,揭示了各变量之间的潜在关系,为进一步的销售策略制定提供了数据支持。

  **注:**博主目前收集了6900+份相关数据集,有想要的可以领取部分数据:


当你面对饮料自动售货机系统的设计挑战时,利用UML的类图来表达系统中的类及其之间的关系是一个很好的开始。UML类图是面向对象分析和设计中不可或缺的部分,它能够帮助我们可视化类的结构以及类与类之间的关系,包括继承和多态性。 参考资源链接:[UML在饮料自动售货机系统建模中的应用](https://wenku.csdn.net/doc/mc5xd1a5fs) 首先,你需要识别系统中的主要类,比如“售货机”、“饮料”和“交易”。在“售货机”类中,你可以定义属性如库存量、价格列表等,以及操作方法,比如“添加饮料”、“开始交易”。接着,创建“饮料”类并定义属性如饮料名称、价格等。对于“交易”类,你可以包含属性如总金额、已选饮料等,并定义与“售货机”和“饮料”类相关联的操作。 继承关系在UML中通过带有空心箭头的直线来表示,指向父类。例如,如果“售货机”类有多个子类,比如“咖啡售货机”、“茶售货机”,则这些子类可以继承“售货机”类的通用属性和方法。多态性意味着不同的子类可以提供特定的实现,例如,不同类型的售货机可能有不同的价格更新机制,这可以通过子类中的方法重写来体现。 使用建模工具Rose,你可以通过图形化界面绘制这些类图。在Rose中,你可以拖放不同的类图元素来创建类,然后通过工具提供的关系线来定义类之间的继承、关联、依赖等关系。完成类图的设计后,Rose还支持代码自动生成的功能,可以根据你的类图直接生成Java、C++或Python等语言的框架代码。 此外,为了更深入理解UML的静态和动态建模技术,建议查阅《UML在饮料自动售货机系统建模中的应用》这份资料。它详细探讨了UML在具体系统中的应用,并提供了实例来帮助你理解如何在实际项目中应用这些概念。通过学习这份资料,你可以获得将理论应用于实践的深刻见解,并更好地掌握UML在软件工程中的实际应用。 参考资源链接:[UML在饮料自动售货机系统建模中的应用](https://wenku.csdn.net/doc/mc5xd1a5fs)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

云天徽上

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

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

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

打赏作者

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

抵扣说明:

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

余额充值