导语:“学习的价值不在于记住多少,而在于应用多少”,这是笔者两天前浏览博客时看见的一句话,深有感触。相信有不少uu们正处于头绪繁多,却又不知从何下手的状态。想起之前在数据分析中踽踽独行的自己,决定写下这篇文章,希望对你有所启发。本篇文章将结合具体实操案例,一步步和大家一起运用pandas处理一份看似零碎的数据,并用matplotlib和pyecharts做数据可视化,分析其中缘由。
(一)项目背景
天猫订单综合分析
本数据集共收集了发生在一个月内的28010条数据,包含以下:
7个字段说明
- 订单编号:订单编号
- 总金额:订单总金额
- 买家实际支付金额:总金额 - 退款金额(在已付款的情况下)。金额为0(在未付款的情况下)
- 收货地址:各个省份
- 订单创建时间:下单时间
- 订单付款时间:付款时间
- 退款金额:付款后申请退款的金额。如无付过款,退款金额为0
分析目的
- 订单每个环节的转化转化率
- 订单成交的时间(按天)趋势(按实际成交)
- 订单数在地图上的分布
(二)数据预处理
1. 数据预览
用pandas导入存储数据的csv文件,先来观察一下数据长什么样。使用info查看数据相关信息。
import pandas as pd
def data_cleaning():
tmall = pd.read_csv(r'C:\Users\Amand\Desktop\tmall_order_report.csv',encoding = 'utf-8')
#print(tmall.info()) #查看列数据类型
#print(tmall.head(1))
#print(tmall.tail(1))
2. 数据清洗
print(tmall.columns)
tamll = tmall.rename(columns={'收货地址 ': '收货地址', '订单付款时间 ': '订单付款时间'}, inplace=True) #列名去除空格
print(tmall.columns)
tmall['订单创建时间'] = pd.to_datetime(tmall['订单创建时间']) #格式化订单创建时间和付款时间
tmall['订单付款时间'] = pd.to_datetime(tmall['订单付款时间'])
print(tmall.duplicated().sum()) #查找重复值的总数,0,无需处理
print(tmall['订单编号'].is_unique) #判断订单编号是否唯一
print(tmall.isnull().sum()) #查找缺失,‘订单付款时间’有3923个缺失值,属于正常现象,说明这些单位付过款,无需处理
return tmall #返回处理过后的tmall数据,后续传参
“收货地址”和“订单付款时间”这两列名后有空格,需将其去除;数据预览中,注意到“订单创建时间”和“订单付款时间”不是日期格式,在这里将他定义为日期类型格式;查找重复值为0;查找异常值,订单编号都是唯一;缺失值“订单付款时间”有3923个,属于正常缺失,下单但未付款,具有其数据意义,下图是运行结果: