【夜曲编程-Python数据分析】电商交易数据清洗(考查的基础比较全面的一道数据清洗综合习题)

夜曲编程——电商交易数据清洗

  • 题目
  • 解题代码

题目

CC拿到了一份2018.01.01–2019.06.30平台销售订单数据。她需要对这份数据进行清洗。
这份数据在工作目录下,文件名是"180101-190630交易数据.csv"。路径为:“180101-190630交易数据.csv”。数据集简介如下:
各个字段的要求如下:
id,作为index
order_id,不存在<=0的异常值,不存在重复值
user_id,不存在<=0的异常值
payment,不存在<0的异常值,转化成单位元
price,不存在<0的异常值,转化成单位元
items_count,不存在<0的异常值
cutdown_price,不存在<0的异常值,转化成单位元
post_fee,不存在<0的异常值,转化成单位元
create_time,pay_time,转化成时间格式,不存在create_time>pay_time的异常值
数据集中,是否存在缺失值、异常值、重复值,需要自行进行判断。然后再进行处理。
最后,用df.info()输出清洗后的结果。

解题代码

import pandas as pd

df = pd.read_csv("180101-190630交易数据.csv")

#设置索引
df = df.set_index('id')

#处理order_id的异常值
dfWrongOrder = df[(df['order_id']<=0)]
df.drop(index=dfWrongOrder.index, inplace=True)
dfOrderDup = df[df['order_id'].duplicated()]
df.drop(index=dfOrderDup.index, inplace=True)

#处理user_id的异常值
dfWrongUser = df[df['user_id']<=0]
df.drop(index=dfWrongUser.index, inplace=True)

#处理payment的异常值
dfWrongPay = df[df['payment']<0]
df.drop(index=dfWrongPay.index, inplace=True)
df['payment'] = df['payment']/100

#处理price的异常值
dfWrongPrice = df[df['price']<0]
df.drop(index=dfWrongPrice.index, inplace=True)
df['price'] = df['price']/100

#处理items_count的异常值
dfWrongItems = df[df['items_count']<0]
df.drop(index=dfWrongItems.index, inplace=True)

#处理cutdown_price的异常值
dfWrongCP = df[df['cutdown_price']<0]
df.drop(index=dfWrongCP.index, inplace=True)
df['cutdown_price'] = df['cutdown_price']/100

#处理post_fee的异常值
dfWrongPost = df[df['post_fee']<0]
df.drop(index=dfWrongPost.index, inplace=True)
df['post_fee'] = df['post_fee']/100

#转换时间格式
df['create_time'] = pd.to_datetime(df['create_time'])
df['pay_time'] = pd.to_datetime(df['pay_time'])

#处理时间异常值
dfWrongTime = df[df['pay_time']<df['create_time']]
df.drop(index=dfWrongTime.index, inplace=True)

#输出DataFrame结果
df.info()

你可能感兴趣的:(pandas,数据清洗,夜曲编程,python,数据分析,数据挖掘)