English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Pandas SQL 작업

Pandas SQL 작업의 구체적인 예제

모든 가능한 Pandas 사용자가 SQL에 대해 잘 알고 있기 때문에, 이 페이지는 Pandas를 사용하여 다양한 SQL 작업을 수행하는 방법에 대한 몇 가지 예제를 제공합니다.

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 print(tips.head())

실행 결과는 다음과 같습니다:

      total_bill  tip  sex  smoker  day  time  size
0        16.99  1.01   Female  No  Sun  Dinner      2
1        10.34  1.66     Male  No  Sun  Dinner      3
2        21.01  3.50  Male  No  Sun  Dinner      3
3        23.68  3.31     Male  No  Sun  Dinner      2
4        24.59  3.61   Female  No  Sun  Dinner      4

조회

SQL에서는 선택은 선택한 칼럼의 콤마 구분 목록(또는 사용할 수 있는)*모든 열을 선택하는 방법입니다)

 SELECT total_bill, tip, smoker, time
 from tips
 LIMIT 5;

Pandas를 사용하여 열 이름 목록을 DataFrame에 전달하여 열 선택을 완료합니다:

 tips[['total_bill', 'tip', 'smoker', 'time']].head(5)

하나의 전체 예제를 보겠습니다:

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
  
 tips=pd.read_csv(url)
 print(tips[['total_bill', 'tip', 'smoker', 'time']].head(5)

실행 결과는 다음과 같습니다:

   total_bill  tip  smoker  time
0       16.99  1.01      No  Dinner
1       10.34  1.66      No  Dinner
2       21.01  3.50  No  Dinner
3       23.68  3.31      No  Dinner
4       24.59  3.61      No  Dinner

칼럼 이름 목록을 포함하지 않는 DataFrame을 호출하면 모든 칼럼이 표시됩니다(SQL과 유사하게)*)

WHERE 조건 쿼리

SQL에서 WHERE 문장을 사용하여 필터링합니다.

 SELECT * from tips WHERE time = 'Dinner' LIMIT 5;

DataFrame는 여러 가지 방법으로 필터링할 수 있습니다. 가장 직관적인 방법은 부울 인덱스를 사용하는 것입니다.

 tips[tips['time'] == 'Dinner'].head(5)

우리는 완전한 예제를 보겠습니다

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 print(tips[tips['time'] == 'Dinner']).head(5)

실행 결과는 다음과 같습니다:

     total_bill  tip  sex  smoker  day  time  size
0       16.99  1.01   Female  No  Sun  Dinner    2
1       10.34  1.66     Male  No  Sun  Dinner    3
2       21.01  3.50  Male  No  Sun  Dinner    3
3       23.68  3.31     Male  No  Sun  Dinner    2
4       24.59  3.61   Female  No  Sun  Dinner    4

위 문장은 일련의 True / False 객체를 DataFrame에 전달하여 True인 모든 행을 반환합니다.

GroupBy 그룹

이 작업은 전체 데이터 집합의 각 그룹에 대한 레코드 수를 가져옵니다. 예를 들어, 성별 그룹과 수를 조회합니다:

 SELECT sex, count(*)
 from tips
 GROUP BY sex;

Pandas에서는 다음과 같은 작업을 수행합니다:

 tips.groupby('sex').size()

우리는 완전한 예제를 보겠습니다

 import pandas as pd
 url = 'https://raw.github.com/pandasdev/
 pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 print tips.groupby('sex').size()

실행 결과는 다음과 같습니다:

 sex
 Female 87
 Male 157
 dtype: int64

N 행 수를 확인하십시오

SQL이 LIMIT를 사용하여 N 행을 반환합니다:

 SELECT * from tips
 LIMIT 5 ;

Pandas에서는 다음과 같이 작업합니다:

 tips.head(5)

우리는 완전한 예제를 보겠습니다

 import pandas as pd
 url = 'https://raw.github.com/pandas-dev/pandas/master/pandas/tests/data/tips.csv'
 tips=pd.read_csv(url)
 tips = tips[['smoker', 'day', 'time']].head(5)
 print tips

실행 결과는 다음과 같습니다:

     smoker   day     time
0      No   Sun   Dinner
1      No   Sun   Dinner
2      No   Sun   Dinner
3      No   Sun   Dinner
4      No   Sun   Dinner