【python笔记】客户运营 - cohort分析

一、数据

本文涉及数据下载链接。

二、数据预处理

2.1 读取数据

import pandas as pd

df = pd.read_csv('your_path/Year 2010-2011.csv', encoding='ISO-8859-1')
df.head()

【python笔记】客户运营 - cohort分析_第1张图片

2.2 检查数据

  • 检查空值情况
df.isna().sum() 
# 结果
Invoice             0
StockCode           0
Description      1454
Quantity            0
InvoiceDate         0
Price               0
Customer ID    135080
Country             0
dtype: int64
  • 检查重复情况
df.duplicated().sum()
# 结果
5268
  • 检查数值分布
df.describe()

【python笔记】客户运营 - cohort分析_第2张图片

2.3 小结:进行数据预处理

df = df.drop_duplicates()
df = df.dropna()
df = df.query('Quantity>0 & Price>0')

三、可视化

3.1 把时间调整成月份

df['date_new'] = df['InvoiceDate'].copy()
df['date_new'] = pd.to_datetime(df.date_new, format='%m/%d/%Y %H:%M')
df['yyyymm'] = df.date_new.dt.to_period('M')

3.2 获取所需字段

df['start_month'] = df.groupby('Customer ID')['yyyymm'].transform(min)
df['lasted_months'] = (df.yyyymm- df.start_month).apply(lambda x: x.n)

print(df.head())

【python笔记】客户运营 - cohort分析_第3张图片

3.3 做成客户留存表

pt = df.pivot_table(index='start_month', columns='lasted_months', values='Customer ID', aggfunc='nunique')
pt_cohort = pt.divide(pt.iloc[:,0], axis=0)

print(pt_cohort.head(2))

【python笔记】客户运营 - cohort分析_第4张图片

3.4 做成热力图

import seaborn as sns
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

with sns.axes_style('white'):
    plt.rcParams['font.family'] = 'simhei'
    fig, axes = plt.subplots(1, 2, figsize=(12, 8), 
    						sharey=True, 
    						gridspec_kw={'width_ratios': [1, 11]})

    sns.heatmap(pt_cohort, annot=True, fmt='.0%', ax=axes[1])
    axes[1].set_title('月度Cohorts: 客户留存', fontsize=16)
    axes[1].set(xlabel='# of periods', ylabel='')

    sns.heatmap(pd.DataFrame(pt.iloc[:,0]),
                annot=True, fmt='g',
                cbar=False,
                cmap=mcolors.ListedColormap('white'),
                ax=axes[0])
    fig.tight_layout()

【python笔记】客户运营 - cohort分析_第5张图片

你可能感兴趣的:(数据分析应用,Python,笔记,python,笔记,cohort,客户留存,用户运营)