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主要在华东地区销售量大,可以考虑增大在华东的投资,适当较小马来西亚的投入。
相关文章
|
7天前
|
机器学习/深度学习 数据采集 安全
使用Python实现智能食品物流管理的深度学习模型
使用Python实现智能食品物流管理的深度学习模型
20 5
|
13天前
|
机器学习/深度学习 数据可视化 数据挖掘
使用Python进行数据分析和可视化
【10月更文挑战第42天】本文将介绍如何使用Python进行数据分析和可视化。我们将从数据导入、清洗、探索性分析、建模预测,以及结果的可视化展示等方面展开讲解。通过这篇文章,你将了解到Python在数据处理和分析中的强大功能,以及如何利用这些工具来提升你的工作效率。
|
19天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第36天】本文将带你走进Python的世界,从基础语法出发,逐步深入到实际项目应用。我们将一起探索Python的简洁与强大,通过实例学习如何运用Python解决问题。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供有价值的指导和灵感。让我们一起开启Python编程之旅,用代码书写想法,创造可能。
|
20天前
|
机器学习/深度学习 数据可视化 数据处理
Python数据科学:从基础到实战
Python数据科学:从基础到实战
26 1
|
12天前
|
数据采集 数据可视化 数据挖掘
掌握Python数据分析,解锁数据驱动的决策能力
掌握Python数据分析,解锁数据驱动的决策能力
|
16天前
|
数据采集 存储 数据处理
探索Python中的异步编程:从基础到实战
【10月更文挑战第39天】在编程世界中,时间就是效率的代名词。Python的异步编程特性,如同给程序穿上了一双翅膀,让它们在执行任务时飞得更高、更快。本文将带你领略Python异步编程的魅力,从理解其背后的原理到掌握实际应用的技巧,我们不仅会讨论理论基础,还会通过实际代码示例,展示如何利用这些知识来提升你的程序性能。准备好让你的Python代码“起飞”了吗?让我们开始这场异步编程的旅程!
31 0
|
20天前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
20天前
|
数据采集 数据可视化 数据挖掘
利用Python进行数据分析:Pandas库实战指南
利用Python进行数据分析:Pandas库实战指南
|
4月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
86 2
|
4月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
198 4