본문 바로가기
Python/Pandas

Pandas 행 단위 연산 - iterrows(), itertuples(), iloc, loc 함수

by 찐남 2022. 3. 9.

데이터 분석을 하기 위한

전처리 작업이나

혹은

데이터 조작 시

데이터를 행 단위로 읽어서

처리해야 하는 상황이

많은 데요.

 

이럴 때, 활용할 수 있는

다양한 방안들이 있는데요.

 

여기서는 2가지 방안에 대해서

살펴보겠습니다.


실습 데이터: 붓꽃 데이터

조건: 데이터를 행 단위로 읽어

PetalWidth(꽃잎폭)이 0.2보다 작거나 같으면 0,

0.2보다 크고 1보다 작거나 같으면 1,

1보다 크고 2보다 작거나 같으면 2,

2보다 크면 3이라는 값을 가지는

group이라는 변수 생성하기

 

실습 데이터

iris.csv
0.00MB

 

 

 

 


1. iloc, loc 함수 활용

 

해당 함수에 대한 자세한 설명은

아래 링크를 참고해 주세요.

 

 

 

[파이썬완전기초]데이터다루기Pandas기본

본 포스팅은 2021 NIPA AI 온라인 무료 교육의 AI 실무 기본 과정을 기반으로 작성하였습니다. 1. Pandas Pandas는 파이썬에서 제공하는 모듈(라이브러리)로 구조화된 데이터를 효과적으로 처리하고 저

zzinnam.tistory.com

 

import pandas as pd

## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")

## for문을 이용해서 irisData의 인덱스 기준으로 데이터 처리
for i in range(len(irisData)) :
    if irisData.loc[i,'PetalWidth'] <= 0.2 :
        irisData.loc[i,'group1'] = 0
    elif irisData.loc[i,'PetalWidth'] <= 1 :
        irisData.loc[i,'group1'] = 1
    elif irisData.loc[i,'PetalWidth'] <= 2 :
        irisData.loc[i,'group1'] = 2
    else : 
        irisData.loc[i,'group1'] = 3

print(irisData)

 

2. iterrows() 함수 활용

iterrows() 함수는 DataFrame 행을

(인덱스, 시리즈) 쌍으로 반복하는 함수

입니다.

 

기본 구조는

DataFrame.iterrows()

입니다.

 

지금은 간단한 예제이기 때문에

loc와 iloc를 사용할 때와

계산에 소요되는 시간이

차이가 없는 것처럼 보이는데요.

 

대용량 데이터를 처리할 때 보면

iterrows()가 빠릅니다.

 

import pandas as pd

## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")

# 빈 list 지정
group2 = []

for idx, var1 in irisData.iterrows():
    if var1['PetalWidth'] <= 0.2 :
        group2.append(0)
    elif var1['PetalWidth'] <= 1 :
        group2.append(1)
    elif var1['PetalWidth'] <= 2 :
        group2.append(2)
    else :
        group2.append(3)

irisData['group2'] = group2

print(irisData)

 

반환되는 숫자 형식이 다를 뿐, 

출력된 결과는 같은 것을 보실 수 있습니다.

 

 

 

 

3. itertuples() 함수 활용

itertuples() 함수는 첫 번째 필드가 인덱스가 되고,

다음 필드가 열 값이 되는 DataFrame의 각 행에 대해

명명된(named) 튜플을 반복하는 함수입니다.

 

기본 구조는

DataFrame.itertuples()

입니다.

 

지금은 간단한 예제이기 때문에

loc와 iloc, iterrows()를 사용할 때와

계산에 소요되는 시간이

차이가 없는 것처럼 보이는데요.

 

대용량 데이터를 처리할 때 보면

itertuples()를 사용할 때의

연산 속도가 가장 빠릅니다.

 

import pandas as pd

## iris data 가져오기
irisData = pd.read_csv("D:/Python_apply/iris.csv")

# 빈 list 지정
group3 = []

for var2 in irisData.itertuples():
    if var2.PetalWidth <= 0.2 :
        group3.append(0)
    elif var2.PetalWidth <= 1 :
        group3.append(1)
    elif var2.PetalWidth <= 2 :
        group3.append(2)
    else :
        group3.append(3)

irisData['group3'] = group3

print(irisData)

 

반환되는 숫자 형식이 다를 뿐, 

출력된 결과는 같은 것을 보실 수 있습니다.

반응형

댓글