Python销售订单分析

部署运行你感兴趣的模型镜像

我们常讲数据分析的三大作用:现状分析、原因分析、预测分析,现状分析可以表明当前的业务状况,对当前的业务状况做分析,可以给决策者提供一个数据支撑和参考。

本节使用一组销售订单明细数据,研究不同产品的订单数和销量情况,同时研究每个分拨中心的销量占比以及哪些月份订单量最多,综合数据分析的结果给业务决策热提供数据支持。

示例工具:anconda3.7

本文讲解内容:销售订单数据分析

适用范围:Python业务数据分析

4bbbd3be16529433240525301b115924.gif

数据获取

获取本节的案例数据:

「销售订单分析」https://www.aliyundrive.com/s/8yihmUZPhWK

研究目的

  1. 订单前十的产品都有哪些?

  2. 销售量前十的产品都有哪些?

  3. 每个分拨中心的销量占比是多少?

  4. 哪些月份订单量最多?

数据导入

使用pandas包导入数据,其中parse_dates用于解析日期。

import pandas as pd
from datetime import datetime
df=pd.read_excel(r'C:/Users/尚天强/Desktop/销售订单明细.xlsx',parse_dates=['发货日期'])
df.head()

d04cf05156e9b64db001606b277a0cf3.png

订单前十的产品

查看订单量前十的产品都有哪些?使用value_counts()函数进行分组计数,默认是降序排列,同时使用head函数选取前十个数据结果,其中充电宝订单数排第一位。

count_ten=df['产品名称'].value_counts().head(10)
count_ten

2a61aa0bfa2b55b4ad693ae79c230496.png

数字不太直观,我们导入matplotlib包将订单量可视化进行展示。

import matplotlib.pyplot as plt
#让图表直接在Jupyter Notebook中展示出来
%matplotlib inline
plt.rcParams["font.sans-serif"] = 'SimHei'  #中文乱码问题
plt.rcParams['axes.unicode_minus'] = False   #负号无法显示
%config InlineBackend.figure_format = 'svg'  #设置图表为数量图格式形式

value_counts函数是默认降序排列,可以使用sort_values函数升序排列后,使用plot.barh函数做一个条形图,由图可以看出订单数排前十的产品,且贴膜和数据线这两款产品之间订单数出现显著差异。

count_ten=count_ten.sort_values()
count_ten.plot.barh()

9a428982f8e4c12c3122bd1fd32bfa12.png

销售量前十的产品

查看销售量前十的产品,按照产品名称分组求和,然后使用sort_values函数设置ascending=False参数进行降序排列。

sale_ten=df.groupby('产品名称')['销售数量'].sum().sort_values(ascending=False).head(10)
sale_ten

df7522a83b45679657a21f3b6142ab52.png

使用条形图直观地展示数据结果,手机壳的销量排第一位,表明手机壳更新换代速度比较快,产品需求多。

sale_ten_sort=sale_ten.sort_values()
sale_ten_sort.plot.barh()

c33d46c7f1ce45b50b3db686be35514b.png

每个分拨中心中心的销量占比

每款产品都是由分拨中心始发,查看每个分拨中心中心的销量占比,使用groupby函数根据发货地分组求和,同时除以总销量,即可得到每个分拨中心的销量占比。

fahuoz_count=df.groupby('发货地')['销售数量'].sum()/df['销售数量'].sum()
fahuoz_count

a6a3313fe06ec7f17dc6a502095fd24d.png

使用plot.pie函数绘制一个饼图,由图可以看出上海分拨中心的的销量占比最高,达到37.89%,郑州分拨中心的销量占比最低,仅有11.38%。

fahuoz_count.plot.pie(figsize=(5, 5),startangle=90,autopct='%1.2f%%')

d9c93c96c69dba72ed9aca2757419012.png

哪些月份订单量最多

查看哪些月份的订单最多,这里筛选2018年1月1日到2018年12月31日的数据,同时使用map和lambda函数提取年月,将提取的年月数据格式变化为字符类型。

#筛选2018年数据
this_year=df[(df['订单日期']>=datetime(2018,1,1))&(df['订单日期']<=datetime(2018,12,31))]
this_year=this_year.copy()
this_year['月份']=this_year['订单日期'].map(lambda x:str(x.strftime('%Y%m')))#提取月份数据
this_year

6ad946c7c51e214996e93545946fdea4.png

使用dtypes函数查看数据类型,可以看到初始的订单日期为日期类型,提取后的月份字段变为字符类型。

this_year.dtypes

8cc89f001339c93ef91e7ed361efeca8.png

计算每个月的订单数,按照月份进行分组计数,其中nunique函数可以实现非重复计数功能。

this_year.groupby('月份')['订单号'].nunique()

1154ba22138ecbaeae0787e7b3c5ecaf.png

使用plot函数绘制一个折线图,由图可以看出2018年12月的订单数最多,2018年2月份的订单数最少。

this_year.groupby('月份')['订单号'].nunique().plot(figsize=(6, 4))

a17b54b9bc03fb4824f0ec7879f65ad4.png

END -

对比Excel系列图书累积销量达15w册,让你轻松掌握数据分析技能,可以在全网搜索书名进行了解选购:

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 使用Python进行销售订单数据分析可视化 #### 数据读取与清理 为了有效地分析销售订单数据,首先需要加载必要的库并导入数据文件。通常使用的库有`pandas`用于数据操作,`matplotlib`和`seaborn`用于绘图。 ```python import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 假设CSV文件名为 'sales_data.csv' data = pd.read_csv('sales_data.csv') # 查看前几行记录以理解数据结构 print(data.head()) ``` 对于任何缺失值或异常值的数据集都需要特别注意,在此阶段应该识别这些问题并通过适当的方法解决它们[^2]。 #### 数据预处理与分类 一旦完成了初步的清洗工作之后,则需进一步对数据进行整理以便于后续更深入的研究。这可能涉及到日期时间字段转换、创建新的特征变量等操作。 ```python from datetime import datetime # 将Order Date列转化为datetime对象 data['Order Date'] = pd.to_datetime(data['Order Date']) # 添加月份作为新特性 data['Month'] = data['Order Date'].dt.month # 统计每个月销售额总金额 monthly_sales = data.groupby(['Year', 'Month'])['Sales'].sum().reset_index() ``` #### 数据可视化 通过图表来直观呈现数据趋势是非常重要的一步。这里会介绍几种常见的图形类型及其应用场景: - **折线图**:适合用来表示随时间变化的趋势。 ```python plt.figure(figsize=(10,6)) sns.lineplot(x='Month', y='Sales', hue='Year', data=monthly_sales) plt.title('Monthly Sales Over Time') plt.show() ``` - **柱状图**:可用于比较不同类别间的差异。 ```python category_totals = data.groupby('Category')['Quantity Ordered'].sum() fig, ax = plt.subplots() category_totals.plot(kind='bar', ax=ax) plt.title('Total Quantity Sold by Category') plt.ylabel('Quantity Ordered') plt.xlabel('Product Categories') plt.xticks(rotation=45) plt.tight_layout() plt.show() ``` - **饼图**:当想要展示各部分占整体的比例时非常有用。 ```python product_type_counts = data['Type of Product'].value_counts() plt.pie(product_type_counts.values, labels=product_type_counts.index, autopct='%1.1f%%') plt.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle. plt.title('Distribution of Different Types of Products') plt.show() ``` 这些只是基本的例子;实际应用中还可以探索更多复杂的视觉化方式,比如热力图、散点矩阵等等[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值