データベース入門

pandasで効率よくデータを取り込む

Amany Mahfouz

Instructor

リレーショナルデータベース

  • エンティティのデータはテーブルに整理される
  • 各行(レコード)はエンティティのインスタンス
  • 各列は属性の情報を持つ
  • テーブルは一意キーで相互に関連付け可能
  • 大量データ、同時利用、データ品質管理をサポート
  • 各列にデータ型を指定
  • データベース操作には SQL(Structured Query Language)
pandasで効率よくデータを取り込む

代表的なリレーショナルDB

Microsoft SQL Server ロゴ

Oracle ロゴ

  • SQLite データベースはコンピュータファイル

PostgreSQL ロゴ

SQLite ロゴ

pandasで効率よくデータを取り込む

データベースへの接続

  • 2ステップ:
    1. データベースへの接続を作成
    2. データベースにクエリ

データベースのイラスト

pandasで効率よくデータを取り込む

データベースエンジンの作成

SQLAlchemy ロゴ

  • sqlalchemycreate_engine() は接続を扱うエンジンを作成
    • 接続先データベースの文字列URLが必要
    • SQLite のURL形式: sqlite:///filename.db
pandasで効率よくデータを取り込む

データベースのクエリ

  • データベースからの読み込みに pd.read_sql(query, engine) を使用
  • 引数
    • query: 実行するSQLまたは読み込むテーブル名の文字列
    • engine: 接続/データベースエンジンのオブジェクト
pandasで効率よくデータを取り込む

SQL復習: SELECT

  • データベースからデータを取得するために使用
  • 基本構文:
    SELECT [column_names] FROM [table_name];
    
  • テーブル全件を取得:
    SELECT * FROM [table_name];
    
  • コード規約: キーワードは大文字、文末にセミコロン(;)
pandasで効率よくデータを取り込む

データベースからの取得

# pandas と sqlalchemy の create_engine を読み込み
import pandas as pd
from sqlalchemy import create_engine

# 接続を管理するデータベースエンジンを作成 engine = create_engine("sqlite:///data.db")
# テーブル名で weather 全件を読み込み weather = pd.read_sql("weather", engine)
pandasで効率よくデータを取り込む
# 接続を管理するデータベースエンジンを作成
engine = create_engine("sqlite:///data.db")

# SQLで weather 全件を読み込み weather = pd.read_sql("SELECT * FROM weather", engine)
print(weather.head())
       station                         name  latitude  ...   prcp  snow  tavg tmax  tmin
0  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         52    42
1  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    39
2  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    42
3  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         51    40
4  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.75   0.0         61    50

[5 rows x 13 columns]
pandasで効率よくデータを取り込む

Ayo berlatih!

pandasで効率よくデータを取り込む

Preparing Video For Download...