Appia의 IT세상

파이썬[Python] Pandas, DataFrame의 인덱스(label)를 이용한 열, 행 선택 방법(loc) 본문

Python/Python Pandas

파이썬[Python] Pandas, DataFrame의 인덱스(label)를 이용한 열, 행 선택 방법(loc)

Appia 2020. 4. 3. 07:42
반응형

실제 Pandas를 사용할 경우 많은 데이터 속에서 원하는 데이터를 선별하는 것이 매우 중요하다고 생각합니다. 그래서 이번에는 각 인덱스(Label)를 이용하여 각 값들을 선택하는 방법에 대해서 살펴보고자 합니다. 

 

DataFrame의 경우 이와 같이 특정 행, 열을 선택할 경우에 다음과 같은 함수들을 사용할 수 있게 지원하고 있습니다. 그중에서 인덱스(lable)를 이용하여 각 데이터를 선택하는 함수는 다음과 같습니다. 

 

loc() - 인덱스 이름(label) 기반으로 선택

 

그럼 예제를 통해서 각 기능 및 사용 방법에 대해서 살펴보도록 하겠습니다. 그럼 일단, 특정 열(row)만 출력하는 방법을 살펴보겠습니다. 

 

example) 특정 열(row)만 출력

import pandas as pd
 
import numpy as np
 
#numpy를 이용한 matrix형 난수 생성 
 
df = pd.DataFrame(np.random.randn(88),
 
index = ['a','b','c','d','e','f','g','h'], columns = ['A''B''C''D','E','F','G','H'])
 
print("특정 열만 출력하기")
 
print(df.loc['a'])
cs

result)

특정 열만 출력하기
 
A   -0.443708
 
B   -0.726663
 
C   -0.415140
 
D   -1.836569
 
E    0.702175
 
F    0.093123
 
G   -0.899071
 
H    1.359228
 
Name: a, dtype: float64
cs

 

이와 같이 loc['a']를 이용하여 a인덱스에 포함된 모든 값들이 표현이 되었습니다. 물론, column들이 열단위로 표시가 되었습니다.  특정 열을 출력하는 경우는 매우 간단합니다. 하지만, 특정 행(column)을 출력하는 경우에는 조금 다를 수 있습니다. 그럼 다음 예시를 살펴보겠습니다. 

 

example) 특정 행(column)만 출력하기 

import pandas as pd
 
import numpy as np
 
#numpy를 이용한 matrix형 난수 생성 
 
df = pd.DataFrame(np.random.randn(88),
 
index = ['a','b','c','d','e','f','g','h'], columns = ['A''B''C''D','E','F','G','H'])
 
print("특정 행만 출력하기")
 
print (df.loc[:,'A'])
cs

 result) 

특정 행만 출력하기
 
a    0.656538
 
b    1.161438
 
c    0.014831
 
d   -0.114938
 
e   -3.465973
 
f   -1.064604
 
g   -1.411369
 
h    0.295056
 
Name: A, dtype: float64
cs

이와 같이 loc[]를 이용할 경우에는 행의 경우 반드시, [열,행] 구조로 표현해줘야만 출력이 가능합니다. 그럼 아마도 조금 눈치 있으신 분들은 눈치 챘을 수 있지만, 특정 행의 범위를 출력할수도 있습니다. 그럼 행(column)과 열(row)을 부분적으로 출력 해보도록 하겠습니다. 

 

example) 부분 출력하기 

import pandas as pd
 
import numpy as np
 
#numpy를 이용한 matrix형 난수 생성 
 
df = pd.DataFrame(np.random.randn(88),
 
index = ['a','b','c','d','e','f','g','h'], columns = ['A''B''C''D','E','F','G','H'])
 
print("부분 출력")
 
print (df.loc['a':'e','A':'C'])
 
print (df.loc[['a','h'],['A','C']])
 
cs

result) 

부분 출력
 
          A         B         C
          
a  0.141784 -1.017057  0.274731
 
b  0.636564 -0.393727 -0.386562
 
c  0.038367  0.678368  0.448248
 
-0.207474 -0.079184 -0.302018
 
e  1.138585 -0.012023 -0.014978
 
          A         C
          
a  0.141784  0.274731
 
-0.020121  0.851145
cs

 

이와 같이 부분 출력할 경우 조금 주의 하실 부분이 있습니다. 만약에 특정 범위를 선택하실경우에는 loc[ ]안에 입력 하시길 바랍니다. 이와 같이 loc['a':'e','A':'C'] 형태로 행과 열의범위를 정할 수 있습니다. 이 부분만 주의 하신다면 크게 어려움 없이 원하는 데이터를 선택할 수 있습니다. 

 

이번 포스팅에서는 인덱스(Label)만 가지고 데이터를 선별하거나, 추출하는 방법에 대해서 확인하였습니다. 그럼 다음 포스팅에서는 integer 기반으로 각 범위를 지정하여 데이터를 추출하는 방법에 대해서도 살펴보겠습니다. 

반응형
Comments