一,前言
在本文中,我将使用python语言基于Jupyter notebook对这一份物流行业数据集进行多维度数据分析,文章内容参考自b站马士兵《数据分析五大经典实战项目》教学视频,并对其中一些操作做出优化。
数据集下载地址:物流行业数据分析 - Heywhale.com
数据集若涉及侵权,请联系删除,谢谢!
二,数据导入与数据梳理
<1> 第三方库与数据导入
# 1,导包
import pandas as pd
import numpy as np
# 2,数据导入
data = pd.read_csv("D:/DataSet/data_wuliu.csv", encoding="gbk")
<2> 查看数据前十行可以发现三点:
- 数据中存在缺失值
- " 订单行" 这一列对于数据分析没有实质意义,可以考虑删除
- 销售金额单位不统一
<3> 使用df.info()方法进一步查看数据的类型与缺失情况
通过输出信息我们能够发现:
1,数据中虽然存在缺失值,但是缺失值所占的比例非常少,因此我们可以将缺失值进行删除处理;
2,销售金额、销售时间、交货时间为字符串类型,后续我们需要将其进行类型转换
三,数据清洗
<1> 缺失值处理
由于在数据梳理的过程中发现缺失值较少,因此我们对缺失值直接采用删除的方式进行处理
# -- 缺失值处理 --
data.dropna(inplace=True)
<2> 重复值处理
重复值对于我们数据分析是无用的,因此我们无需查看,直接将其删除即可
# -- 重复值处理 --
data.drop_duplicates(inplace=True)
<3> 数据类型处理
在本案例中,我们发现销售时间、交货时间、销售金额等列均为字符串类型,这是不利于我们后续进行数据分析操作的,因此要对其进行数据类型处理。将销售时间、交货时间转换为时间类型数据,而销售金额则转换为整型数据
# -- 数据类型处理 --
data.销售时间 = pd.to_datetime(data.销售时间)
data.交货时间 = pd.to_datetime(data.交货时间)
# --对字符串进行处理(可以写成链式)
data.销售金额 = data.销售金额.map(lambda x: x.replace(",", ""))
data.销售金额 = data.销售金额.map(lambda x: x.replace("万元", "0000"))
data.销售金额 = data.销售金额.map(lambda x: x.replace("元", ""))
# -- 转换类型
data.销售金额 = data.销售金额.astype("int64")
<4> 异常值处理
之所以现在才开始处理异常值,是因为在之前我们还未对销售金额类型进行处理,不利于我们查看异常值的情况
1,对数值类型数据进行分析
如下图所示,我们通过观察销售金额与数量这两列可以得出:
- 存在异常值,即销售金额为0
- 数据呈现很严重的右偏分布,从数量那一列中即可看出,第3/4位数为4,但是平均值却高达76。不过在电商领域中这属于正常现象,符合二八定律(即百分之二十的用户贡献了百分之八十的销售量),因此无需处理
2,对异常值进行