Python实战项目——物流行业数据分析(二)

简介: Python实战项目——物流行业数据分析(二)

今天我们对物流行业数据进行简单分析,数据来源:某企业销售的6种商品所对应的送货及用户反馈数据

解决问题:

1、配送服务是否存在问题

2、是否存在尚有潜力的销售区域

3、商品是否存在质量问题

分析过程:

依旧先进行数据处理

一、数据清洗

① 重复值、缺失值、格式调

② 异常值处理(比如:销售金额存在等于0的,数量和销售金额的标准差都在均值的8倍以上等)

二、数据规整

比如:增加一项辅助列:月份

三、数据分析并可视化

接下来我们按上面一步步开始。

导入库和数据

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt 
plt.rcParams['font.sans-serif'] = 'SimHei' ## 设置中文显示
data = pd.read_csv('data_wuliu.csv',encoding='gbk')
data.info()

数据清洗

重复值、缺失值、格式调整

data = pd.read_csv('data_wuliu.csv',encoding='gbk')
data.info()

通过info()可以看出,包括10列数据,名字,数据量,格式等,可以得出:
1.订单号,货品交货情况,数量:存在缺失值,但是确实量不大,可以删除
2.订单行,对分析无关紧要,可以考虑删除
3.销售金额格式不对(万元|元,逗号问题),数据类型需要转换成int|float

#删除重复记录
data.drop_duplicates(keep='first',inplace=True)
#删除缺失值(na,删除待有na的整行数据,axis=0,how='any'默认值)
data.dropna(axis=0,how='any',inplace=True)
#删除订单行(重复运行会报错,因为第一次已经删除了订单行这一列)
data.drop(columns=['订单行'],inplace=True,axis=1)
print(data.info())
#更新索引(drop=True:把原来的索引index列删除,重置index)
data.reset_index(drop=True,inplace=True)

处理后结果如下图所示。

取出销售金额列,对每一个数据进行清洗

编写自定义过滤函数:删除逗号,转成float,如果是万元则*10000,否则,删除元

def data_deal(number):
    if number.find('万元')!= -1:#找到带有万元的,取出数字,去掉逗号,转成float,*10000
        number_new = float(number[:number.find('万元')].replace(',',''))*10000
        pass
    else: #找到带有元的,删除元,删除逗号,转成float
        number_new = float(number.replace('元','').replace(',',''))
        pass
    return number_new
data['销售金额'] = data['销售金额'].map(data_deal)
data

异常值处理

由结果可得

1.销售金额为0的情况,删除
2.产生严重的数据左偏情况(电
商领域的2/8法则很正常。)

data = data[data['销售金额']!=0]
data

数据规整

增加一项辅助列:月份

data['销售时间'] = pd.to_datetime(data['销售时间'])
data['月份'] = data['销售时间'].apply(lambda x:x.month)
data

数据分析并可视化

我们回到一开始的问题,现在开始解决

问题1、配送服务是否存在问题

我们分别从月份维度,销售区域维度,货品维度,货品和销售区域结合四个角度来开始探讨。

