Xây dựng hàm để tự động hóa phân tích

Phân tích chiến dịch Marketing với pandas

Jill Rosok

Data Scientist

Vì sao viết hàm?

# Count the subs by referring channel and day
retention_total = marketing.groupby(['date_subscribed',
                                'subscribing_channel'])\
                                ['user_id'].nunique()

retention_subs = marketing[marketing['is_retained'] == True]\
                           .groupby(['date_subscribed',
                                     'subscribing_channel'])\
                            ['user_id'].nunique()

# Calculate the retention rate
daily_retention_rate = retention_subs/retention_total
daily_retention_rate = pd.DataFrame(
    daily_retention_rate.unstack(level=1)
)
Phân tích chiến dịch Marketing với pandas
print(daily_retention_rate)
subscribing_channel  Email  Facebook  House Ads  Instagram      Push
date_subscribed                                                     
2018-01-01            1.00  0.875000   0.687500   0.750000  1.000000
2018-01-02            0.75  1.000000   0.588235   0.625000  1.000000
2018-01-03             NaN  0.800000   0.647059   0.909091  0.666667
2018-01-04            1.00  0.666667   0.466667   0.500000       NaN
2018-01-05            1.00  0.571429   0.500000   0.636364  1.000000

Phân tích chiến dịch Marketing với pandas

Xây dựng hàm tính giữ chân

def retention_rate(dataframe, column_names):
    # Group by column_names and calculate retention
    retained = dataframe[dataframe['is_retained'] == True]\
                    .groupby(column_names)['user_id'].nunique()

    # Group by column_names and calculate conversion
    converted = dataframe[dataframe['converted'] == True]\
                     .groupby(column_names)['user_id'].nunique()

    retention_rate = retained/converted

    return retention_rate
Phân tích chiến dịch Marketing với pandas

Tỷ lệ giữ chân theo kênh

daily_retention = retention_rate(marketing, 
                                 ['date_subscribed', 
                                  'subscribing_channel'])

daily_retention = pd.DataFrame(
    daily_retention.unstack(level=1)
)
print(daily_retention.head()) 
subscribing_channel  Email  Facebook  House Ads  Instagram      Push
date_subscribed                                                     
2018-01-01            1.00  0.875000   0.687500   0.750000  1.000000
2018-01-02            0.75  1.000000   0.588235   0.625000  1.000000
2018-01-03             NaN  0.800000   0.647059   0.909091  0.666667
2018-01-04            1.00  0.666667   0.466667   0.500000       NaN
2018-01-05            1.00  0.571429   0.500000   0.636364  1.000000

Phân tích chiến dịch Marketing với pandas

Vẽ tỷ lệ giữ chân hằng ngày theo kênh

daily_retention.plot(date_subscribed, conversion_rate)
plt.title('Daily channel retention rate\n', size = 16)
plt.ylabel('Retention rate (%)', size = 14)
plt.xlabel('Date', size = 14)
plt.show()
Phân tích chiến dịch Marketing với pandas

Biểu đồ tỷ lệ giữ chân hằng ngày theo kênh lộn xộn

Phân tích chiến dịch Marketing với pandas

Hàm vẽ biểu đồ

def plotting(dataframe):
    for column in dataframe:
        plt.plot(dataframe.index, dataframe[column])
        plt.title('Daily ' + column + ' retention rate\n',
                  size = 16)
        plt.ylabel('Retention rate (%)', size = 14)
        plt.xlabel('Date', size = 14)
        plt.show()


plotting(daily_channel_retention)   
Phân tích chiến dịch Marketing với pandas

Biểu đồ Email

Phân tích chiến dịch Marketing với pandas

Hãy luyện tập!

Phân tích chiến dịch Marketing với pandas

Preparing Video For Download...