この記事では、プログラミング言語のPythonを使って、日別売上に対してどの広告施策からの流入(トラフィック)が最も相関が高かったのかを調べる手順をまとめています。マーケティング活動において、売上と広告トラフィックの相関を見ることは、どの広告施策をもっと強化していくべきなのかを仮説立てるヒントになります。今回は、約1年間分の日別のマーケティングデータをダミーで用意し、分析を行います。
テーブルデータの読み込み
まず、日別売上と各種広告トラフィックのデータが入ったcsvデータ(ファイルパス名:marketing)を読み込みます。Pythonのライブラリであるpandasをインポートし、read_csv関数を用いて読み込みます。そして読み込んだデータをhead関数で最初の5行を確認してみましょう。
import pandas as pd
data = pd.read_csv('marketing')
data.head()
その結果がこちらです。
正しくテーブルデータが読み込めていることを確認できました。
欠損値の確認と対応
次にデータに欠損値がないかを確認し、削除するもしくは、適切な値で埋めるといった処理をしていきます。欠損値の確認には、isna関数を用い、sum関数を掛け合わせて欠損値の総計を各列ごとに出していきます。
data.isna().sum()
結果は次のようになり、”Google_Ad”に7つの欠損値が発見されました。
今回は欠損値を適当な値で埋めたいと思いますが、ここで一度 “Google_Ad” についてデータの分布を確認してみます。可視化ライブラリのmatplotlibをインポートし、ヒストグラムで表します。
import matplotlib.pyplot as plt
%matplotlib inline
plt.hist(data['Google_Ad'], bins=100)
plt.title("Google_Ad")
plt.xlabel("traffic")
plt.ylabel("day_count")
plt.show()
グラフ結果を見ると、日別のトラフィックが25未満あたりに集中しており、かなり偏った分布となっていることがわかりました。このような分布のデータに対しては平均値よりも中央値で欠損値を当てた方が適切と判断します。
ヒストグラムや分散に関する基礎知識はこちらの記事で扱っています。
https://korekara-marketing.com/statistics-frequency-distribution/
Googl_Ad の欠損値を中央値で埋めるためにfillna関数を用います。欠損値が埋めることができたかも、また、isna関数を使って確認もしてみましょう。
#欠損値を中央値で埋める。
data2= data.fillna(data['Google_Ad'].median())
#欠損値が消えたかの確認
data2.isna().sum()
Google_Adの欠損値が7から0になり、処理できたことが確認できました。
相関の可視化
欠損値の処理もできたので、ここで本題の相関を確認する処理に入ります。今回は、可視化ライブラリのseabornをインポートしてheatmap関数を使って各要素同士の相関を一覧で見る方法で確認します。
import seaborn as sns
sns.heatmap(data2.corr(),annot=True,cmap="Blues",vmax=1,vmin=-1,center=0,square=True)
このように簡単なコードで各要素の相関係数が一発で可視化できました。結果を見ると、Sales(売上)と相関関係が特に強いのは、0.57のListing_Ad(リスティング広告)と0.62のe-mail(メルマガ)ということがわかりました。リスティング広告は自社の商品サービスに関連するキーワードを検索している人をターゲットにしている広告です。また、メルマガも一度自社のサイトで会員登録をした人に対して配信をするため、両方とも比較的購入(売上)に近いターゲットの広告施策であると言えます。
また、別の要素同士の相関を見たときに、Listing_AdとGoogle_Adの相関が0.54で相関が見られるため、可能性としてGoogle_Adで配信した広告がListing_Adの検索量にプラスの効果を生んでいるかもしれないと仮説立てることができます。このように各広告施策の特性とも照らし合わせながら、相関分析の結果を考察するとより打ち手の仮説立案につなげていくことができるでしょう。
ウェブ広告や相関に関する基礎知識はこちらの記事でも解説していますので、興味のある方はぜひご一読ください。