找文章 / 找答案

[Python独家资料] 简单的数据分析案例,使用Python做销售订单分析

喝酸奶不舔盖钻石一 显示全部楼层 发表于 4 天前 |阅读模式 打印 上一主题 下一主题
我们常讲数据分析的三大作用:现状分析、原因分析、预测分析,现状分析可以表明当前的业务状况,对当前的业务状况做分析,可以给决策者提供一个数据支撑和参考。

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

示例工具:anconda3.7
本文讲解内容:销售订单数据分析
适用范围:Python业务数据分析
研究目的
  • 订单前十的产品都有哪些?
  • 销售量前十的产品都有哪些?
  • 每个分拨中心的销量占比是多少?
  • 哪些月份订单量最多?
数据导入
使用pandas包导入数据,其中parse_dates用于解析日期。
import pandas as pd from datetime import datetime df=pd.read_excel(r'C:/Users/尚天强/Desktop/销售订单明细.xlsx',parse_dates=['发货日期']) df.head()
订单前十的产品
查看订单量前十的产品都有哪些?使用value_counts()函数进行分组计数,默认是降序排列,同时使用head函数选取前十个数据结果,其中充电宝订单数排第一位。
count_ten=df['产品名称'].value_counts().head(10) count_ten
数字不太直观,我们导入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()
销售量前十的产品
查看销售量前十的产品,按照产品名称分组求和,然后使用sort_values函数设置ascending=False参数进行降序排列。
sale_ten=df.groupby('产品名称')['销售数量'].sum().sort_values(ascending=False).head(10) sale_ten
使用条形图直观地展示数据结果,手机壳的销量排第一位,表明手机壳更新换代速度比较快,产品需求多。
sale_ten_sort=sale_ten.sort_values() sale_ten_sort.plot.barh()
每个分拨中心中心的销量占比
每款产品都是由分拨中心始发,查看每个分拨中心中心的销量占比,使用groupby函数根据发货地分组求和,同时除以总销量,即可得到每个分拨中心的销量占比。
fahuoz_count=df.groupby('发货地')['销售数量'].sum()/df['销售数量'].sum() fahuoz_count
使用plot.pie函数绘制一个饼图,由图可以看出上海分拨中心的的销量占比最高,达到37.89%,郑州分拨中心的销量占比最低,仅有11.38%。
fahuoz_count.plot.pie(figsize=(5, 5),startangle=90,autopct='%1.2f%%')
哪些月份订单量最多
查看哪些月份的订单最多,这里筛选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
使用dtypes函数查看数据类型,可以看到初始的订单日期为日期类型,提取后的月份字段变为字符类型。
this_year.dtypes
计算每个月的订单数,按照月份进行分组计数,其中nunique函数可以实现非重复计数功能。
this_year.groupby('月份')['订单号'].nunique()

使用plot函数绘制一个折线图,由图可以看出2018年12月的订单数最多,2018年2月份的订单数最少。
this_year.groupby('月份')['订单号'].nunique().plot(figsize=(6, 4))

文章源自:大话数据分析

回复

使用道具 举报

高级模式
您需要登录后才可以回帖 登录 | 免费注册

  • 官方微信

    欢迎关注永洪服务号!收费为0,价值无限

    扫码关注
  • 新浪微博

    让每位用户轻松挖掘数据价值!

    访问新浪微博
  • 智能客服
50W

会员等你来哦

Copyright   ©2012-2024  北京永洪商智科技有限公司  (京ICP备12050607) 京公网安备110110802011451号 |联系社区管理员|《永洪社区协议》
返回顶部