西饼屋订单关联分析代码
时间: 2024-11-22 22:29:08 浏览: 16
为了完成西饼屋订单关联分析,可以按照以下步骤编写代码:
### 1. 导入必要的库
```python
import pandas as pd
from mlxtend.preprocessing import TransactionEncoder
from mlxtend.frequent_patterns import apriori, association_rules
```
### 2. 加载数据
```python
# 加载订单数据
orders = pd.read_csv('breakfast.csv')
# 加载面包和饮料数据
bread = pd.read_csv('bread.csv')
drinks = pd.read_csv('drink.csv')
```
### 3. 统计商品的热销情况
```python
# 统计每种商品的销售数量
item_sales = orders['item'].value_counts()
print("热销商品统计:")
print(item_sales)
```
### 4. 分析商品结构
```python
# 合并面包和饮料数据
all_items = pd.concat([bread, drinks])
# 统计各类别商品的数量
category_sales = all_items.groupby('category')['name'].count()
print("商品结构分析:")
print(category_sales)
```
### 5. 构建购物篮数据
```python
# 将订单数据转换为购物篮格式
basket_data = orders.groupby(['order_id', 'item'])['quantity'].sum().unstack().reset_index().fillna(0).set_index('order_id')
# 定义函数将数值转换为布尔值
def encode_units(x):
if x <= 0:
return False
if x >= 1:
return True
# 应用编码函数
basket_encoded = basket_data.applymap(encode_units)
# 转换为列表形式
transaction_list = basket_encoded.reset_index().drop('order_id', axis=1).values.tolist()
```
### 6. 构建二元矩阵
```python
te = TransactionEncoder()
te_ary = te.fit(transaction_list).transform(transaction_list)
df = pd.DataFrame(te_ary, columns=te.columns_)
```
### 7. 使用Apriori算法进行关联分析
```python
# 找出频繁项集
frequent_itemsets = apriori(df, min_support=0.01, use_colnames=True)
# 生成关联规则
rules = association_rules(frequent_itemsets, metric="lift", min_threshold=1)
# 输出结果
print("频繁项集:")
print(frequent_itemsets)
print("\n关联规则:")
print(rules)
```
### 8. 可视化结果(可选)
```python
import matplotlib.pyplot as plt
# 绘制支持度-置信度图
plt.scatter(rules['support'], rules['confidence'], alpha=0.5)
plt.xlabel('Support')
plt.ylabel('Confidence')
plt.title('Support vs Confidence')
plt.show()
```
以上代码涵盖了从数据加载到关联分析的完整流程。你可以根据实际需要调整参数和输出格式。希望这对你有帮助!
阅读全文