今回はKaggleの
マーケティング用データを
覗いてみました。

解説動画はこちら



マーケティングデータを使ってデータ分析してみよう


kaggle のサンプルデータを用いて分析をしてみよう


生成AI系の登場で、単純なプログラマーや
開発系エンジニアの需要が急落しています。

でも、マーケターの需要はまだ有ると思うので
データ分析とかが出来るようになった方が
仕事の幅が増えるんじゃ無い?

ということで、早速マーケティング用の
分析手法を体験するコードを動かしてみましょう。

ここから先は
Google Colab で実行する事ができます。
試したい方は、colabでコードをコピペして
試してみてください。



データセットのダウンロード先

Kaggleのリンク

こちらのサイトからダウンロードできます
Google アカウントなどでログインが必要ですが
ダウンロードしてCSVファイルを手元に保存してください。




サンプルデータの概要

架空の企業による
架空の広告キャンペーンの出稿データのようです


    企業情報: 複数の架空企業
    •    キャンペーン形式: メール・SNS・インフルエンサー・ディスプレイ広告・検索広告など
    •    ターゲット層: 年齢・性別で区分されたオーディエンス
    •    チャネル利用: SNS、YouTube、Google Ads、メールなど複数可
    •    成果指標:
    •    Conversion Rate(CVR):成果への転換率
    •    Clicks , Impressions(CTR):クリック・表示回数
    •    Acquisition Cost , ROI:獲得単価・投資利益率
    •    Engagement Score:1〜10段階のエンゲージメントスコア
    •    時系列データ: キャンペーン実施日あり
    •    地理情報・言語: 主要都市と多言語対応(英・西・仏・独・中)




ライブラリのインポート

データを読み込みするには以下のライブラリを
先に読み込みする必要があります。

pandas : データフレームというデータ型を扱うためのライブラリ
seaborn : 詳細な可視化をするためのライブラリ
matplotlib : 可視化用の基本ライブラリ

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt


データの読み込み

ライブラリを読み込みできたら
次はデータの配置です。

ダウンロードしたファイルをデータ置き場に置く

colabのメニューの左側に
「フォルダ」マークがあるので
フォルダを開いて、その中にドラッグで
データを配置できます。


配置できたら次のコードで
データを読み込みしましょう。


CSVファイルを読み込みしてPandasデータフレームにする


import pandas as pd
データフレーム変数名 = pd.read_csv(ファイルパス)

# サンプルデータの読み込み
import pandas as pd
file_path = "marketing_campaign_dataset.csv"
df = pd.read_csv(file_path)

データのプレビューは次のコードです
# データのプレビュー
df.head(3)


データを加工する

データ分析では正しい形にデータを補正する必要があります。

今回は下記のデータ加工を行います。

1.数値になっていないカラムを数値に変換
2.不要な数値IDカラムを文字列に変換

.astype(データ型)
.replace("正規表現検索" "変換後の文字列", regex=True)
.str.replace("変換前の文字列","変換後の文字列")

# データの加工を行う
df["Campaign_ID"] = df["Campaign_ID"].astype(str)
df["Acquisition_Cost"] = df["Acquisition_Cost"].replace("[\$,]", "", regex=True).astype(float)
df["Duration"] = df["Duration"].str.replace(" days","").astype(float)


今データに無い指標を作る

データから、別のデータを作成することもできます。
今回のデータにはCTR,CPAの項目がないので
新たに作成してみましょう。


・クリックレート(CTR)
クリック数 / インプレッション数

・顧客獲得単価(Cost Per Acquisition)
獲得コスト / クリック数

# 新しい指標カラムを作成する
df["CTR"] = df["Clicks"] / df["Impressions"]
df["CPA"] = df["Acquisition_Cost"] / df["Clicks"]


数値データの統計量を見る

pandasデータフレームでは
数値型の統計量を見るメソッド describe があります。

これで数値カラムの統計量を算出してみてみましょう。
# 統計量を算出する
df.describe()


ここから、データ分析用のサンプルコードを見ていきましょう
(おさわりだけが)



1.数値データをヒストグラムにする

Seabornライブラリの histplot でヒストグラムを描画する

# 数値型のカラムのみ抽出
numeric_cols = df.select_dtypes(include='number').columns

# カラムごとに個別プロット
for col in numeric_cols:
    plt.figure(figsize=(8, 4))
    sns.histplot(df[col], bins=30, kde=True)
    plt.title(f"Histogram of {col}")
    plt.xlabel(col)
    plt.ylabel("Frequency")
    plt.tight_layout()
    plt.show()



2.チャネル別パフォーマンス分析

チャネル別でConversion_Rate,ROI,Acquisition_Costを集計して
matplotlob で棒グラフで描画する

# チャネルごとの平均CVR・ROI・Acquisition_Costを集計
channel_stats = df.groupby("Channel_Used")[["Conversion_Rate", "ROI", "Acquisition_Cost"]].mean().reset_index()

# 可視化(棒グラフ)
plt.figure(figsize=(12, 5))
sns.barplot(data=channel_stats, x="Channel_Used", y="Conversion_Rate")
plt.title("Chanel AVG Conversion Rate")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()


3.キャンペーンタイプ別のROI比較(箱ひげ図

Seabornライブラリの boxplot で箱ひげ図を描画する

# ROIの分布をキャンペーンタイプごとに比較
plt.figure(figsize=(10, 6))
sns.boxplot(data=df, x="Campaign_Type", y="ROI")
plt.title("Campaign_Type ROI distribution")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()


4.ターゲット × セグメントごとのCVR比較

Seabornライブラリの heatmap でヒートマップを描画する


# ピボットテーブルで平均CVRを可視化
pivot = df.pivot_table(values="Conversion_Rate", 
                       index="Target_Audience", 
                       columns="Customer_Segment", 
                       aggfunc="mean")

# ヒートマップで表示
plt.figure(figsize=(12, 6))
sns.heatmap(pivot, annot=True, fmt=".2f", cmap="Blues")
plt.title("Target ×Segment Conversion Rate")
plt.tight_layout()
plt.show()


5.CTR・CVR・CPAの統合評価

Seabornライブラリの scatterplot で
散布図を描画する


# 散布図でCTRとCVRの相関を視覚化(CPAでサイズ分け)
plt.figure(figsize=(10, 6))
sns.scatterplot(data=df, x="CTR", y="Conversion_Rate", size="CPA", hue="Channel_Used", sizes=(20, 200), alpha=0.7)
plt.title("CTR vs Conversion Rate(dots=CPA)")
plt.tight_layout()
plt.show()


おわりに


マーケティング活動もプログラミングができると
より大量のデータ量を扱え、もっと多彩な分析手法も
取り入れる事ができるようになります。

もっとマーケティング X プログラミング を学びたい方は
この先の講座を検討中につき、それをお待ちください!!!

それでは。