AI기본과정/데이터분석 기초

데이터분석 기초 | .loc 사용법 | .iloc 사용법 | 문자형 데이터 인덱싱 | 문자형 인덱스 | 위치 기반 인덱싱 | set_index / reset_index

ANNASENA 2023. 6. 13. 08:00
728x90

 

 

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

728x90