讯问过程:
帮我完成一个电商平台商品销售数据分析案例,使用python即可
豆包分析结果:
一、数据获取
目标:从数据库或文件中获取原始销售数据
数据来源:MySQL数据库(示例)
字段说明:
• order_id:订单ID
• product_id:商品ID
• category:商品类别
• price:商品单价
• quantity:购买数量
• user_id:用户ID
• purchase_date:购买日期
• region:用户所在地区
• payment_method:支付方式
代码示例:
import pymysql
import pandas as pd
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='ecommerce'
)
# 读取数据
query = """
SELECT
order_id, product_id, category, price, quantity,
user_id, purchase_date, region, payment_method
FROM sales
"""
data = pd.read_sql(query, conn)
conn.close()
二、数据预处理
目标:清洗、转换数据,确保分析准确性
1. 数据清洗• 缺失值处理:
# 检查缺失值
print(data.isnull().sum())
# 填充数值型缺失值(如price)
data['price'].fillna(data['price'].median(), inplace=True)
# 删除类别型缺失值(如category)
data.dropna(subset=['category'], inplace=True)
• 异常值处理:
# 用箱线图检测price异常值
import matplotlib.pyplot as plt
plt.boxplot(data['price'])
plt.show()
# 删除price为负数的记录
data = data[data['price'] > 0]
2. 数据转换• 时间格式转换:
data['purchase_date'] = pd.to_datetime(data['purchase_date'])
data['month'] = data['purchase_date'].dt.month_name() # 提取月份名称
• 类别编码:
# 独热编码(如payment_method)
data = pd.get_dummies(data, columns=['payment_method'])
# 标签编码(如region)
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data['region'] = le.fit_transform(data['region'])
三、数据分析
1. 销售趋势分析
• 按时间统计销售额:
monthly_sales = data.resample('M', on='purchase_date')['price'].sum()
monthly_sales.plot(kind='line', figsize=(10, 5))
plt.title('Monthly Sales Trend')
plt.xlabel('Date')
plt.ylabel('Sales')
plt.show()
2. 商品销售排名
• TOP 10畅销商品:
top_products = data.groupby('product_id')['quantity'].sum().sort_values(ascending=False).head(10)
print(top_products)
3. 用户行为分析
• 用户购买频率:
user_purchase_count = data['user_id'].value_counts()
print(user_purchase_count.head()) # 高频用户
4. 地域分析
• 各地区销售额对比:
regional_sales = data.groupby('region')['price'].sum().sort_values(ascending=False)
regional_sales.plot(kind='bar', figsize=(10, 5))
plt.title('Sales by Region')
plt.xlabel('Region')
plt.ylabel('Sales')
plt.show()
5. 商品关联分析• 使用Apriori算法挖掘关联规则:
from mlxtend.frequent_patterns import apriori, association_rules
# 构造购物篮数据
basket = data.groupby('order_id')['product_id'].apply(list).reset_index()
# 转换为二进制矩阵
from mlxtend.preprocessing import TransactionEncoder
te = TransactionEncoder()
te_ary = te.fit(basket['product_id']).transform(basket['product_id'])
df_basket = pd.DataFrame(te_ary, columns=te.columns_)
# 挖掘频繁项集
frequent_items = apriori(df_basket, min_support=0.01, use_colnames=True)
# 生成关联规则
rules = association_rules(frequent_items, metric='lift', min_threshold=1.5)
print(rules[['antecedents', 'consequents', 'support', 'confidence', 'lift']].head())
四、可视化与报告
推荐图表:
1. 折线图:展示销售额随时间变化趋势
2. 柱状图:对比不同商品或地区的销售表现
3. 热力图:显示不同时间段的销售高峰
4. 词云图:分析用户搜索关键词或商品类别示例代码:
import seaborn as sns
# 绘制热力图(时间与销售额的关系)
sales_by_month = data.groupby('month')['price'].sum().reset_index()
plt.figure(figsize=(10, 5))
sns.barplot(x='month', y='price', data=sales_by_month)
plt.title('Sales by Month')
plt.xlabel('Month')
plt.ylabel('Sales')
plt.show()
五、结果应用
1. 库存优化:对畅销商品增加库存,滞销商品降价促销。
2. 精准营销:
◦ 向高频用户推送专属优惠券。
◦ 根据地域偏好调整广告投放策略。
3. 商品推荐:基于关联规则,在商品详情页展示“购买此商品的用户还买了...”。
六、注意事项
1. 数据隐私:避免直接使用用户敏感信息(如身份证号)。
2. 时效性:分析需定期更新,确保策略与市场变化同步。
3. 可解释性:复杂模型(如深度学习)需配合业务逻辑解释结果。
通过以上步骤,可系统性地完成电商销售数据分析,并为业务决策提供支持。