ビッグデータを使って統計分析がしたい! 【データ取得編】

 
前回は、Pythonが利用できる環境を作成しました。
今回は分析するためのデータを取得する方法をいくつか考えたいと思います。

使用するデータは、以下のサイトから取得しました。
東京電力管内の過去の電力使用実績のダウンロード

データベースには、事前にテーブルを作成して上記のデータをCSV取り込みしています。
CSVファイルは、2008年から2014年までのデータをダウンロードしたものを所定のフォルダに格納しています。

MySQLに接続してデータを取得する

まず初めにデータベースへのコネクターをインストールします。

コマンドプロンプトを開いて下記のコマンドを入れて実行して下さい。

conda install -c https://conda.anaconda.org/anaconda mysql-connector-python
conda install -c https://conda.anaconda.org/anaconda mysql-connector-python
conda install -c https://conda.anaconda.org/anaconda mysql-connector-python

インストールが開始されます。
1

インストールが終わりました。これでMySQLにDB接続できます。
2

DB接続してデータを取得するプログラムは以下になります。

import mysql.connector
def mysqlTest():
# 接続情報
con = mysql.connector.connect(host='localhost',
port=3306,
db='python_test_mysql',
user='root',
passwd='',
charset="utf8")
cur = con.cursor(buffered=True)
#実行するSQL
sql = "select * from tbl1"
# 実行
cur.execute(sql)
# 全データ取得
rows = cur.fetchall()
for row in rows:
print (row)
# 接続クローズ
cur.close()
con.close()
# mainメソッド
if __name__ == "__main__":
mysqlTest()
import mysql.connector def mysqlTest(): # 接続情報 con = mysql.connector.connect(host='localhost', port=3306, db='python_test_mysql', user='root', passwd='', charset="utf8") cur = con.cursor(buffered=True) #実行するSQL sql = "select * from tbl1" # 実行 cur.execute(sql) # 全データ取得 rows = cur.fetchall() for row in rows: print (row) # 接続クローズ cur.close() con.close() # mainメソッド if __name__ == "__main__": mysqlTest()
import mysql.connector

def mysqlTest():
    # 接続情報
    con = mysql.connector.connect(host='localhost', 
                                  port=3306, 
                                  db='python_test_mysql', 
                                  user='root', 
                                  passwd='', 
                                  charset="utf8")

    cur = con.cursor(buffered=True)
    #実行するSQL
    sql = "select * from tbl1"
    # 実行
    cur.execute(sql)
    # 全データ取得
    rows = cur.fetchall()

    for row in rows:
        print (row)
    # 接続クローズ
    cur.close()
    con.close()

# mainメソッド
if __name__ == "__main__":

    mysqlTest()

PostgreSQLに接続してデータを取得する

今回はpsycopg2を使ってPostgreSQLのデータベースに接続することにしました。

こちらもコネクターのダウンロード・インストールが必要です。
ダウンロードしたexeを実行して下さい。インストールが開始されます。

3

インストールが終わりました。これでPostgreSQLにDB接続できます。

5

DB接続してデータを取得するプログラムは以下になります。
MySQLと一緒ですね。

import psycopg2
def postgresqlTest():
# 接続情報
con = psycopg2.connect(host="localhost",
port=5432,
database="python_test_postgres",
user="postgres",
password="password")
cur = con.cursor()
# 実行するSQL
sql = "select * from tbl1"
# 実行
cur.execute(sql)
# 全データ取得
rows = cur.fetchall()
for row in rows:
print (row)
# 接続クローズ
cur.close()
con.close()
# mainメソッド
if __name__ == "__main__":
postgresqlTest()
import psycopg2 def postgresqlTest(): # 接続情報 con = psycopg2.connect(host="localhost", port=5432, database="python_test_postgres", user="postgres", password="password") cur = con.cursor() # 実行するSQL sql = "select * from tbl1" # 実行 cur.execute(sql) # 全データ取得 rows = cur.fetchall() for row in rows: print (row) # 接続クローズ cur.close() con.close() # mainメソッド if __name__ == "__main__": postgresqlTest()
import psycopg2

def postgresqlTest():
    # 接続情報
    con = psycopg2.connect(host="localhost", 
                           port=5432, 
                           database="python_test_postgres", 
                           user="postgres", 
                           password="password")

    cur = con.cursor()
    # 実行するSQL
    sql = "select * from tbl1"
    # 実行
    cur.execute(sql)
    # 全データ取得
    rows = cur.fetchall()

    for row in rows:
        print (row)
    # 接続クローズ
    cur.close()
    con.close()

# mainメソッド
if __name__ == "__main__":

    postgresqlTest()

CSVファイルからデータを取得する

CSV読み込みは、Anacondaの機能にもともとあるのでインストール等は必要ありません。
ファイルを読んで、閉じるだけです。

CSVファイルを読み込んでデータを取得するプログラムは以下になります。

import csv
def csvTest():
csvfile = 'C:/anaconda_pleiades/workspace/test/data/csv_data.csv'
# csvファイルオープン
f = open(csvfile, "r")
# ファイル読み込み
reader = csv.reader(f)
for row in reader:
print (row)
# csvファイルクローズ
f.close()
# mainメソッド
if __name__ == "__main__":
csvTest()
import csv def csvTest(): csvfile = 'C:/anaconda_pleiades/workspace/test/data/csv_data.csv' # csvファイルオープン f = open(csvfile, "r") # ファイル読み込み reader = csv.reader(f) for row in reader: print (row) # csvファイルクローズ f.close() # mainメソッド if __name__ == "__main__": csvTest()
import csv

def csvTest():

    csvfile = 'C:/anaconda_pleiades/workspace/test/data/csv_data.csv'

    # csvファイルオープン
    f = open(csvfile,  "r")
    # ファイル読み込み
    reader = csv.reader(f)

    for row in reader:
        print (row)

    # csvファイルクローズ
    f.close()

# mainメソッド
if __name__ == "__main__":

    csvTest()

まとめ

いかがでしたか。データを取得すると一口に言っても、方法は様々です。
今回紹介した以外のデータベース、外部ファイルもたくさん種類があります。

せっかく統計分析ができるPythonを使用しているので、データ取得の際はできるだけシンプルにして
(複雑なSQLは書かない、計算に必要のない項目はセレクトしないなど)
計算はPythonにまかせて処理したいと思います。

そろそろグラフを表示したいですね。

《関連記事》
ビッグデータを使って統計分析がしたい! 【準備編】

記事をシェア
MOST VIEWED ARTICLES