SQLとデータベースからのデータ取得 | データの取得と準備 | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
ad. 価格範囲を指定して商品を探せます

SQLとデータベースからのデータ取得

機械学習やデータ分析では、学習用データをデータベースから取得することがよくあります。データベースを利用することで、大量のデータを効率よく管理し、必要なデータだけを取り出せるようになります。

この記事では、SQLの基本的な役割と、SQLite・MySQL・SQLAlchemyを利用したデータ取得方法について解説します。

SQLとデータベースからのデータ取得を図で理解する

SQLとデータベースからのデータ取得を図で理解する

SQLとは?

SQL(Structured Query Language)は、データベースに保存されたデータを検索・取得・追加・更新するための言語です。

機械学習では、データベースから必要なデータを抽出し、前処理や分析、モデル学習に利用します。

操作
データ取得 SELECT
データ追加 INSERT
データ更新 UPDATE
データ削除 DELETE

データベースからデータを取得する流れ

一般的な流れは次のようになります。

  1. データベースへ接続する
  2. SQL文を実行する
  3. 必要なデータを取得する
  4. 取得したデータを分析や機械学習に利用する

例えば、顧客データや売上データを取得し、予測モデルの学習に利用できます。

よく利用されるデータベース

データベース 特徴
SQLite 軽量でインストール不要。学習や小規模システム向け
MySQL Webサービスで広く利用される
PostgreSQL 高機能で大規模システムにも対応

SQLiteを使ったデータ取得

SQLiteはPython標準ライブラリから利用できる軽量データベースです。

SQLiteデータベースに接続しデータを取得

import sqlite3

# データベースに接続
conn = sqlite3.connect('example.db')

# カーソルを作成
cur = conn.cursor()

# SQLクエリを実行
cur.execute('SELECT * FROM users')

# 結果を取得
rows = cur.fetchall()

# 結果を表示
for row in rows:
    print(row)

# 接続を閉じる
conn.close()

このコードでは、SQLiteデータベースへ接続し、usersテーブルからデータを取得しています。

MySQLを使ったデータ取得

MySQLは多くのWebシステムで利用される代表的なデータベースです。

MySQL用ライブラリのインストール

pip install pymysql

MySQLデータベースに接続しデータを取得

import pymysql

# MySQLに接続
conn = pymysql.connect(
    host='localhost',
    user='username',
    password='password',
    database='dbname'
)

# カーソルを作成
cur = conn.cursor()

# SQLクエリを実行
cur.execute('SELECT * FROM users')

# 結果を取得
rows = cur.fetchall()

# 結果を表示
for row in rows:
    print(row)

# 接続を閉じる
conn.close()

SQLiteと基本的な流れは同じですが、サーバーへ接続してデータを取得します。

SQLAlchemyを使ったデータ取得

SQLAlchemyはPythonで広く利用されるデータベース操作ライブラリです。

SQLを直接記述するだけでなく、Pythonオブジェクトとしてデータベースを扱うこともできます。

SQLAlchemyのインストール

pip install sqlalchemy

SQLAlchemyを利用したデータ取得

from sqlalchemy import create_engine, MetaData, Table

# データベースに接続
engine = create_engine('sqlite:///example.db')
connection = engine.connect()
metadata = MetaData()

# テーブルを読み込み
users = Table('users', metadata, autoload_with=engine)

# クエリを実行
query = users.select()
result = connection.execute(query)

# 結果を表示
for row in result:
    print(row)

SQLAlchemyを利用すると、複数のデータベースに対応しやすくなり、アプリケーション開発でも広く利用されています。

機械学習でデータベースが使われる理由

  • 大量のデータを効率よく管理できる
  • 必要なデータだけを抽出できる
  • 最新データをリアルタイムで利用しやすい
  • 複数のシステムから同じデータを利用できる

実務では、データベースから取得したデータをPandasへ読み込み、前処理や分析を行ってからモデル学習へ進むことが一般的です。

SQLとデータ取得の基本クエリ

SQL文 用途
SELECT * FROM users 全データ取得
SELECT name FROM users 特定列のみ取得
WHERE age > 20 条件を指定して取得
ORDER BY age 並び替え
LIMIT 100 取得件数の制限

データベース利用時のポイント

  • 必要な列だけ取得すると処理が高速になる
  • 大量データでは条件指定を活用する
  • 機械学習用データはSQLで絞り込んで取得する
  • 取得後はPandasなどで分析を行う