完整代码数据与注释:销售数据分析与用户画像生成

项目介绍

这个项目旨在对销售数据进行深入分析,并通过用户画像生成来揭示销售业务中的关键信息。通过对销售额、数量、利润等指标的统计分析,以及产品销售情况、地域销售情况、客户销售情况和时间趋势的分析,帮助企业了解销售业绩表现、产品热卖情况、地域销售重点、客户贡献度以及销售额的月度趋势。同时,通过用户画像生成函数,可以根据用户姓名获取其消费数据,分析其消费习惯,包括总消费额、平均订单金额和最常购买的产品。

数据展示

整体数据拥有以下特征,共计10000条数据。

<class 'pandas.core.frame.DataFrame'>
Int64Index: 9959 entries, 1 to 10000
Data columns (total 19 columns):
 #   Column  Non-Null Count  Dtype         
---  ------  --------------  -----         
 0   订单 ID   9959 non-null   object        
 1   订单日期    9959 non-null   datetime64[ns]
 2   发货日期    9959 non-null   datetime64[ns]
 3   邮寄方式    9959 non-null   object        
 4   客户 ID   9959 non-null   object        
 5   客户名称    9959 non-null   object        
 6   细分      9959 non-null   object        
 7   城市      9959 non-null   object        
 8/自治区   9959 non-null   object        
 9   国家      9959 non-null   object        
 10  地区      9959 non-null   object        
 11  产品 ID   9959 non-null   object        
 12  类别      9959 non-null   object        
 13  子类别     9959 non-null   object        
 14  产品名称    9959 non-null   object        
 15  销售额     9954 non-null   float64       
 16  数量      9950 non-null   float64       
 17  折扣      9952 non-null   float64       
 18  利润      9956 non-null   float64       
dtypes: datetime64[ns](2), float64(4), object(13)

项目思路与主要代码

1. 数据读取和基本信息查看

首先通过pd.read_excel()方法读取名为"data.xls"的Excel文件中的数据,然后使用set_index()方法将"行 ID"列设置为数据的索引,并通过info()方法查看数据的基本信息。
在这个部分的实现过程中,首先使用pd.read_excel()方法读取名为"data.xls"的Excel文件中的数据,并将其存储在名为data的DataFrame中。接着,使用set_index()方法将DataFrame中的索引设置为"行 ID"列,这样可以更方便地按照行 ID 进行数据检索。最后,通过调用info()方法,查看数据的基本信息,包括列名、非空值数量、数据类型等。

import pandas as pd

# 读取数据
data = pd.read_excel("data.xls")

# 将行ID作为索引
data = data.set_index('行 ID')

# 查看数据的基本信息
print(data.info())

这段代码首先导入了Pandas库,然后通过pd.read_excel(“data.xls”)读取名为"data.xls"的Excel文件,并将数据存储在名为data的DataFrame中。接着,使用set_index(‘行 ID’)将"行 ID"列设置为DataFrame的索引。最后,通过print(data.info())查看数据的基本信息,包括索引类型、列名、非空值数量和数据类型等。

2. 销售数据统计分析

通过describe()方法查看"销售额"、"数量"和"利润"列的统计信息,以及计算各列之间的相关性矩阵。
在销售数据统计分析部分,代码的主要逻辑如下:

  1. 使用describe()方法查看"销售额"、"数量"和"利润"列的统计信息,包括平均值、标准差、最小值、最大值等。
  2. 计算各列之间的相关性矩阵,可以通过corr()方法实现,它会计算不同列之间的相关性系数。
# 探索销售额、数量和利润的统计信息
print(data[['销售额', '数量', '利润']].describe())

# 销售额、数量和利润之间的相关性分析
correlation_matrix = data.corr()
print(correlation_matrix)

通过以上代码,可以快速查看销售额、数量和利润列的统计信息,以及了解这些列之间的相关性,帮助进一步理解销售数据的特征和关联情况。

3. 产品销售情况分析

对产品名称进行分组,并计算每个产品的销售额总和,最后按销售额降序排列并输出前10个产品的销售情况。
在产品销售情况分析部分,代码的主要逻辑如下:

  1. 使用groupby(‘产品名称’)将数据按产品名称进行分组。
  2. 计算每个产品的销售额总和,可以通过sum()方法实现。
  3. 对产品销售额进行降序排列,可以通过sort_values(ascending=False)实现。
  4. 最后,输出前10个产品的销售情况。
# 产品销售情况分析
product_sales = data.groupby('产品名称')['销售额'].sum().sort_values(ascending=False)
print("产品销售情况:\n", product_sales.head(10))

通过这段代码,可以对不同产品的销售情况进行分析,了解哪些产品销售额较高,从而帮助企业了解产品的热门程度和销售贡献。

4. 地域分析

对地区进行分组,并计算每个地区的销售额总和,最后按销售额降序排列输出地域销售情况。

  1. 使用groupby(‘地区’)将数据按地区进行分组。
  2. 计算每个地区的销售额总和,可以通过sum()方法实现。
  3. 对地区销售额进行降序排列,可以通过sort_values(ascending=False)实现。
  4. 最后,输出按销售额降序排列的地域销售情况。
