示例:商店销售数据分析
1. 准备工作
首先,我们需要一些库,并准备一个简单的销售数据集。假设我们的数据集包含以下字段:
日期
(Date)商品
(Product)销售额
(Sales)
我们可以手动创建一个 DataFrame 作为示例数据:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 创建示例数据
data = {
'日期': pd.date_range(start='2023-01-01', periods=10, freq='D'),
'商品': ['苹果', '香蕉', '橙子', '苹果', '香蕉', '橙子', '苹果', '香蕉', '橙子', '苹果'],
'销售额': [150, 200, 100, 170, 210, 90, 180, 220, 110, 160]
}
df = pd.DataFrame(data)
2. 数据分析
我们将计算每天的总销售额和每种商品的平均销售额。
# 计算每天的总销售额
daily_sales = df.groupby('日期')['销售额'].sum().reset_index()
# 计算每种商品的平均销售额
average_sales = df.groupby('商品')['销售额'].mean().reset_index()
3. 数据可视化
现在,我们将使用 Matplotlib 和 Seaborn 绘制销售数据的图表。
绘制每天的销售额折线图:
plt.figure(figsize=(10, 5))
sns.barplot(data=average_sales, x='商品', y='销售额', palette='viridis')
plt.title('不同商品的平均销售额')
plt.xlabel('商品')
plt.ylabel('平均销售额')
plt.tight_layout()
plt.show()
绘制不同商品的平均销售额柱状图:
plt.figure(figsize=(10, 5))
sns.barplot(data=average_sales, x='商品', y='销售额', palette='viridis')
plt.title('不同商品的平均销售额')
plt.xlabel('商品')
plt.ylabel('平均销售额')
plt.tight_layout()
plt.show()
4. 结果分析
- 折线图:展示了每日的销售趋势,帮助我们识别销售高峰期和低谷。
- 柱状图:比较了不同商品的平均销售额,可以帮助商店决策更有效的库存管理和促销策略.
完整的 Python 代码示例
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# 创建示例数据
data = {
'日期': pd.date_range(start='2023-01-01', periods=10, freq='D'),
'商品': ['苹果', '香蕉', '橙子', '苹果', '香蕉', '橙子', '苹果', '香蕉', '橙子', '苹果'],
'销售额': [150, 200, 100, 170, 210, 90, 180, 220, 110, 160]
}
df = pd.DataFrame(data)
# 计算每天的总销售额
daily_sales = df.groupby('日期')['销售额'].sum().reset_index()
# 计算每种商品的平均销售额
average_sales = df.groupby('商品')['销售额'].mean().reset_index()
# 绘制每日销售额折线图
plt.figure(figsize=(10, 5))
sns.lineplot(data=daily_sales, x='日期', y='销售额', marker='o')
plt.title('每日销售额')
plt.xlabel('日期')
plt.ylabel('销售额')
plt.xticks(rotation=45)
plt.grid()
plt.tight_layout()
plt.show()
# 绘制不同商品的平均销售额柱状图
plt.figure(figsize=(10, 5))
sns.barplot(data=average_sales, x='商品', y='销售额', palette='viridis')
plt.title('不同商品的平均销售额')
plt.xlabel('商品')
plt.ylabel('平均销售额')
plt.tight_layout()
plt.show()