a.月份维度
data['货品交货状况'] = data['货品交货状况'].str.strip()
data1 = data.groupby(['月份','货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
data1

从按时交货率来看,第四季度低于第三季度,猜测可能是气候原因造成

b.销售区域维度

data1 = data.groupby(['销售区域','货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
print(data1.sort_values(by='按时交货率',ascending=False))

西北地区存在突出的延时交货问题,急需解決

c.货品维度

data1 = data.groupby(['货品','货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
print(data1.sort_values(by='按时交货率',ascending=False))

货品4晚交货情况非常严重,其余货品相对交货

d.货品和销售区域结合

data1 = data.groupby(['货品','销售区域','货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
print(data1.sort_values(by='按时交货率',ascending=False))

销售区域:最差在西北地区,货品有1和4,主要是货品4送过较晚导致
货品:最差的货品2,主要送往华东和马来西亚,主要是马来西亚的送货较晚导致。

问题2、是否存在尚有潜力的销售区域

a.月份维度

data1 = data.groupby(['月份','货品'])['数量'].sum().unstack()
data1.plot(kind='line')

货品2在10月和12月份,销量猛增,原因猜测有二:1.公司加大营销力度 2.开发了新的市场(后续有结论)

b.不同区域

data1 = data.groupby(['销售区域','货品'])['数量'].sum().unstack()
data1

从销售区域看,每种货品销售区域为1~3个,货品1有三个销售区域,货品2有两个销售区域,其余货品均有1个销售区域

c.月份和区域

data1 = data.groupby(['月份','销售区域','货品'])['数量'].sum().unstack()
data1['货品2']



月份 销售区域
7 华东 489.0
7 华北 NaN
7 华南 NaN
7 泰国 NaN
7 西北 NaN
7 马来西亚 2.0
8 华东 1640.0
8 华北 NaN
8 华南 NaN
8 泰国 NaN
8 西北 NaN
8 马来西亚 1503.0
9 华东 3019.0
9 华北 NaN
9 华南 NaN
9 泰国 NaN
9 西北 NaN
9 马来西亚 1.0
10 华东 28420.0
10 华北 NaN
10 泰国 NaN
10 西北 NaN
10 马来西亚 NaN
11 华东 2041.0
11 华北 NaN
111 华南 NaN
11 泰国 NaN
111 西北 NaN
11 马来西亚 1.0
12 华东 18202.0
12 华北 NaN
12 华南 NaN
12 泰国 NaN
12 西北 NaN
12 马来西亚 3.0
Name: 货品2, dtype: float64

货品2在10,12月份销量猛增,原因主要发生在原有销售区域(华东)
同样,分析出在7,8,9,11月份销售数量还有很大提升空间,可以适当加大营销力度

问题3.商品是否存在质量问题

分析这个问题,我们需要依次算出拒货率,返修率,合格率。

data['货品用户反馈'] = data['货品用户反馈'].str.strip()  #取出首位空格
data1 = data.groupby(['货品','销售区域'])['货品用户反馈'].value_counts().unstack()
data1['拒货率'] = data1['拒货'] /data1.sum(axis=1)  #按行进行求和汇总
data1['返修率'] = data1['返修'] /data1.sum(axis=1)
data1['合格率'] = data1['质量合格'] /data1.sum(axis=1)
data1.sort_values(['合格率','返修率','拒货率'],ascending=False)

  • 货品3.6.5合格率均较高,返修率比较低,说明质量还可以
  • 货品1.2.4合格率较低,返修率较高,质量存在一定的问题,需要改善
  • 货品2在马拉西亚的拒货率最高,同时,在货品2在马拉西亚的按时交货率也非常低。猜测:马来西亚人对送货的时效性要求较高, 如果达不到,则往往考虑拒货。
  • -考虑到货品2主要在华东地区销售量大,可以考虑增大在华东的投资,适当较小马来西亚的投入。
相关文章
|
2天前
|
前端开发 API 开发者
Python Web开发者必看!AJAX、Fetch API实战技巧,让前后端交互如丝般顺滑!
【7月更文挑战第13天】在Web开发中,AJAX和Fetch API是实现页面无刷新数据交换的关键。在Flask博客系统中,通过创建获取评论的GET路由,我们可以展示使用AJAX和Fetch API的前端实现。AJAX通过XMLHttpRequest发送请求,处理响应并在成功时更新DOM。Fetch API则使用Promise简化异步操作,代码更现代。这两个工具都能实现不刷新页面查看评论,Fetch API的语法更简洁,错误处理更直观。掌握这些技巧能提升Python Web项目的用户体验和开发效率。
15 7
|
2天前
|
算法 数据挖掘 数据处理
搜索新境界:Python二分查找变种实战,精准定位数据不是梦!
【7月更文挑战第13天】二分查找算法以O(log n)效率在有序数组中查找数据。基础算法通过不断分割数组对比中间元素。Python实现变种包括:1) 查找目标值的第一个出现位置,找到后向左搜索;2) 查找目标值的最后一个出现位置,找到后向右搜索。这些变种在数据分析和索引构建等场景中极具价值,提升处理效率。
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
解锁 Python 数据分析新境界:Pandas 与 NumPy 高级技巧深度剖析
【7月更文挑战第12天】Python的Pandas和NumPy库助力高效数据处理。Pandas用于数据清洗,如填充缺失值和转换类型;NumPy则擅长数组运算,如元素级加法和矩阵乘法。结合两者,可做复杂数据分析和特征工程,如产品平均销售额计算及销售额标准化。Pandas的时间序列功能,如移动平均计算,进一步增强分析能力。掌握这两者高级技巧,能提升数据分析质量和效率。
16 4
爆赞!GitHub首本Python开发实战背记手册,标星果然百万名不虚传
Python (发音:[ 'paiθ(ə) n; (US) 'paiθɔn ] n. 蟒蛇,巨蛇 ),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。 Python 语言的特点:
|
3天前
|
Python
告别阻塞,拥抱未来!Python 异步编程 asyncio 库实战指南!
【7月更文挑战第12天】Python的`asyncio`库是异步编程的关键,它允许程序在等待IO操作时执行其他任务,提升效率。异步函数用`async def`定义,`await`用于挂起执行。
15 1
|
1天前
|
数据采集 数据挖掘 数据处理
Python数据分析加速器:深度挖掘Pandas与NumPy的高级功能
【7月更文挑战第14天】Python的Pandas和NumPy库是数据分析的核心工具。Pandas以其高效的数据处理能力,如分组操作和自定义函数应用,简化了数据清洗和转换。NumPy则以其多维数组和广播机制实现快速数值计算。两者协同工作,如在DataFrame与NumPy数组间转换进行预处理,提升了数据分析的效率和精度。掌握这两者的高级功能是提升数据科学技能的关键。**
7 0
|
3天前
|
数据挖掘 数据处理 决策智能
Python 数据分析工具箱:深挖 Pandas 与 NumPy 高级功能,驱动智能决策
【7月更文挑战第12天】Python的Pandas和NumPy是数据分析的基石。Pandas提供灵活的数据结构如DataFrame,用于高效处理关系型数据,而NumPy则以多维数组和科学计算功能著称。两者结合,支持数据合并(如`pd.merge`)、时间序列分析(`pd.to_datetime`)和高级数组运算。通过掌握它们的高级特性,能提升数据分析效率,应用于各领域,如金融风险评估、市场分析和医疗预测,助力数据驱动的决策。学习和熟练运用Pandas与NumPy是成为出色数据分析师的关键。
|
5天前
|
机器学习/深度学习 监控 算法
Python数据分析与机器学习在金融风控中的应用
Python数据分析与机器学习在金融风控中的应用
31 12
|
3天前
|
机器学习/深度学习 存储 数据可视化
这份Excel+Python飞速搞定数据分析手册,简直可以让Excel飞起来
微软在 UserVoice 上运营着⼀个反馈论坛,每个⼈都可以在这⾥提交新点⼦供他⼈投票。票数最⾼的功能请求是“将 Python 作为Excel 的⼀门脚本语⾔”,其得票数差不多是第⼆名的两倍。尽管⾃2015 年这个点⼦发布以来并没有什么实质性进展,但在 2020 年年末,Python 之⽗ Guido van Rossum 发布推⽂称“退休太无聊了”,他将会加入微软。此事令 Excel ⽤户重燃希望。我不知道他的举动是否影响了 Excel 和 Python 的集成,但我清楚的是,为何⼈们迫切需要结合 Excel 和 Python 的⼒量,⽽你⼜应当如何从今天开始将两者结合起来。总之,这就是本
|
6天前
|
数据采集 机器学习/深度学习 数据挖掘
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战
Python基于波动率模型(ARCH和GARCH)进行股票数据分析项目实战