# 分析思路
1. 读取数据
2. 数据处理
3. 数据分析及可视化
4. 数据分析报告
# 一.读取数据
| EN | CN |
|--|--|
| id | 编号 |
| orderID | 订单编号 |
| userID | 用户编号 |
| goodsID | 商品编号 |
| orderAmount | 订单金额 |
| payment | 支付金额 |
| chanelID | 渠道编号 |
| platformType | 平台类型 |
| orderTime | 下单时间 |
| payTime | 支付时间 |
| chargeback | 退单拒付 |
## 1.1 加载数据文件
```
import pandas as pd //加载处理数据所需要的库
df = pd.read_excel('order2020.xlsx',index_col='id') //读取数据文件
#pd.set_option('display.width',None) //设置数据展示宽度
#print(df.tail(10)) //展示导入数据的后10行,以便检查
```
- pd.set_option('display.width',None) //设置数据展示宽度,解决列展示出现省略号问题
- print(df.head()) //默认读取前5行记录
- print(df.tail(10)) //读取后10行的数据,无参默认为5行
![001](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/001.png)
## 1.2 提取数据
### 1.2.1根据业务需要提取数据,提取2020年数据
```
# 1.引入时间模块, 确定周期时间
import datetime
# 2.确定开始时间节点与结束时间节点
startTime = datetime.datetime(2020, 1, 1) #开始时间
endTime = datetime.datetime(2020, 12, 31, 23, 59, 59) #结束时间
# 3.将2020年1月1日前数据删除
df[df.orderTime < startTime]
#删除数据 drop(index="索引", inplace=True,False)
df.drop(index=df[df.orderTime < startTime].index, inplace=True)
# 4.将2020年12月31日后数据删除
df[df.orderTime > endTime]
df.drop(index=df[df.orderTime > endTime].index, inplace=True)
```
![002](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/002.png)
### 1.2.2提取数据时,处理与业务流程不符合数据、支付时间间隔过长数据
```
# 1.下单时间与支付时间间隔
df['payinterval'] = (df.payTime-df.orderTime).dt.total_seconds()
# 2.支付时间间隔大于30分钟与支付时间早于下单时间
df[df.payinterval>1800]
df.drop(index=df[df.payinterval>1800].index, inplace=True)
df.drop(index=df[df.payinterval<0].index, inplace=True)
```
![003](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/003.png)
### 1.2.3提取数据时,处理与业务流程不符合数据,订单金额与支付金额为负
```
# 1.订单金额为负
df[df.orderAmount < 0]
# 2.付款金额为负
df[df.payment < 0]
# 3.删除相应订单
df.drop(index=df[df.orderAmount < 0].index, inplace=True) #删除负订单金额
df.drop(index=df[df.payment < 0].index, inplace=True) #删除负付款金额
```
![004](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/004.png)
# 二.数据处理
## 查看数据
```
#1.查看非空信息
df.info()
#2. 查看整体描述
df.describe()
```
![005](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/005.png)
## 2.1 数据清洗
### 脏数据类型
1. 重复值
2. 异常值
3. 缺失值
### 脏数据处理方式
![脏数据处理方式](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/脏数据处理方式.png)
### 2.1.1 清洗orderID
```
#1.订单orderID不重复的个数
df.orderID.unique().size
#2.删除重复数据
df.drop(index=df[df.orderID.duplicated()].index, inplace=True)
df.info()
```
![006](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/006.png)
### 2.1.2 清洗goodsID
```
#PR000000 商品下架
df.goodsID[df.goodsID == 'PR000000'].size
df.drop(index=df[df.goodsID == 'PR000000'].index, inplace=True)
df.info()
```
![007](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/007.png)
### 2.1.3 清洗chanelID
```
#1.查看chanelID空值
df[df.chanelID.isnull()]
#2.对空值进行修补
df['chanelID'].fillna(value=df.chanelID.mode()[0], inplace=True)
df.info()
```
![008](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/008.png)
### 2.1.4 清洗platformtype
```
print(df.platformType.unique()) #列出所有不重复平台
df['platformType']=df['platformType'].str.replace(" ","") #空字符串代替空格
print(df.platformType.unique()) #列出所有不重复平台,再次检查
```
![009](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/009.png)
### 2.1.5 清洗payment
```
# 1.创建折扣字段
df['discount'] = (df.payment/df.orderAmount)
df.describe()
# 2.平均折扣
meanDiscount = df[df['discount']<=1].discount.sum() / df[df['discount']<=1].discount.size
meanDiscount
# 3.找到折扣大于1的数据
df[df['discount']>1]
df['payment'] = df['payment'].mask(df['discount']>1,None)
# 4.对折扣大于1的数据进行填补
df['payment'].fillna(value=df.orderAmount*meanDiscount , inplace=True)
df.info()
# 5.处理折扣
df['discount'] = round((df.payment/df.orderAmount),2)
pd.set_option('display.width',None)
print(df)
```
![010](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/010.png)
### 2.2 数据规整
```
df['month'] = df['orderTime'].dt.month #提取月份
df['weekday'] = df['orderTime'].dt.dayofweek+1 #周几
df['orderDate'] = df['orderTime'].dt.date
#print(df)
```
![011](https://github.com/Monster-hash/python-e-commerce-data-analyse/blob/main/picture/011.png)
### 数据处理完毕 查看数据
`print(df.describe())`
```
输出结果:
orderAmount payment payinterval discount month weekday
count 103146.000000 103146.000000 103146.000000 103146.000000 103146.000000 103146.000000
mean 1050.466247 993.373100 59.438204 0.917957 7.157835 3.885211
std 1054.020910 1042.470804 127.309944 0.138318 3.299359 1.937466
min 6.100000 0.000000 0.000000 0.000000 1.000000 1.000000
25% 432.495000 379.310000 15.000000 0.900000 5.000000 2.000000
50% 680.620000 627.890000 23.000000 0.960000 7.000000 4.000000
75% 1249.685000 1193.792500 46.000000 1.000000 10.000000 5.000000
max 28465.250000 28465.250000 1788.000000 1.000000 12.000000 7.000000
Process finished with exit code 0
```
# 三.分析数据及可视化
## 3.1 分析数据,整体运营情况
```
#总体概览
# 1.销售GMV
df.orderAmount.sum()/10000 #10835
# 2.成交总和
df.payment.sum()/10000 #10246
# 3.实际成交额
df[df.chargeback=="否"].payment.sum()/10000 # 8879
# 4.订单数量
df.orderID.unique().size #103146
# 5.退货订单数
df[df.chargeback=="是"].orderID.size #13590
# 6.退货率
df[df.chargeback=="是"].orderID.size/df.orderID.unique().size
# 7.用户数
df.userID.unique().size #78525
```
## 3.2销售情况,各月份GMV\成交额趋势
```
#1.绘制图形
#1.1引入相应的库
from PythonDataAnalyse import df #调用PythonDataAnalyse.py的df函数
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['font.serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
#1.2设置字体
my_font =FontProperties(fname='C:/Windows/Fonts/Deng.ttf',size=12,)
#1.3设置画布大小
plt.figure(figsize=(10,6))
#1.4设置网格线 辅助线
plt.grid(alpha=0.4)
#2.横纵坐标值
#2.1所有横坐标都一致
x = df.groupby('month')['orderAmount'].sum().index
#2.2GMV
y1 = df.groupby('month')['orderAmount'].sum().values/10000
#2.3销售实际付款
y2 = df.groupby('month')['payment'].sum().values/10000
#2.4不含退单销售额
y3 = df[df.chargeback=="否"].groupby('month')['payment'].sum().values/10000
#2.5 X横轴坐标文字
x_ticks_label = ["{}月份".format(i) for i in x]
#2.6 x轴刻�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
<项目介绍> 分析思路 读取数据 数据处理 数据分析及可视化 数据分析报告 一.读取数据 EN CN id 编号 orderID 订单编号 userID 用户编号 goodsID 商品编号 orderAmount 订单金额 payment 支付金额 chanelID 渠道编号 platformType 平台类型 orderTime 下单时间 payTime 支付时 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
资源推荐
资源详情
资源评论
收起资源包目录
基于Python实现的电商平台数据分析系统源码+文档说明.zip (30个子文件)
python-e-commerce-data-analyse-main
SalesTrend.py 2KB
RepurchaseRate.py 1KB
UserBehavior2.py 1KB
picture
009.png 66KB
011.png 134KB
006.png 109KB
003.png 185KB
001.png 132KB
t2.png 94KB
010.png 133KB
008.png 101KB
RFM.png 68KB
t4.png 29KB
004.png 182KB
t3.png 20KB
脏数据处理方式.png 41KB
005.png 145KB
t5.png 42KB
007.png 100KB
t1.png 81KB
t6.png 25KB
002.png 192KB
PythonDataAnalyse.py 3KB
ChanelSource.py 618B
RFM.py 2KB
UserBehavior.py 1006B
__pycache__
SalesTrend.cpython-37.pyc 1KB
PythonDataAnalyse.cpython-37.pyc 2KB
UserBehavior2.cpython-37.pyc 1KB
README.md 22KB
共 30 条
- 1
资源评论
- SuperGodX2024-04-26亲,能看一下私信吗?挺急的
- 念念不忘,必有回响6312024-05-14这个资源对我启发很大,受益匪浅,学到了很多,谢谢分享~
- 伤心小狗、2024-04-02感谢资源主的分享,很值得参考学习,资源价值较高,支持!
- W.starrysky2024-05-04资源简直太好了,完美解决了当下遇到的难题,这样的资源很难不支持~
- ppboy7772024-05-02资源有一定的参考价值,与资源描述一致,很实用,能够借鉴的部分挺多的,值得下载。
奋斗奋斗再奋斗的ajie
- 粉丝: 229
- 资源: 2104
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功