栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python电商数据预处理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python电商数据预处理

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 plt
1.导入数据
# 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)

完成后效果是这样的。

好了 创作不易 有帮助留下你的赞或小额打赏哦

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267506.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号