これなら使える!ビッグデータ分析基盤のエコシステム

第5回 ビッグデータ分析基盤のためのアドホック分析環境 ~Pandas実践編

この記事を読むのに必要な時間:およそ 2 分

はじめに

前回紹介したJupyterではブラウザ上でPythonを実行したり,Markdownを埋め込んだり,それをPDFやHTMLで簡単にダウンロードできることを確認しました。これによるアドホック分析を簡単に行う下地を作ることができるようになりました。今回はこうしたインタラクティブに実行できるツールを使い,データ解析を容易にするためのPandasを使う方法を説明します。

もちろん初めからPandasの多種多様な統計処理を扱う必要はありません。最初はPandasの持つデータの入出力を簡単に行ったり,データの柔軟な変形およびピボットを使ったりすることから慣れていきましょう。

Pandasの基本的な使い方

サンプルデータで試す

下記のサンプルを元に試してみます。

host,method,status
153.232.253.97,GET,200
153.232.253.97,GET,401
253.23.23.1,GET,200

これをsample.csvという形で保存し,Uploadボタンからファイルをアップロードします。

# グラフをブラウザ内で表示するために呼び出します
%matplotlib inline
# Pandasの読み込み
import pandas as pd
# Jupyterでのlsコマンド
%ls

図1 Pandasの読み込み

図1 Pandasの読み込み

# CSVデータを変数aに取り込む(statusは文字列にしておきたいので,読み込む時にstringを指定する)
a = pd.read_csv("sample.csv", dtype={'status':'S'} )
# 読み込んだ変数aの内容をそのまま参照
a
# 各columnのデータ数,平均,分散などの統計量をざっと見ることができます
a.describe

図2 CSVデータの取り込み

図2 CSVデータの取り込み

# ピボットテーブルを作る
a.T

図3 ピボットテーブルを作る

図3 ピボットテーブルを作る

# 'host'カラムのデータのみ取得する
a['host']
# 1行目から2行目までを取得する
a[1:3]

図4 hostカラムのデータのみ取得する

図4 hostカラムのデータのみ取得する

# それぞれのカラムごとの件数をカウントする
a.count()
# host毎の統計情報を参照する
a.groupby('host').describe()

図5 hostごとに件数を集計

図5 hostごとに件数を集計

# status が '200'のデータのみ取得する
a[a['status']=='200']
# status毎の件数を集計して,棒グラフで描画
a['status'].value_counts().plot(kind='bar')

さて,CSVファイルからデータを読み込んで,いろいろと操作ができることがなんとなくわかったでしょうか? それでは,今回ビッグデータ分析基盤の分析エンジンとして利用しているMySQLにつないでみましょう。MySQLに接続するために必要なライブラリについては前回のインストール手順の中ですでにセットアップ済みです。

著者プロフィール

高橋達(たかはしとおる)

Treasure Data Inc.でテクニカルサポートエンジニアとして,毎日,日米問わず顧客のサポートを担当。サポートエンジニアのエンジニアとしての地位向上を目指して色々模索中。そのために,秋葉原幻橙館で今日も元気にOSS活動を行っている。

URL:http://toru-takahashi.gitbooks.io/secret-ninja/content/

コメント

コメントの記入