1. 라이브러리 설치 후 데이터셋 불러오기
▶ 라이브러리 설치
import pandas as pd
import seaborn as sns
▶ 데이터셋 불러오기
: 데이터셋 불러온 뒤 transpose()로 열과 인덱스 전치하여 문자형 인덱스 만들기
df = sns.load_dataset('penguins')
df = df[:11].transpose()
df
2. .loc : 문자형 데이터 인덱싱에 사용
2-1) 특정 문자형 인덱스에 접근
▶ 1개의 문자형 인덱스
df.loc['bill_length_mm']
▶ 2개 이상의 문자형 인덱스
* 2개
df.loc[['bill_length_mm', 'sex']]
* 3개
df.loc[['bill_length_mm', 'species','sex']]
2-2) 인덱스와 열 위치로 데이터 찾기
▶ 인덱싱
df.loc['bill_length_mm', 5]
df.loc[['island', 'bill_length_mm', 'sex'], 7]
▶ 슬라이싱
df.loc['island' : 'bill_depth_mm', 7]
: island부터 bill_depth_mm까지의 문자형 인덱스 출력 + 7번째 열의 데이터 찾기
2-4) 열 기준으로 인덱싱하기
▶ 다시 인덱스와 열 위치 바꿔놓기
: 열 기준으로 인덱싱 해봐야 하니까
df = df.T
df
▶ 특정 열 중 조건에 맞는 데이터만 출력하기
df.loc[df['bill_length_mm'] > 40]
▶ 특정 열 중 조건에 맞는 데이터 + 특정 열
df.loc[df['bill_length_mm'] > 40, ['sex']]
▶ 특정 값에 해당하는 데이터만 인덱싱
* 조건1 : 열 flipper_length_mm == 181
df.loc[df['flipper_length_mm'] == 181]
* 조건2 : 열 sex == 'Male'
df.loc[df['sex'] == 'Male']
2-5) .loc 함수로 인덱싱한 데이터에 새로운 값 저장하기
▶ [ 인덱싱, 열 이름 ] = 바꿀 값 지정
df.loc[[1, 3], ['bill_length_mm']] = 50
df.head()
▶ [ 인덱스 전체(:), 열 이름 ] = 바꿀 값 지정
df.loc[:, 'bill_length_mm'] = 10
df.head()
▶ [ 열 이름 데이터 + 조건 ] = 바꿀 값 지정
df.loc[df['flipper_length_mm'] > 190] = 0
df.head()
3. .iloc : 위치 기반 인덱싱에 사용
3-1) .iloc로 인덱싱
▶ 데이터셋 다시 불러오기
df = sns.load_dataset('penguins')
df.head()
▶ 다양한 인덱싱 방법
* 인덱스0의 데이터 출력
df.iloc[0]
* 인덱스0의 데이터를 데이터프레임 형식으로 출력
df.iloc[[0]]
* 인덱스0과 인덱스2의 데이터 데이터프레임 형식으로 출력
df.iloc[[0, 2]]
* 인덱스0의 1열 값 출력
df.iloc[0, 1]
* 인덱스0과 인덱스2의 1열과 3열의 값 출력
df.iloc[[0, 2], [1, 3]]
▶ 슬라이싱 사용
* 슬라이싱으로 데이터 출력
: 슬라이싱은 [시작 값, 끝 값+1]이므로 인덱스 0,1,2의 데이터가 출력됨
df.iloc[:3]
* 인덱스1:3의 0:3열의 데이터 출력
: 슬라이싱은 [시작 값, 끝 값+1]이므로 각각 인덱스1,2와 열 0,1,2의 데이터가 출력됨
df.iloc[1:3, 0:3]
3-2) set_index
: 기존의 열 값을 인덱스 값으로 변경
df.set_index('species', inplace = True)
df
3-3) reset_index
: 인덱스 값에서 다시 열 값으로 변경
df.reset_index(inplace = True)
df
댓글