# 地域分析
region_sales = data.groupby('地区')['销售额'].sum().sort_values(ascending=False)
print("地域销售情况:\n", region_sales)

通过这段代码,可以对不同地区的销售情况进行分析,了解哪些地区的销售额较高,帮助企业了解销售重点地域和市场表现。

5. 客户分析

对客户名称进行分组,并计算每个客户的销售额总和,最后按销售额降序排列输出客户销售情况的前10名。

  1. 使用groupby(‘客户名称’)将数据按客户名称进行分组。
  2. 计算每个客户的销售额总和,可以通过sum()方法实现。
  3. 对客户销售额进行降序排列,可以通过sort_values(ascending=False)实现。
  4. 最后,输出按销售额降序排列的客户销售情况的前10名。
# 客户分析
customer_sales = data.groupby('客户名称')['销售额'].sum().sort_values(ascending=False)
print("客户销售情况:\n", customer_sales.head(10))

通过这段代码,可以对不同客户的销售情况进行分析,了解哪些客户贡献了较高的销售额,帮助企业了解客户贡献度和重点客户的销售表现。

6. 时间趋势分析

将订单日期转换为月份格式,计算每个月的销售额总和,然后绘制月度销售额趋势图表。

  1. 将订单日期转换为月份格式,可以通过提取日期中的月份信息来实现。
  2. 计算每个月的销售额总和,通过使用groupby(‘订单月份’)[‘销售额’].sum()方法可以实现。
  3. 绘制月度销售额趋势图表,可以使用数据可视化库(如Matplotlib、Seaborn等)绘制线形图来展示销售额随时间的变化趋势。
import matplotlib.pyplot as plt
import seaborn as sns

# 将订单日期转换为月份格式
data['订单月份'] = data['订单日期'].dt.month

# 计算每个月的销售额总和
monthly_sales = data.groupby('订单月份')['销售额'].sum()

# 绘制月度销售额趋势图表
plt.figure(figsize=(10, 6))
sns.lineplot(x=monthly_sales.index, y=monthly_sales.values)
plt.title('月度销售额趋势')
plt.xlabel('月份')
plt.ylabel('销售额')
plt.show()

print("月度销售额趋势:\n", monthly_sales)

通过这段代码,可以对销售额随时间的变化趋势进行可视化展示,帮助企业了解销售业绩在不同月份的表现。
在这里插入图片描述

7. 用户画像函数

定义了一个名为get_user_profile的函数,根据输入的用户姓名筛选出该用户的消费数据,并分析其消费习惯,包括总消费额、平均订单金额和最常购买的产品。如果找不到该用户信息,则返回相应提示。

  1. 定义一个名为get_user_profile的函数,该函数接收一个用户姓名作为输入参数。
  2. 在函数内部,根据输入的用户姓名筛选出该用户的消费数据,可以使用data[data[‘客户名称’] == user_name]来实现。
  3. 如果找到了该用户的消费数据,对其进行分析,包括计算总消费额、平均订单金额和最常购买的产品。
  4. 如果未找到该用户信息(即筛选出的数据为空),则返回相应提示。
def get_user_profile(user_name):
    # 根据用户姓名筛选数据
    user_data = data[data['客户名称'] == user_name]

    if user_data.empty:
        return "找不到该用户信息"

    # 对用户的消费数据进行进一步分析
    total_spending = user_data['销售额'].sum()
    average_order_amount = user_data['销售额'].mean()
    most_purchased_product = user_data['产品名称'].mode().values[0]

    return f"用户:{user_name}\n总消费额:{total_spending}\n平均订单金额:{average_order_amount}\n最常购买的产品:{most_purchased_product}"

# 调用函数并输出用户画像
user_name = "某某客户"  # 输入要查询的用户姓名
user_profile = get_user_profile(user_name)
print(user_profile)

通过这段代码,可以根据输入的用户姓名获取该用户的消费数据,并分析其消费习惯,包括总消费额、平均订单金额和最常购买的产品。如果未找到该用户信息,则会返回相应的提示。

8. 用户画像生成

通过用户输入获取用户姓名,然后调用get_user_profile函数生成用户画像,并输出用户的消费习惯信息。

  1. 用户输入要查询的用户姓名。
  2. 调用之前定义的get_user_profile函数,传入用户输入的姓名作为参数,生成用户画像信息。
  3. 输出用户的消费习惯信息,包括总消费额、平均订单金额和最常购买的产品。
# 用户输入要查询的用户姓名
user_name = input("请输入要查询的用户姓名:")

# 调用get_user_profile函数生成用户画像
user_profile = get_user_profile(user_name)

# 输出用户的消费习惯信息
print(user_profile)

通过这段代码,用户可以输入要查询的用户姓名,然后调用get_user_profile函数生成该用户的消费画像信息,并输出用户的消费习惯信息,帮助企业了解特定客户的消费行为和偏好。

项目链接

GitHub:https://github.com/Olivia-account/Sales-Data-Analysis-and-User-Profiling-Project

后记

如果觉得有帮助的话,求 关注、收藏、点赞、星星 哦!

  • 18
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能技术小白修炼手册

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值