电商数据分析

电商数据源 提取码: zivw

电商数据分析

1. 加载数据

  • 加载数据分析使用的库
  • 加载数据前,先用文本编辑器看下数据的格式,首行是什么,分隔符是什么
  • 加载好数据之后,第一步先分别使用describe和info方法看下数据的大概分布
# 加载数据分析使用的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 加载数据前,先用文本编辑器看下数据的格式,首行是什么,分隔符是什么
df = pd.read_csv('./order_info_2016.csv', index_col='id')
print(df.head())
print(df.shape)

# 加载好数据之后,第一步先分别使用describe和info方法看下数据的大概分布
print(df.describe())
print(df.info())
   orderId   userId  productId  cityId   price  payMoney   channelId  \
id                                                                        
1   232148841  2794924        268  110001   35300     35300  9058255c90   
2   222298971  1664684        801  330001   51200     49900  e0e6019897   
3   211494392  2669372        934  220002   62100     62100  9058255c90   
4   334575272  1924727        422  230001   50600     42000  46d5cea30d   
5   144825651  4148671        473  130006  149100    142000  6ff1752b69   

    deviceType           createTime              payTime  
id                                                        
1            3  2016-01-01 12:53:02  2016-01-01 12:53:24  
2            2  2016-01-01 21:42:51  2016-01-01 21:43:30  
3            3  2016-01-01 14:10:13  2016-01-01 14:11:18  
4            2  2016-01-01 17:43:35  2016-01-01 17:43:53  
5            2  2016-01-01 18:52:04  2016-01-01 18:52:47  

           orderId        userId      productId         cityId         price  \
count  1.045570e+05  1.045570e+05  104557.000000  104557.000000  1.045570e+05   
mean   2.993341e+08  3.270527e+06     504.566275  154410.947225  9.167350e+04   
std    5.149818e+07  4.138208e+07     288.130647   72197.163762  9.158836e+04   
min    1.035627e+08  2.930600e+04       0.000000   30000.000000  6.000000e+02   
25%    2.633627e+08  2.179538e+06     254.000000  100011.000000  3.790000e+04   
50%    2.989828e+08  2.705995e+06     507.000000  150001.000000  5.920000e+04   
75%    3.349972e+08  3.271237e+06     758.000000  220002.000000  1.080000e+05   
max    4.871430e+08  3.072939e+09    1000.000000  380001.000000  2.295600e+06   
(104557, 10)
           payMoney     deviceType  
count  1.045570e+05  104557.000000  
mean   8.686689e+04       2.385292  
std    9.072028e+04       0.648472  
min   -1.000000e+03       1.000000  
25%    3.360000e+04       2.000000  
50%    5.500000e+04       2.000000  
75%    1.040000e+05       3.000000  
max    2.294200e+06       6.000000  

<class 'pandas.core.frame.DataFrame'>
Int64Index: 104557 entries, 1 to 104557
Data columns (total 10 columns):
orderId       104557 non-null int64
userId        104557 non-null int64
productId     104557 non-null int64
cityId        104557 non-null int64
price         104557 non-null int64
payMoney      104557 non-null int64
channelId     104549 non-null object
deviceType    104557 non-null int64
createTime    104557 non-null object
payTime       104557 non-null object
dtypes: int64(7), object(3)
memory usage: 8.8+ MB
None
  • 从上面的运行结果得出
  • 一共有104557行,10列数据
  • productId中存在为0的数据
  • payMoney中有负数
  • channelId中缺失8条数据

2. 数据清洗 # orderId

  • 我们都知道orderId在一个系统里是唯一值,所以先看一下有没有重复值
  • 如果有重复值,我们一般最后处理,因为其他的列可能会影响到删除哪一条重复的记录
print(df.orderId.unique().size)
104530
  • 一共104557行数据,但是只有104530个orderId,所以存在27个重复值

3. 数据清洗 # userId

  • userId我们只要从上面的describe和info看下值是不是在正常范围就行了
  • 对于订单数据,一个用户可能有多个订单,重复值是合理的
print(df.userId.unique().size)
102672
  • 重复值是合理的。

4. 数据清洗 # productId

  • productId最小值为0,先看下值为0的记录数量
print(df.productId[(df['productId'] == 0)].size)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值