주제
SQL 쿼리문을 작성하여 데이터를 가져오는 방법에 대해 배웠다.
열 선택하기
SELECT 열 이름 FROM 테이블명;
으로 특정 컬럼을 지정해서 로드할 수 있다.
pandas의 read_excel, read_csv에서 usecols
와 비슷하다.
SELECT date, tavg
FROM weather;
WHERE 절 사용하기
Where 절을 사용해서 가지고 오고자 하는 데이터를 필터링해서 가져올 수 있다.
- 숫자의 경우 =, >, ≥, <, ≤, <>으로 비교해서 가져올 수 있다.
SELECT * FROM weather WHERE tmax > 32;
위 쿼리는 32보다 큰 tmax값을 가진 레코드를 전부 가져온다.
- 문자열의 경우 =을 사용해서 문자열 일치 비교한다. 문자열은 대소문자를 구분한다.
SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';
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(brooklyn_calls.borough.unique())
['BROOKLYN']
AND로 조건 결합하기
WHERE
조건 내에서 AND
을 사용해서 조건을 결합할 수 있다.
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)
OR로 조건 결합하기
AND 연산자는 모든 조건이 참이어야 한다.
OR 연산자는 하나 이상이 참이면 레코드를 반환한다.
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)
Uploaded by Notion2Tistory v1.1.0