一、大型超市用户行为分析探索
-
客户分析
- 客户细分:根据 ‘Segment’、‘City’、‘State’、'Country’等字段,对客户进行细分分析,了解不同类型客户的特征和需求。
- 客户价值:分析’Sales’、‘Profit’、'Quantity’等指标,评估不同客户群体的价值,识别高价值客户。
- 客户忠诚度:结合’Order Date’、'Order Priority’等字段,分析客户的复购率、重复订单频次等,评估客户忠诚度。
-
商品分析
- 商品热销分析:‘Sales’、‘Quantity’等指标帮助识别销量top的商品,分析其特征如’Category’、‘Sub-Category’、'Product Name’等。
- 商品利润分析:‘Profit’、‘Discount’、'Shipping Cost’等指标,帮助评估商品的盈利能力,找出利润空间大的商品。
- 商品组合优化:结合客户分析结果,优化商品结构和陈列,提高整体销售绩效。
-
营销分析
- 促销效果评估:‘Sales’、'Discount’等指标帮助分析不同促销活动的效果,调整优化促销策略。
- 季节性分析:‘Month Name’、'Month order’等字段,发现销售的季节性规律,有针对性地制定营销计划。
- 渠道效率分析:'Order Priority’等字段,评估不同订单优先级渠道的转化率和贡献度,优化营销渠道投放。
-
物流分析
- 配送效率:‘Shipping Cost’、'Quantity’等指标,分析不同配送方式的成本和效率,优化物流方案。
- 库存管理:‘Quantity’、'Order Date’等数据,预测销售趋势,合理调整库存水平,提高资金利用率。
-
数据可视化与洞见传达
- 制作各类报表和仪表盘,直观展示关键指标变动趋势。
- 根据分析结果,提出针对性的运营优化建议,如客户细分营销方案、商品结构调整、促销策略优化等。
- 将分析洞见有效传达给相关部门和决策者,推动业务改进。
通过这样一个全面的数据分析体系,运营团队可以深入了解客户需求、商品表现、营销效果和物流运营等关键领域,为提升整体业务绩效提供有力支撑。
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.tsa.seasonal import seasonal_decompose
from matplotlib.font_manager import FontProperties
# 设置中文字体
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
file_path = 'SuperStore.xlsx'
df = pd.read_excel(file_path)
'''----- 用户分析------'''
# 客户细分分析
def customer_segmentation(df):
"""
根据'Customer Segment'、'City'、'State'、'Country'等字段对客户进行细分
返回一个包含客户细分结果的字典
"""
# 按'Customer Segment'分组统计客户数量
segment_counts = df.groupby('Segment')['Customer ID'].nunique().to_dict()
# 按城市、州和国家分组统计客户数量
city_counts = df.groupby('City')['Customer ID'].nunique().nlargest(10).to_dict()
state_counts = df.groupby('State')['Customer ID'].nunique().nlargest(10).to_dict()
country_counts = df.groupby('Country')['Customer ID'].nunique().nlargest(10).to_dict()
# 可视化客户细分结果
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
# 按'Customer Segment'分布
segment_counts_df = pd.DataFrame.from_dict(segment_counts, orient='index')
segment_counts_df.reset_index(inplace=True)
segment_counts_df.columns = ['Segment', 'Customer Count']
segment_counts_df.plot(kind='bar', x='Segment', y='Customer Count', ax=axes[0, 0])
axes[0, 0].set_title('客户细分 - 按Segment')
# 按城市分布
city_counts_df = pd.DataFrame.from_dict(city_counts, orient='index')
city_counts_df.reset_index(inplace=True)
city_counts_df.columns = ['City', 'Customer Count']
city_counts_df.plot(kind='bar', x='City', y='Customer Count', ax=axes[0, 1])
axes[0, 1].set_title('客户细分 - 按城市')
# 按州分布
state_counts_df = pd.DataFrame.from_dict(state_counts, orient='index')
state_counts_df.reset_index(inplace=True)
state_counts_df.columns = ['State', 'Customer Count']
state_counts_df.plot(kind='bar', x='State', y='Customer Count', ax=axes[1, 0])
axes[1, 0].set_title('客户细分 - 按州')
# 按国家分布
country_counts_df = pd.DataFrame.from_dict(country_counts, orient='index')
country_counts_df.reset_index(inplace=True)
country_counts_df.columns = ['Country', 'Customer Count']
country_counts_df.plot(kind='bar', x='Country', y='Customer Count', ax=axes[1, 1])
axes[1, 1].set_title('客户细分 - 按国家')
plt.tight_layout()
plt.show()
# 返回客户细分结果
return {
'Customer Segment': segment_counts,
'City': city_counts,
'State&#