1. 提取2019年的订单数据
2. 处理业务流程不符的数据 支付时间早于下单时间、支付时长超过30分钟、订单金额小于0、支付金额小于0
3. 处理渠道为空的数据 补充众数
4. 处理平台类型字段 去掉多余的空格 保持数据一致
5. 添加折扣字段 处理折扣大于1的字段 将支付金额修改为“订单金额*平均折扣”
数据在这里 有兴趣跟我一起做。 百度网盘
链接 https://pan.baidu.com/s/1yprZr0sxzLLPPBy-ICCocg
提取码 dmmo
各字段说明
1.‘id’ 打酱油的索引
2.‘orderID’ 订单id
3. ‘userID’ 用户id
4. ‘goodsID’ 商品id
5. ‘orderAmount’ 订单价格
6. ‘payment’ 实付价格
7. ‘chanelID’ 渠道
8. ‘platfromType’ 平台类型
9. orderTime’下单时间
10. payTime’支付时间
11. ‘chargeback’ 是否退款
废话不多说 直接上代码
# 导入数据分析三大神器库 import numpy as np import pandas as pd import matplotlib.pyplot as plt1.导入数据
# 1.导入数据 ds_df pd.read_excel( data/某电商网站订单数据.xlsx ) #请你将路径换为自己放数据的路径
1.1查看数据前五行
ds_df.head() # 查看数据前五行
1.2属性等信息
ds_df.info()2.数据预处理
2.1. 提取2019年的订单数据
# 进行布尔索引 df_19 ds_df[ds_df.orderTime.dt.year 2019] len(df_19)
这里可知数据已经变少了 接下来我们就用这个新的df_19进行进一步处理
2.2 处理业务流程不符的数据 支付时间早于下单时间、支付时长超过30分钟、订单金额小于0、支付金额小于0
# 过滤掉支付时间早于下单时间的订单 df_19 df_19[~(df_19.payTime df_19.orderTime)] # 过滤掉支付时长超过30分钟的订单 df_19 df_19[(df_19.payTime-df_19.orderTime) pd.to_timedelta( 0 days 00:30:00 )] # 过滤掉订单金额小于0、支付金额小于0的订单 df_19 df_19[(df_19.orderAmount 0) (df_19.payment 0)] len(df_19)
2.3. 处理渠道为空的数据 补充众数
df_19.chanelID.isnull().any() # 判断是否有空值
# 拿到chanelID的众数 这里得到的众数是一个对象 不能用于在直接填充
chanel_mode df_19.chanelID.mode()
# 填充空值 将上面的对象转换成字符串再填充
df_19.fillna(value { chanelID :str(chanel_mode)},inplace True)
2.4. 处理平台类型字段 去掉多余的空格 保持数据一致
# 将所有字符转成小写 df_19.platfromType df_19.platfromType.str.lower() # 去掉多余的空格 保持数据一致 df_19.platfromType df_19.platfromType.str.replace( , )
2.5. 添加折扣字段 处理折扣大于1的字段 将支付金额修改为“订单金额*平均折扣”
# 获取折扣正常订单 temp df_19[~((df_19.payment / df_19.orderAmount) 1)] # 计算正常订单的平均折扣 mean_discount (temp.payment / temp.orderAmount).mean() # 拿出异常折扣订单 temp1 df_19[(df_19.payment / df_19.orderAmount) 1] # 将异常的支付价格改正 temp1[ payment ] np.round(temp1.orderAmount*mean_discount,2) temp1.set_index( id ) temp1.index over_discount_index temp1.index # 将df_19中的异常行用temp1的行来替换 df_19.loc[over_discount_index] temp1.loc[over_discount_index]
到这里就完成了预处理 但是你发现索引并不好看 于是我将索引重置
df_19.reset_index(drop True,inplace True)
完成后效果是这样的。
好了 创作不易 有帮助留下你的赞或小额打赏哦



