Pythonで広告レポートを加工してみた

こんにちは。GMO NIKKOエンジニアのY.Yです。
業務上使用できるかなと思い、Pythonのpandasというライブラリを使用して広告レポートの加工をしてみたので紹介いたします。
実際にダウンロードした広告レポートをそのままDBに取り込むことが少なく、行の削除や列の追加をする必要があった為今回実行してみました。
前回の記事では広告レポートの自動取得を行ったのでその続きになっています。
作業環境はWindowsで、Pythonは事前にインストールされている前提で進めていきます。

pandasとは

pandasはデータ分析を支援する機能を搭載したライブラリで、CSVやExcelファイルなどにデータの入出力ができ、データ集計や加工を行う際に使用されています。

事前準備

pandasのインストール

コマンドプロンプトで上記コマンドを実行し、pandasのインストールを行う。

広告レポートデータの加工

前回同様今回も某媒体のクリエイティブレポートを対象にデータの加工を行おうと思います。
加工前のレポートが↓です。 ※掲載するレポートデータは見易さや機密情報保護の観点から架空のものに変換してあります。

下記の流れで処理を実行します。

①ダウンロードしたcsvファイルを読み込む
②インプレッション数・クリック数・コンバージョン数の空白箇所を0で埋める
(少し分かり辛いですが、4,5行目辺りが対象です)
③インプレッション数・クリック数・コンバージョン数が全て0のデータは不要の為削除する
④不足項目(項目名・日付・キャンペーン名)を追加する
⑤①~④で加工したファイルの出力を行う

コード化したものがこちら
※機密情報に係る部分は(xxxxx)で伏せてあります

解説

7行目ではレポートファイルの格納されているファイルパスを指定しています。
今回ダウンロードしたレポートファイルはshift-jis形式であった為文字コードを指定しています。
この際utf-8を指定するとエラーになるので読み込むファイルの文字コードに関しては注意が必要です。

10,12行目では数値項目についての処理を行っています。
加工前ファイルには数値がついていない場合、0や空白が混ざっていたので空白行は0になるように統一しています。
対象列の空白を0に統一した後は、データとして不要のため対象列が全て0の行は削除しています。
fillnaメソッドを用いて空白行を0に置換し、queryメソッドを用いて条件に該当する行のみ抽出しています。
また、文末のinplaceはTrueを設定し、行が置換されるようにしています。
この時Falseを設定した場合、行の置換はされません。

18,19行目ではレポートに前日日付を追加しています。
広告レポートでは、当日ではなく前日日付でデータが確定するので、当日ではなく前日日付の追加としています。
日付のフォーマット自体は文末のstrftimeメソッドで指定できます。今回は年月日をしていますがマイクロ秒数まで設定することが可能です。

26行目では出力したいフォルダを指定して、加工後のファイルを出力します。
この時indexはFalseを指定していますが、Trueにするとファイル内に行番号も一緒に出力されてしまいます。
DBとして取り込む際には不要なので今回は除外しています。

処理を行い、加工した後のファイルの中身が↓です。 加工前のファイルと比べてみるとインプレッション数・クリック数・コンバージョン数が全て0の行が削除され、媒体名・日付・キャンペーン名列が追加されています。

まとめ

いかがでしたでしょうか。
とても簡単にレポートの加工ができたのではないかと思います。
pandasを使用したデータ加工は他にも様々な場面で活用できるのではないでしょうか。
次回は加工後データをGoogle CloudのCloud functionへアップデートする作業を自動化してみようと思います。

閲覧頂きありがとうございました。