SQL 쿼리로 가져오기 정교화

pandas로 빠르고 간편한 데이터 적재

Amany Mahfouz

Instructor

열 선택(SELECT)

  • SELECT [column names] FROM [table name];
  • 예시:
    SELECT date, tavg 
    FROM weather;
    
pandas로 빠르고 간편한 데이터 적재

WHERE 절

  • WHERE 절로 조건에 맞는 레코드만 가져옵니다
    SELECT [column_names] 
      FROM [table_name] 
     WHERE [condition];
    
pandas로 빠르고 간편한 데이터 적재

숫자 필터링

  • 수학 연산자로 숫자를 비교합니다
    • =
    • > 및 >=
    • < 및 <=
    • <> (같지 않음)
    • 예시:
      SELECT * 
      FROM weather 
      WHERE tmax > 32;
      
pandas로 빠르고 간편한 데이터 적재

문자열 필터링

  • =와 일치할 텍스트로 정확히 문자열을 매칭합니다
  • 문자열 매칭은 대소문자를 구분합니다
  • 예시:
    /* 브루클린 사건 기록 가져오기 */
    SELECT * 
    FROM hpd311calls
    WHERE borough = 'BROOKLYN';
    
pandas로 빠르고 간편한 데이터 적재

SQL과 pandas

# 라이브러리 불러오기
import pandas as pd
from sqlalchemy import create_engine

# 데이터베이스 엔진 생성 engine = create_engine("sqlite:///data.db")
# 브루클린의 기록을 가져오는 쿼리 작성 query = """SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';"""
# 데이터베이스 조회 brooklyn_calls = pd.read_sql(query, engine)
print(brookyn_calls.borough.unique())
['BROOKLYN']
pandas로 빠르고 간편한 데이터 적재

조건 결합: AND

  • AND가 있는 WHERE 절은 모든 조건을 만족하는 레코드를 반환합니다
# 브롱크스의 배관 관련 기록을 가져오는 쿼리 작성
and_query = """SELECT * 
                 FROM hpd311calls 
                WHERE borough = 'BRONX' 
                  AND complaint_type = 'PLUMBING';"""

# 브롱크스의 배관 이슈 신고 불러오기 bx_plumbing_calls = pd.read_sql(and_query, engine) # 레코드 수 확인 print(bx_plumbing_calls.shape)
(2016, 8)
pandas로 빠르고 간편한 데이터 적재

조건 결합: OR

  • OR가 있는 WHERE 절은 하나 이상 조건을 만족하는 레코드를 반환합니다
# 누수 또는 배관 관련 기록을 가져오는 쿼리 작성
or_query = """SELECT * 
                FROM hpd311calls 
               WHERE complaint_type = 'WATER LEAK'
                  OR complaint_type = 'PLUMBING';"""

# 배관 또는 누수 관련 신고 불러오기 leaks_or_plumbing = pd.read_sql(or_query, engine) # 레코드 수 확인 print(leaks_or_plumbing.shape)
(10684, 8)
pandas로 빠르고 간편한 데이터 적재

연습해 봅시다!

pandas로 빠르고 간편한 데이터 적재

Preparing Video For Download...