原创 IT小本本 IT小本本 2025年04月12日 22:45 北京
本文将通过一个玩具销售数据的分析案例,展示如何利用 Python 和数据可视化工具从原始数据中提取有价值的商业洞察。将从数据加载、预处理到可视化分析,逐步揭示玩具销售的规律和趋势。
数据准备与加载
首先,客户提供了一个名为 toy_sales.csv
的 CSV 文件,我们需要读取加载数据。
为了确保数据的正确性,我们将 Date
列解析为日期格式,并对数据进行初步的预览和统计描述。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 从CSV文件加载数据,并将 Date 列解析为日期格式
df = pd.read_csv("toy_sales.csv", parse_dates=['Date'])
# 数据预览、基本信息和统计描述
print("数据预览:")
print(df.head())
print("\n数据信息:")
print(df.info())
print("\n数据统计描述:")
print(df.describe())
通过数据预览,我们了解到数据集中包含日期、玩具类别、适合年龄段、区域、销售额和销售数量等字段。这些字段为我们后续的分析提供了丰富的维度。
销售趋势分析
为了了解玩具销售的整体趋势,我们按月份汇总销售额,并绘制了月度销售趋势图。
# 添加月份列
df['Month'] = df['Date'].dt.to_period('M')
# 按月份汇总销售额
monthly_sales = df.groupby('Month')['Sales'].sum().reset_index()
# 转换为时间戳格式以便绘图
monthly_sales['Month'] = monthly_sales['Month'].dt.to_timestamp()
plt.figure(figsize=(10, 5))
sns.lineplot(data=monthly_sales, x='Month', y='Sales', marker='o')
plt.title('月度玩具销售趋势')
plt.xlabel('月份')
plt.ylabel('销售额')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
从图中可以看出,玩具销售呈现出明显的季节性波动。例如,年末通常是销售高峰期,这可能与节日购物季相关。
玩具类别销售分析
接下来,我们分析不同玩具类别的销售表现。通过按类别汇总销售额,我们绘制了类别销售对比图。
category_sales = df.groupby('Category')['Sales'].sum().sort_values(ascending=False)
plt.figure(figsize=(8, 5))
sns.barplot(x=category_sales.values, y=category_sales.index, palette='viridis')
plt.title('不同玩具类别销售额对比')
plt.xlabel('销售额')
plt.ylabel('类别')
plt.tight_layout()
plt.show()
结果显示,某些类别(如拼图和积木)的销售额明显高于其他类别。
畅销玩具 Top 5
为了进一步挖掘畅销产品,我们统计了销售额最高的五款玩具。
top_toys = df.groupby('Toy')['Sales'].sum().sort_values(ascending=False).head(5)
plt.figure(figsize=(8, 5))
sns.barplot(x=top_toys.values, y=top_toys.index, palette='coolwarm')
plt.title('畅销玩具 Top 5')
plt.xlabel('销售额')
plt.ylabel('玩具名称')
plt.tight_layout()
plt.show()
畅销玩具的排名为企业提供了明确的市场反馈,反馈出受欢迎的产品。
年龄段偏好分析
不同年龄段的消费者对玩具类别的偏好各不相同。我们通过按年龄段和类别汇总销售额,绘制了各年龄段玩具类别销售额图。
age_category_sales = df.groupby(['Age_Group', 'Category'])['Sales'].sum().reset_index()
plt.figure(figsize=(10, 6))
sns.barplot(data=age_category_sales, x='Age_Group', y='Sales', hue='Category', palette='Set2')
plt.title('各年龄段玩具类别销售额')
plt.xlabel('适合年龄段')
plt.ylabel('销售额')
plt.legend(title='类别')
plt.tight_layout()
plt.show()
从图中可以看出,不同年龄段的消费者对玩具类别的偏好差异显著。例如,学龄前儿童更倾向于购买积木,而青少年则更喜欢电子游戏。
区域销售分布
最后,我们分析了不同区域的销售表现,了解市场分布情况。
region_sales = df.groupby('Region')['Sales'].sum().sort_values(ascending=False)
plt.figure(figsize=(8, 5))
sns.barplot(x=region_sales.index, y=region_sales.values, palette='magma')
plt.title('各区域玩具销售额')
plt.xlabel('区域')
plt.ylabel('销售额')
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
结果显示,某些区域的销售额明显高于其他区域
结果总结与报告导出
为了便于后续撰写报告,我们将按玩具类别统计的总销售额和销售数量导出为 Excel 文件。
summary = df.groupby('Category')[['Sales', 'Quantity']].sum()
summary.to_excel('toy_sales_summary.xlsx')
print("toy_sales_summary.xlsx 文件已生成!")