はじめに
前回紹介したJupyterではブラウザ上でPythonを実行したり、Markdownを埋め込んだり、それをPDFやHTMLで簡単にダウンロードできることを確認しました。これによるアドホック分析を簡単に行う下地を作ることができるようになりました。今回はこうしたインタラクティブに実行できるツールを使い、データ解析を容易にするためのPandasを使う方法を説明します。
もちろん初めからPandasの多種多様な統計処理を扱う必要はありません。最初はPandasの持つデータの入出力を簡単に行ったり、データの柔軟な変形およびピボットを使ったりすることから慣れていきましょう。
Pandasの基本的な使い方
サンプルデータで試す
下記のサンプルを元に試してみます。
これをsample.csvという形で保存し、Uploadボタンからファイルをアップロードします。
さて、CSVファイルからデータを読み込んで、いろいろと操作ができることがなんとなくわかったでしょうか? それでは、今回ビッグデータ分析基盤の分析エンジンとして利用しているMySQLにつないでみましょう。MySQLに接続するために必要なライブラリについては前回のインストール手順の中ですでにセットアップ済みです。
MySQLからのデータの入力
それではまずはMySQLからデータを取得してみましょう。
SQLと連携させるインターフェースを、%load_ext sql
を実行します。これにより%%sql
と先頭につけることで、SQLのインターフェースを通したコマンドを実行することが可能になります。
備考:上記コマンドを実行した場合に、下記が表示された場合、コンフィグの名前が変わったことを警告するWarningです。現状無視して問題ありません。
MySQLへの接続情報を付与して、クエリを含めて実行します。
また、2回目以降は接続情報は必要ありません。
SQLの結果を取得するには、以下の2種類の実行方法があります。
下記のようにワンライナーで実行するか
クエリを実行した後に_
を利用することで直前に実行されたコマンドの結果を代入したり、履歴から結果を取得をすることが可能です。
上記の場合は、ResultSets型で返却されるため、このデータをPandasで扱いやすいDataFrameに変換しておきましょう。
ちなみにDataFrameとは、Rなどデータ解析ではポピュラーなデータ構造となっています。特徴としては、2次元配列の各行/列にラベルを持っており、ラベルによる操作が可能である点です。Pandasでもこのデータフレームを使って前述の処理を行います。
最後にこのMySQLのデータで、ホストごとのレスポンスタイムを箱ヒゲ図で表現してみます。箱ヒゲ図には、.boxplot()
を利用します。
まとめ
アドホック分析環境として、JupyterとPandasを利用し、ブラウザ上で手軽にさまざまな集計を行うことができるようになりました。しかし、Pandasではすべての処理をメモリ上で行うため、数百万レコードまでであれば扱えますが、それ以上のデータ量を扱おうと思うとなかなか大変です。そこで分析エンジン上で数億件以上のデータを集約した後で、アドホック分析環境上で可視化していくというステップが非常に重要になってきます。
次回は、分析エンジン上に貯められたアクセスログもとに基本KPIを見つけていきましょう。