-
数据来源:某企业销售的6种商品所对应的送货及用户反馈数据;数据链接:物流行业项目分析数据.
-
分析过程为:
-
数据清洗
- 数据规整
- 数据分析并可视化
准备工作
- 首先导入包和数据,将编码设置为
gbk
,若用utf-8
会报错。然后查看数据的整体信息,观察以下结果
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = 'SimHei'
data = pd.read_csv('E:\下载\数据分析实战项目资料\物流\资料\data_wuliu.csv', encoding='gbk')
print(data.info())
- 输出结果为:
结果运行出来后,进行数据清洗。
数据清洗
- 主要是进行重复值,缺失值,格式调整
- 首先对数据表进行观察,观察数据要进行哪些操作
-
通过观察可以得出以下结论:
-
订单号,商品交货情况,数量:存在缺失值,但是缺失量不大,可以删除
- 订单行:对分析无关紧要,可以考虑删除
-
销售金额格式不对(
万元|元,逗号问题
),数据类型需要转换成int|float
-
删除重复记录,除了缺失值、订单行,因为重复记录被删除,索引不连续,所以需要更新索引。
[En]
Delete duplicate records, except missing values, order lines, because duplicate records are deleted, the index is not continuous, so we need to update the index.*
data.drop_duplicates(keep='first', inplace=True)
data.dropna(axis=0, how='any', inplace=True)
data.drop(columns=['订单行'], inplace=True, axis=1)
print(data.head())
data.reset_index(drop=True, inplace=True)
print(data.head())
- 更新索引前后对比
-
对销售金额列进行处理
-
取出销售金额列,对每一个数据进行清洗
- 编写自定义过滤函数,删除逗号,转成
float
- 若是万元则
*10000
,否则删除元
def data_deal(number):
if number.find('万元') != -1:
new_number = float(number[:number.find('万元')].replace(',', '')) * 10000
pass
else:
new_number = float(number.replace('元', '').replace(',', ''))
pass
return new_number
data['销售金额'] = data['销售金额'].map(data_deal)
- 对异常值进行处理
首先输出对数据的描述性统计,进行观察,可以发现数量、销售金额字段值均右偏,在电商领域右偏2/8
很正常,无需处理;销售金额还有0的值,因为数据量很小,所以删除这个值没有影响。
print(data.describe())
data = data[data['销售金额'] != 0]
print(data.describe())
- 处理对比如下:
数据规整
- 将销售时间转化为时间序列,并进行查看
- 取出时间中的月份存到月份字段中
data['销售时间'] = pd.to_datetime(data['销售时间'])
print(data.info())
data['月份'] = data['销售时间'].apply(lambda x: x.month)
print(data)
结果:
数据分析并可视化
-
配送服务是否存在问题:从四个角度来分析,分别是月份维度、销售区域维度、货品维度和货品和销售区域结合
-
月份维度
data['货品交货状况'] = data['货品交货状况'].str.strip()
data1 = data.groupby(['月份', '货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货'] / (data1['按时交货'] + data1['晚交货'])
print(data1)
结果:
分析:从准点率来看,四季度低于三季度,推测可能是气候因素造成的。
[En]
Analysis: from the point of view of on-time delivery rate, the fourth quarter is lower than the third quarter, and it is speculated that it may be caused by the climate.
- 销售区域维度
data1 = data.groupby(['销售区域', '货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
print(data1.sort_values(by='按时交货率', ascending=False))
结果:
分析:西北地区存在最突出的延时交货问题,急需解决
- 货品维度
data1 = data.groupby(['货品', '货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
print(data1.sort_values(by='按时交货率', ascending=False))
结果:
分析:货品 4
晚交货情况非常严重,其余货品相对较好
- 货品和销售区域结合
data1 = data.groupby(['货品', '销售区域', '货品交货状况']).size().unstack()
data1['按时交货率'] = data1['按时交货']/(data1['按时交货']+data1['晚交货'])
print(data1.sort_values(by='按时交货率', ascending=False))
结果:
分析:销售区域:最差在西北递去,货品有 1
和 4
,主要是货品 4
送货较晚导致;货品:最差的是货品 2
,主要送往华东和马来西亚,主要是马来西亚的送货较晚导致
-
是否存在尚有潜力的销售区域,从三个维度进行分析,分别是月份维度、区域维度和月份和区域维度
-
月份维度
data1 = data.groupby(['月份', '货品'])['数量'].sum().unstack()
data1.plot(kind='line')
plt.show()
结果:
分析:货品 2
在 10月
和 12月份
,销量猛增。原因猜测有:1.公司加大营销力度,2.开发了新的市场(后续有结论)
- 区域维度
data1 = data.groupby(['销售区域', '货品'])['数量'].sum().unstack()
print(data1)
结果:
分析:从销售区域看,每种货品销售区域为 1-3
个,货品 1
有三个销售区域,货品 2
有两个销售区域,其余货品均有 1
个销售区域
- 月份和区域维度
data1 = data.groupby(['月份', '销售区域', '货品'])['数量'].sum().unstack()
print(data1['货品2'].unstack())
结果:
分析:货品 2
在 10月
和 12月
份销量猛增,原因主要发生在原有销售区(华东);同样,分析出 7
, 8
, 9
, 11
月份销售数量还有很大提升空间,可以适当加大营销力度
-
商品是否存在质量问题
-
拿出产品用户反馈字段的第一个空白处,找出反馈总数,然后依次计算废品率、修复率和合格率,并对三个值进行排序。
[En]
take out the first space in the product user feedback field, find out the total number of feedback, and then calculate the rejection rate, repair rate and qualified rate in turn, and sort the three values.*
data['货品用户反馈'] = data['货品用户反馈'].str.strip()
data1 = data.groupby(['货品', '销售区域'])['货品用户反馈'].value_counts().unstack()
print(data1)
data1['拒货率'] = data1['拒货'] / data1.sum(axis=1)
data1['返修率'] = data1['返修'] / data1.sum(axis=1)
data1['合格率'] = data1['质量合格'] / data1.sum(axis=1)
print(data1.sort_values(['合格率', '返修率', '拒货率'], ascending=False))
结果:
分析:货品 3
, 6
, 5
,合格率均较高,返修率比较低,说明质量还可以;货品 1
, 2
, 4
,合格率较低,返修量较高,质量存在一定的问题,需要改善;货品 2
在马来西亚的拒货率最高,同时,货品 2
在马来西亚的按时交货率也非常低,猜测:马来西亚人对送货的时效性要求较高;如果达不到,则往往考虑拒收;考虑到货品 2
主要在华东地区销售量大,可以考虑增大在华中的投入,适当减小马来西亚的投入
总结
- 货品
4
-西北
,货品2
-马来西亚
两条线路存在较大问题,急需提升时效 - 货品
2
在华东地区
还有较大市场空间,适合加大投入,同时货品2在西北配送失效长,用户拒收率高,从成本角度考虑,应该减少投入 -
货品
1
,2
,4
,存在质量问题,简易扩大抽检范围,加大之间力度 -
扩展:
unstack
列转行展示;stack
行转列展示;data1.sum(axis=1)
:按行进行汇总求和;data.dropna(axis=0, how='any', inplace=True)
:有一个为空则删除;how='all'
:该行全为空则删除
Original: https://blog.csdn.net/weixin_46361294/article/details/123819315
Author: 爱学习的Amelia
Title: python项目--物流行业项目分析
相关阅读
Title: 用Anaconda安装TensorFlow(Windows10)
用Anaconda安装TensorFlow
本部分分为方法一和方法二,方法一是从清华镜像官网下载速度较快,
方法二是从GitHub下载,速度较慢(有梯子的建议使用)
1.打开Anaconda Prompt
2.输入下面两行命令,打开清华镜像官网
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
3.输入下面命令,利用Anaconda创建一个python3.9的环境,环境名称为tensorflow(这里python版本根据自己的情况如下图)
conda create -n tensorflow python=3.9
如图所示:
4.输入y
5.打开Anaconda Navigator,点击Environments,可以看到名称为tensorflow的环境已经创建好
6.上一步最后我们可以看到,启动Tensorflow,使用下面的命令行:
conda activate tensorflow
关闭tensorflow环境,使用下面的命令行:
7.我们在这里输入下面的命令,进入tensorflow环境
conda activate tensorflow
8.输入下面的命令行,安装cpu版本的tensorflow
conda install tensorflow
此时我们再次查看Anaconda Navigator中的Environments,可以发现tensorflow已经安装好了
第8步注意!!!
如果出现下图情况或者是从GitHub上下载速度极慢,说明清华镜像网址没有切换成功
重新执行步骤二即可
TensorFlow安装方法方法二
方法二速度特别特别慢 (如果有梯子的话建议使用)
1.安装好Anaconda后,在系统栏双击打开Anaconda Navigator
2.点击Environment,Create
3.创建一个tensorflow的新环境,python在这里可以自行选择(根据Anaconda中安装的python版本,我这里是python3.8),然后点击Create
4.右边搜索栏输入tensorflow,选择后点击Apply
5.点击Apply
等待安装完成即可
Original: https://blog.csdn.net/m0_46299185/article/details/124280787
Author: bEstow--
Title: 用Anaconda安装TensorFlow(Windows10)

log4j配置输出到多个日志文件

CVPR2022论文速递(2022.3.17)!共16篇

基于Tensorflow的环境声音分类

多目标跟踪评价指标及其计算方式

Aspect-based Sentiment Analysis with Type-aware Graph Convolutional Networks and Layer Ensemble 阅读笔记

Mac m1芯片anaconda上安装tensorflow

【发音测评三】gop_speechocean762 compute-gop.cc源码阅读

曾经,我对着AI客服喷了两分钟,它只回复了我的第一句话

自动驾驶仿真:VTD的SCP命令详解

MCAN论文进阶——MoVie: Revisting Modulated Convolutions for Visual Counting and Beyond 论文笔记

pandas dataframe.pivot()用法

Tensorflow学习历程

Motor-CAD— 新能源驱动电机快速设计与优化工具

业余无线电新手入门基础知识(全网最全)
