2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析
包含但不限于以下问题:对数据进行预处理与探索
对附件中直播带货商品进行统计分析并可视化。
顾客画像是指根据顾客的属性、顾客偏好、顾客行为等信息而抽象出来的标签化用户模型。通俗说就是给顾客打标签,而标签是通过对顾客信息分析而来的高度精炼的特征标识。通过打标签可以利用一些高度概括、容易理解的特征来描述顾客,可以让人更容易理解顾客,请构建顾客属性、消费水平和消费偏好等标签,并绘制顾客画像。
求具体Python代码
2024年全国大学生数据分析大赛A题:直播带货与电商产品的大数据分析 求Python代码
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.preprocessing import LabelEncoder # 假设数据已经以CSV格式存储,并包含以下列: # 商品信息表:product_df(商品ID, 商品名称, 商品类别, 商品价格, ...) # 销售记录表:sales_df(销售ID, 商品ID, 顾客ID, 购买数量, 购买时间, ...) # 顾客信息表:customer_df(顾客ID, 顾客姓名, 顾客年龄, 顾客性别, 顾客地区, ...) # 加载数据 product_df = pd.read_csv('products.csv') sales_df = pd.read_csv('sales.csv') customer_df = pd.read_csv('customers.csv') # 数据预处理(示例) # 处理缺失值(这里以填充0为例,实际情况可能需要根据数据特点进行处理) sales_df.fillna(0, inplace=True) # 统计分析商品销量和销售额 sales_grouped = sales_df.groupby('商品ID')['购买数量', '商品价格'].agg({'购买数量': 'sum', '商品价格': 'mean'}).reset_index() sales_grouped['销售额'] = sales_grouped['购买数量'] * sales_grouped['商品价格'] # 可视化商品销量和销售额 plt.figure(figsize=(14, 7)) plt.subplot(1, 2, 1) sns.barplot(x='购买数量', y='商品ID', data=sales_grouped.sort_values(by='购买数量', ascending=False).head(10), palette='viridis') plt.title('Top 10 商品销量') plt.xlabel('销量') plt.ylabel('商品ID') plt.subplot(1, 2, 2) sns.barplot(x='销售额', y='商品ID', data=sales_grouped.sort_values(by='销售额', ascending=False).head(10), palette='viridis') plt.title('Top 10 商品销售额') plt.xlabel('销售额') plt.ylabel('商品ID') plt.tight_layout() plt.show() # 构建顾客画像(示例) # 合并销售记录和顾客信息 customer_sales_df = sales_df.merge(customer_df, on='顾客ID', how='left') # 计算顾客的消费水平(总购买金额)和消费偏好(购买最多的商品类别) customer_spending = customer_sales_df.groupby('顾客ID')['购买数量', '商品价格'].agg({'购买数量': 'sum', '商品价格': 'mean'}).reset_index() customer_spending['总购买金额'] = customer_spending['购买数量'] * customer_spending['商品价格'] # 假设商品类别信息已经合并到销售记录表中 customer_preference = customer_sales_df.groupby(['顾客ID', '商品类别'])['购买数量'].sum().reset_index() customer_preference = customer_preference.sort_values(by=['顾客ID', '购买数量'], ascending=[True, False]).groupby('顾客ID').head(1) # 为顾客打标签(示例) def assign_labels(customer_df): labels = [] for _, row in customer_df.iterrows(): age_label = '青年' if row['顾客年龄'] < 35 else '中老年' gender_label = '男性' if row['顾客性别'] == '男' else '女性' spending_label = '高消费' if row['总购买金额'] > np.percentile(customer_df['总购买金额'], 75) else '低消费' preference_label = row['商品类别'] # 这里简单以购买最多的商品类别作为偏好标签 labels.append(f'{age_label}_{gender_label}_{spending_label}_{preference_label}') return labels customer_df['顾客标签'] = assign_labels(customer_spending.merge(customer_preference[['顾客ID', '商品类别']], on='顾客ID', how='left')) # 绘制顾客画像(示例) # 这里以顾客标签的分布为例进行可视化 label_counts = customer_df['顾客标签'].value_counts().reset_index() label_counts.columns = ['顾客标签', '人数'] plt.figure(figsize=(10, 6)) sns.barplot(x='人数', y='顾客标签', data=label_counts, palette='muted') plt.title('顾客画像 - 顾客标签分布') plt.xlabel('人数') plt.ylabel('顾客标签') plt.xticks(rotation=45) plt.tight_layout() plt.show() # 注意:以上代码为示例框架,实际使用时需要根据具体的数据结构和需求进行调整和优化。本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用