数据分析——案例分析(一)

1.导入库

import time 
import numpy as np 
import pandas as pd 
import pymysql 
from sklearn.ensemble import RandomForestClassifier 
from pyecharts.charts import Bar3D 
from pyecharts import options as opts 

2.读取数据

sheet_names = ['2015','2016','2017','2018','会员等级']
sheet_datas = [pd.read_excel('sales.xlsx',sheet_name=i) for i in sheet_names]

3.数据审查

for each_name,each_data in zip(sheet_names,sheet_datas):    
    print('[data summary for {0:=^50}]'.format(each_name))
    print('Overview:','\n',each_data.head(4))
    print('DESC:','\n',each_data.describe())
    print('NA records',each_data.isnull().any(axis=1).sum()) 
    print('Dtypes',each_data.dtypes) 

查看前4条数据,查看描述性统计结果,判断记录缺失值,查看字段数据类型

4.数据预处理

1)去除缺失值和异常值:

for ind,each_data in enumerate(sheet_datas[:-1]):    
    sheet_datas[ind] = each_data.dropna()
    sheet_datas[ind] = each_data[each_data['订单金额'] > 1]
    sheet_datas[ind]['max_year_date'] = each_data['提交日期'].max() 

去除缺失值、无意义数据,增加一列记录日期最大值,方便后续进行计算分析

2)汇总数据:

data_merge = pd.concat(sheet_datas[:-1],axis=0)

上下合并

3)获取各自年份数据并#转换日期间隔为数字

data_merge['date_interval'] = data_merge['max_year_date']-data_merge['提交日期']
data_merge['year'] = data_merge['提交日期'].dt.year

data_merge['date_interval'] = data_merge['date_interval'].apply(lambda x: x.days)

4)按会员ID做汇总并进行重命名

rfm_gb = data_merge.groupby(['year','会员ID'],as_index=False).agg({'date_interval': 'min',  
                                                   '提交日期': 'count', 
                                                   '订单金额': 'sum'}) 
rfm_gb.columns =  ['year','会员ID','r','f','m']
rfm_gb.head()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值