电商交易数据清洗和分析

电商交易数据清洗和分析

数据源:csv文件,某电商的交易数据,需要对这部分数据进行清洗和分析
工具:python(matplotlib/numpy/pandas),jupyter实现

数据清洗

加载数据分析需要的库

import numpy as np
import pandas as pd 
import matplotlib.pyplot as plt

加载数据,加载数据之前先用文本编辑器查看一下数据格式,首行和分隔符等

df = pd.read_csv('./order_info_2016.csv',index_col='id')  #index_col='id' 表示将id这一列作为行索引
df.index.name=None  #去掉行索引的名字
df.head() #查看一下前5行

在这里插入图片描述
加载好数据后,先分别使用describe和info方法看下数据的分布情况

df.describe()

在这里插入图片描述

df.info()

在这里插入图片描述
可以看出数据总量是104557,其中channelId有缺失数据,后续要对它进行处理
先整体看一下有没有重复数据

df[df.duplicated()]  #为空,即没有完全重复的数据

orderId
我们都知道orderId在一个系统中是唯一的,因此需要查看一下其是否满足唯一性

df[df['orderId'].duplicated()] #确有重复

在这里插入图片描述
我们也可以验证一下

df[df['orderId']==212049970]

在这里插入图片描述

#以下方法也可以查看是否存在重复
df['orderId'].unique().size  #104530
df['orderId'].size           #104557

如果有重复,我们一般也是最后处理,因为其他列可能影响重复值,我们先处理其他列

userId
userId,我们只要从上边的describe和info中查看其值在正常范围内就可以了,对于订单数据,一个用户可能有多个订单,重复是合理的

productId
productId的最小值为0,先来看一下为0的记录数

df.productId[(df.productId==0)].size  #177

177条记录,数量不多,可能是商品的上下架引起的,处理完其他值我们把这些删掉

cityId
cityId类似于userId,值都在正常范围,不需要处理

price
price没有空值,且都大于0,注意单位是分,我们把它转换成元

df.price = df.price/100

payMoney
payMoney中存在负值,不符合逻辑,因此要删除掉这写记录

#展示payMoney为负值的记录
df[df['payMoney']<0]

在这里插入图片描述

#删除payMoney为负的记录
df.drop(df[df['payMoney']<0].index,inplace=True)
#再检查一下
df[df['payMoney']<0]  #为空
#变成元
df.payMoney = df.payMoney/100

channelId
channelId根据info结果,有些nu

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值