Python在物流行业数据分析中的应用

物流行业数据分析

  • 一、数据清洗
  • 1. 重复值、缺失值、格式调整
  • 删除重复记录
  • 删除缺失值
  • 删除订单列
  • 更新索引
  • 清洗数据
  • 2. 异常值处理
  • 二、数据规整
  • 三、 数据分析
  • 1. 配送服务是否存在问题
  • 2. 是否存在尚有潜力的销售区域
  • 3.商品是否存在质量问题
  • 四、总结
  • Excel适合处理低量级数据,当数据量过高,Excel只能展现部分数据,不利于后续的数据分析,此时使用Python进行数据分析更加方便,有效。

    一、数据清洗

    先使用info()函数查看数据信息

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

    查看数据集体信息
    从图中可以看出该物流数据共有1160条数据,每条数据有10列,其中订单号货品交货状况数量列存在缺失值,同时销售金额的类型是object类型,应转换其数据类型。具体操作如下:

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

    删除重复记录

    data.drop_duplicates(keep='first',inplace=True)
    

    删除重复数据

    删除缺失值

    data.dropna(axis=0,how='any',inplace=True)
    

    删除缺失值

    删除订单列

    考虑到订单列对分析数据无关紧要,将订单列删除

    data.drop(columns=['订单行'],inplace=True,axis=1)
    

    删除订单列

    更新索引

    data.reset_index(drop=True,inplace=True)
    

    更新索引

    清洗数据

    清洗数据
    从图中可以看出,销售金额中含有 “,”,空格,且单位不一致,对此,编写自定义过滤函数,将逗号和空格删除,并统一单位

    def data_deal(number):
        if number.find('万元') !=-1: # 找到带有万元的
            number_new=float(number[:number.find('万元')].replace(',',''))*10000
        else:
            number_new=float(number.replace('元','').replace(',',''))
        return number_new
    
    data['销售金额']=data['销售金额'].map(data_deal)
    

    清洗后的数据

    2. 异常值处理

    数据描述
    从上图可以看出,存在销售金额为0的情况,为异常值,将其删除,同时该数据的中位数远小于平均数,即销售金额和数量存在严重右偏现象,属于正常现象,无需处理。删除代码如下:

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

    二、数据规整

    增加一项辅助列:月份

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

    添加月份列

    三、 数据分析

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

    从三个维度展开分析,具体分析如下:

    ① 月份维度

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

    月份维度
    结论:从按时交货率来看,第四季度低于第三季度,猜测气候原因可能会影响配送

    ② 销售区域维度

    data2=data.groupby(['销售区域','货品交货状况']).size().unstack() 
    data2['按时交货率']=data2['按时交货']/(data2['按时交货']+data2['晚交货'])
    

    销售区域维度
    结论:西北地区存在突出的延时交货问题,急需解决

    ③ 货品维度

    data3=data.groupby(['货品','货品交货状况']).size().unstack() 
    data3['按时交货率']=data3['按时交货']/(data3['按时交货']+data3['晚交货'])
    

    货品维度

    结论:货品4晚交货情况非常严重,其余货品交货情况较好

    ④ 货品和销售区域结合

    data4=data.groupby(['货品','销售区域','货品交货状况']).size().unstack() 
    data4['按时交货率']=data4['按时交货']/(data4['按时交货']+data4['晚交货'])
    

    货品和销售区域

    结论:货品4送往西北地区的晚交货情况严重,货品2送往马来西亚晚交货情况非常严重

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

    ① 月份维度

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

    月份维度
    结论:货品2在10月份和12月份销量猛增,原因猜测:公司加大营销力度或者开发了新的市场

    ② 销售区域维度

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

    销售区域

    结论:从销售区域看,每种货品销售区域为1-3个,货品1有三个销售区域,货品2有两个销售区域,其余货品均有一个销售区域

    ③ 月份和销售区域

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



    结论:货品2在10、12月份销量猛增,原因主要发生在原有销售区域;货品2在7、8、9、11月份销售数量还有很大提升空间,可以适当加大营销力度;货品2在8月份在两个销售区域的销量均有提升,在马来西亚地区的涨幅更大,可以尝试继续在马来西亚增大营销力度

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

    data['货品用户反馈']=data['货品用户反馈'].str.strip()
    data8=data.groupby(['货品','销售区域'])['货品用户反馈'].value_counts().unstack()
    data8['合格率']=data8['质量合格']/data8.sum(axis=1)
    data8['返修率']=data8['返修']/data8.sum(axis=1)
    data8['拒货率']=data8['拒货']/data8.sum(axis=1)
    

    质量问题分析
    结论:货品3、6、5合格率均较高,返修率比较低,说明质量还可以;货品1、2、4合格率较低,返修率较高,质量存在一定问题,需要改善,建议扩大抽检范围,增大质检力度;货品2在马来西亚的拒货率最高,同时在马来西亚的按时交货率也非常低,猜测:马来西亚人对送货的时效性要求较高,如果没有按时到货,往往考虑退货,建议加快运输;虑到货品2主要在华东地区销量大,可以考虑增大在华东的投资,适当减少马来西亚的投入

    四、总结

    1. 货品4—>西北,货品2—>马来西亚两条路线存在较大问题,急需提升时效
    2. 货品2在华东地区还有较大市场空间,适合加大投入,同时货品2在马来西亚配送时效长,用户拒收率高,从成本角度考虑,应该减少投入
    3. 货品1、2、4质量存在问题,建议扩大抽检范围,增大质检力度
    物联沃分享整理
    物联沃-IOTWORD物联网 » Python在物流行业数据分析中的应用

    发表评论