🐼 판다스/Pandas 함수

🐼 Pandas 05. loc / iloc 함수

nyamin9 2023. 1. 14. 00:36

모바일은 화면을 돌려 가로화면으로 보시는 게 읽으시기 편할 수 있습니다. 돌려서 보시는 걸 추천드릴게요!!

 

 


 

📝 목차

1. 행으로 접근

2. 행 / 열으로 접근

🐼 공부하다 보니 loc / iloc 함수가 생각보다 다양한 경우에 사용가능하다는 것을 알게되었습니다.


🐼  이번에 정리해두면 나중에 전처리를 할때 좀 더 수월하게 할 수 있을거 같아서 적어둘 생각입니다.

 

🐼  먼저 사용할 데이터프레임을 하나 만들어 봅시다.

 

import pandas as pd

df = pd.DataFrame({'국어':[90, 85, 88],
                   '수학':[92, 88, 96],
                   '과학':[85, 92, 90]},
                   index = ['A','B','C'])
                   
df
>>

        국어	수학	과학
A	90	92	85
B	85	88	92
C	88	96	90

 


1. 행에 접근

 

🐼  loc[ ]  : 인덱스의 이름을 인수로 받습니다.

df.loc['A']
>>

국어    90
수학    92
과학    85

Name: A, dtype: int64

 

🐼  iloc[ ]  : 인덱스의 순서를 인수로 받습니다(0,1,2...).

df.iloc[2]
>>

국어    88
수학    96
과학    90

Name: C, dtype: int64

 


2. 행 / 열에 접근


2.1. loc

 

🐼  loc( ) 함수를 사용하는 경우에는 꼭 행 / 열의 이름을 인수로 넣어야 합니다!!

 

🐼  A : B 형태로 슬라이싱 할때 A,B가 character면 B도 포함됩니다.

df.loc[:, '수학':'과학']
>>

        수학	과학
A	92	85
B	88	92
C	96	90

 

df.loc['A':'B', '국어':'수학']
>>

        국어	수학
A	90	92
B	85	88

 

이렇게 원하는 부분들을 슬라이싱해서 가져올수 있고,

 

df.loc[['A','C'], ['국어','과학']]
>>

        국어	과학
A	90	85
C	88	90

원하는 부분의 인덱스 / 열 이름을 입력하여 가져올수도 있습니다.

 

 

🐼  df.loc[ df [column] ~조건, 열 ] 

df.loc[df['수학'] >= 90, ['수학','과학']]
>>

	수학	과학
A	92	85
C	96	90

 

df.loc[df['수학'] >= 90, '국어':'수학']
>>

        국어	수학
A	90	92
C	88	96

행 부분에 조건을 입력해서 원하는 부분을 필터링할 수도 있습니다.

 


2.2. iloc

 

🐼  iloc( ) 함수를 사용하는 경우에는 꼭 행 / 열의 순서를 인수로 넣어야 합니다!!

 

🐼  A:B 형태로 슬라이싱 할때 A,B가 numeric이면 B는 제외됩니다.

df.iloc[:, [1,2]]
>>

        수학	과학
A	92	85
B	88	92
C	96	90

 

df.iloc[:2, :2]
>>

        국어	수학
A	90	92
B	85	88

이렇게 원하는 부분들을 슬라이싱해서 가져올수 있고,

 

df.iloc[[0,2], [0,2]]
>>

        국어	과학
A	90	85
C	88	90

원하는 부분의 인덱스/ 열 순서를 입력하여 가져올 수도 있습니다.

 


📝 loc / iloc 함수에 각각 어떤 인수가 들어가야 하는지, 슬라이싱은 어떻게 되는지 정확히 아는 것이 중요해 보입니다.

 

📝 전처리 과정에서 행에 접근하는 경우는 그렇게 많지 않기 때문에 loc 함수를 사용한 적은 별로 없는 것 같습니다. 하지만 위의 예시처럼 행/열에 동시에 접근이 가능하고 조건을 통해서 필터링도 할 수 있기 때문에 제대로 사용하면 편해질 거 같습니다!!

 

📝 여러 데이터 분석 코드들을 살펴본 결과, 생각보다 loc 함수를 많이 사용했습니다. 저도 더 자연스럽고 효율적인 분석을 위해 함수 사용을 익숙하게 해봐야겠습니다🙂.