Pandas DataFrame에 대한 SQL 쿼리 - 1부

놀이터 데이터베이스



sqlitetutorial.netSQLite Browser의 데이터베이스를 사용하여 쿼리를 처리하고 있습니다. 데이터베이스에서 이 게시물에는 하나의 테이블만 사용하겠습니다. 여기서는 Albums 테이블만 사용하겠습니다.

Python 놀이터의 경우 Anaconda Jupyter Notebook을 사용하고 있습니다. 그리고 테이블을 Pandas DataFrame으로 가져오려면 테이블을 csv 파일로 내보내기만 하면 됩니다. 이 작업은 SQLite Browser를 사용하여 수행하거나 my gist 에서 가져올 수 있습니다.

또는 Google Colab을 알고 있다면 Jupyter Notebook의 훌륭한 대안입니다.

데이터 프레임 준비


albums.csv 파일이 python 또는 ipynb 파일과 동일한 디렉토리에 있다고 가정하고 다음과 같이 pandas 데이터 프레임에 로드할 수 있습니다.

import pandas as pd

albums_df = pd.read_csv("albums.csv")


Pandas Dataframe에 대한 기본 SQL 쿼리



1부에서는 DataFrame 구문에서 SQL의 SELECT , WHERE , LIMITORDER BY만 다룹니다.

모든 열 및 행 선택




SELECT * 
FROM albums



albums_df


하나의 열 선택




SELECT Title 
FROM albums



albums_df[['Title']]


더 많은 열 선택




SELECT Title, ArtistId 
FROM albums



albums_df[['Title', 'ArtistId']]


하나의 조건으로 필터링




SELECT * 
FROM albums
WHERE Title = 'The Best Of Van Halen, Vol. I'



albums_df[albums_df['Title'] == 'The Best Of Van Halen, Vol. I']


더 많은 조건으로 필터링




SELECT * 
FROM albums
WHERE ArtistId = 2 AND AlbumId = 3



albums_df[(albums_df['ArtistId'] == 2) & (albums_df['AlbumId'] == 3) ]


더 많은 값으로 필터링




SELECT * 
FROM albums
WHERE ArtistId IN (8, 9, 10)



albums_df[albums_df['ArtistId'].isin([8,9,10])]


문자열에서 검색



사이:

SELECT * 
FROM albums
WHERE Title LIKE '%The%'



albums_df[albums_df['Title'].str.contains('The')]


시작:

SELECT * 
FROM albums
WHERE Title LIKE 'The%'



albums_df[albums_df['Title'].str.contains('^The')]


로 끝나다:

SELECT * 
FROM albums
WHERE Title LIKE '% Hits'



albums_df[albums_df['Title'].str.contains(' Hits$')]


처음 10개 행 제한




SELECT * 
FROM albums
LIMIT 10



albums_df[0:10]


또는

albums_df.head(10)


열을 기준으로 정렬



오름차순:

SELECT *
FROM albums
ORDER BY Title ASC



albums_df.sort_values(['Title'], ascending=True)


내림차순:

SELECT *
FROM albums
ORDER BY Title DESC



albums_df.sort_values(['Title'], ascending=False)



좋은 웹페이지 즐겨찾기