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