Starbucks Offers Study
Udacity Data Scientist Nano Degree - Capstone Project
Project Introduction
This data set contains simulated data that mimics customer behavior on the Starbucks rewarding system in their mobile application. Once every few days, Starbucks sends out an offer to users of the mobile app. The message can be an advertisement for a drink or an actual offer such as a discount or BOGO (buy one get one free). Some users might not receive any offer during certain weeks. We are going to analyze three file:
- portfolio: containing offer ids and meta data about each offer (duration, type, etc.). 10 rows, 6 columns.
- profile: demographic data for each customer. 17000 rows, 5 columns.
- transcript: records for transactions, offers received, offers viewed, and offers completed. 306534 rows, 4 columns.
The process of our analysis will be by the following step: Define our Business question, understanding the data sets, Data preparation and wrangling, analyze the data, model the data, compare model performance, and finally selecting one model and improving it.
Business Model
Starbucks is wondering how they can increase the total sales revenue by providing different offers to different customers. That’s exactly the target of this project, namely, investigation of the corresponding offers according to customer profiles. The objective of Starbucks is to find out the relationship between customers patterns and offer types.
Data Model
Now, let’s go through the data tables, so as to get an overview of the data sets. The raw dataframes will be illustrated as follows.
- portfolio dataframe
- profile dataframe
- transcript dataframe
Data preprocessing and wrangling
Based on what we have seen in the previous step, there needs to be some work to prepare the data for analysis and modeling.
For our first dataframe which is portfolio, we can see that the ‘channels’ column need some work. Why? because it contains a list, so each value in that list must have its own column. After separating each value, we will obviously need to drop the ‘channels’ column as it is no longer needed. The table will look like this: