Python Pandas 라이브러리 2 (데이터 검색)

Pandas(데이터 검색)


데이터 준비(Seaborn - tips)

Seaborn 라이브러리의 기본 제공 데이터셋인 tips를 예제로 한다.

import pandas as pd
import seaborn as sns

# tips 데이터 load
tips = sns.load_dataset("tips")
# tips의 데이터 타입 확인
print(type(tips))               # <class 'pandas.core.frame.DataFrame'>

tips

    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
...	...	...	...	...	...	...	...
239	29.03	5.92	Male	No	Sat	Dinner	3
240	27.18	2.00	Female	Yes	Sat	Dinner	2
241	22.67	2.00	Male	Yes	Sat	Dinner	2
242	17.82	1.75	Male	No	Sat	Dinner	2
243	18.78	3.00	Female	No	Thur	Dinner	2
244 rows × 7 columns

데이터 정보 확인

tips.info()

출력

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 244 entries, 0 to 243
Data columns (total 7 columns):
 #   Column      Non-Null Count  Dtype   
---  ------      --------------  -----   
 0   total_bill  244 non-null    float64 
 1   tip         244 non-null    float64 
 2   sex         244 non-null    category
 3   smoker      244 non-null    category
 4   day         244 non-null    category
 5   time        244 non-null    category
 6   size        244 non-null    int64   
dtypes: category(4), float64(2), int64(1)
memory usage: 7.3 KB

인덱스 사용한 검색

tips.loc[0]             # 0번 인덱스 검색
tips.loc[[1, 3, 5]]     # 1, 3, 5 번 인덱스 검색
tips.loc[0:3]           # 0, 1, 2, 3 번 인텍스 검색(python 슬라이싱과 다름 주의)
tips[0:3]               # 0, 1, 2 번 인덱스 검색(Python 슬라이싱)
tips.loc[0:3,['sex','day']]     # 특정 열 추가

행번호를 사용한 검색

tips.iloc[0]
tips.iloc[-1]
tips.iloc[:, 1:3]

조건을 사용한 검색

# 전체 데이터 중 팁이 5 달러 이상
tips[tips.tip > 5]
# and 조건 - 남자 손님이면서 비흡연자
tips[(tips['sex'] == 'Male') & (tips['smoker'] == 'No')]
# 일요일이면 트루
[tips['day'].isin(['Sun'])]
# 팁을 1달러 지불한 고객
tips[tips['tip'].isin([1])]

특정 열 검색

# 데이터프레임에서 tips과 손님수 가지고 오기
tips.tip
tips['size']

dataframe에 열 추가

# smoker의 Category 형을 str 형으로 변환해 열 추가
tips['smoker_str'] = tips['smoker'].astype(str)
기존

total_bill     float64
tip            float64
sex           category
smoker        category
day           category
time          category
size             int64
dtype: object

추가 후

total_bill     float64
tip            float64
sex           category
smoker        category
day           category
time          category
size             int64
smoker_str      object
dtype: object

파생변수 만들기

# 금액과 팀의 합계인 총액 파생 변수 만들기
tips['total']=tips['total_bill']+tips['tip']
tips
	total_bill	tip	sex	smoker	day	time	size	total
0	16.99	1.01	Female	No	Sun	Dinner	2	18.00
1	10.34	1.66	Male	No	Sun	Dinner	3	12.00
2	21.01	3.50	Male	No	Sun	Dinner	3	24.51
3	23.68	3.31	Male	No	Sun	Dinner	2	26.99
4	24.59	3.61	Female	No	Sun	Dinner	4	28.20
...	...	...	...	...	...	...	...	...
239	29.03	5.92	Male	No	Sat	Dinner	3	34.95
240	27.18	2.00	Female	Yes	Sat	Dinner	2	29.18
241	22.67	2.00	Male	Yes	Sat	Dinner	2	24.67
242	17.82	1.75	Male	No	Sat	Dinner	2	19.57
243	18.78	3.00	Female	No	Thur	Dinner	2	21.78
244 rows × 8 columns

태그:

카테고리:

업데이트: