본문 바로가기
etc

[Pandas] - DataFrame에서 데이터 Select 하기(loc[], iloc[])

by saltyzun 2020. 10. 26.

Pandas의 2차원 데이터 객체인 DataFrame에서 원하는 데이터를 Select 하는 법을 알아보자.

 

데이터프레임 생성하기

먼저 상품별 가격, 판매량, 재고 정보가 담긴 DataFrame을 만든다.

import numpy as np
import pandas as pd

data = {'가격':[1000,2100,3000,700],
       '판매량':[20,40,35,60],
       '재고':[100,50,200,70]}

df = pd.DataFrame(data, index=['컵라면','커피','도시락','사탕'])

상품별 가격, 판매량, 재고 정보를 담은 데이터프레임

 


원하는 Column 그룹 데이터 조회하기

df["column명"] 을 통해 원하는 Column(열) 정보를 조회할 수 있다.

 

예를들어, '가격' column 정보를 얻고자 하는 경우 아래와 같이 쓸 수 있으며, Series 객체가 리턴된다.

df['가격']

데이터프레임의 '가격' 정보

또한 두 개 이상 복수의 column을 조회하고자 할 때는 List 형태로 조회 가능하며, Data Frame 객체가 리턴된다.

df[['가격','판매량']]

데이터프레임의 '가격', '판매량' 정보


원하는 Row 그룹 데이터 조회하기

* Pandas 에서는 일반적인 2D Matrix 의 row 를 index라 칭함.

 

앞서 살펴본 예시와 달리 특정 row의 값을 조회하고 싶은 경우도 있을 것이다.

 

예를 들면 컵라면과 도시락의 상품정보만을 얻고자 할 때가 그렇다.

 

이 때, df.loc[defined index] 과 df.iloc[index] 를 이용하여 원하는 row 값을 얻을 수 있다.

 

1. loc[]

loc[]은 정의된 index 값을 이용해서 원하는 row 그룹의 데이터를 조회하는 방법이다.

하나의 row 혹은 복수개 row를 모두 조회할 수 있다.

df.loc['사탕']
df.loc[['컵라면', '도시락']]
df.loc['커피':] # 인덱스 slicing

loc[]을 이용하여 row 데이터 조회하기

2. iloc[]

iloc[]은 데이터프레임에 기본적으로 부여된 숫자 index 값을 이용해서 원하는 row 그룹의 데이터를 조회하는 방법이다.

loc[]과 마찬가지로 하나 혹은 복수개 row를 모두 조회할 수 있다.

df.iloc[0]
df.iloc[[0,2]]
df.iloc[0:3] # 인덱스 slicing

iloc[] 이용하여 row 데이터 조회하기

3. loc[]과 iloc[] 으로 column 그룹까지 조회할 수 있을까?

가능하다. loc[index, colum] , iloc[index, column] 형태로 ','를 통해 인자를 구분하여 전달하면 된다.

df.loc['커피':,['가격','판매량']] # '커피'부터 끝까지 row group의 '가격', '판매량' 정보
df.iloc[0:,1:3] # index number 0 부터 끝까지 row group의 column 1 ~ 2 정보

loc[]과 iloc[] 이용하여 row, column 데이터 조회하기


마무리

지금까지 Data Frame의 가장 기본적인 데이터 조회 방법에 대해 알아보았다. Data Frame은 기본적인 숫자 인덱스를 지원하기 때문에 주어진 데이터가 별도의 인덱스를 사용할 때는 숫자형이 아닌 문자형 인덱스를 사용하는 것이 편리하다.  

반응형

댓글