본문 바로가기
데이터 분석/데이터 전처리

[Pandas] 24. 데이터프레임(Dataframe) 순회(loop)하기 - 행 방향 순회, 열 방향 순회

by 부자 꽁냥이 2022. 4. 15.

안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 판다스(Pandas)에서 데이터프레임을 순회하는 방법에 대해서 알아보겠습니다.

 

오늘 다루는 내용은 다음과 같습니다.

 

1. 행(row) 방향으로 순회하기

2. 열(column) 방향으로 순회하기


   1. 행(row) 방향으로 순회하기

행 방향으로 순회하는 방법은 행 인덱스 이름(Index name)으로 순회하는 방법과 행 위치 번호로 순회하는 방법이 있습니다.

 

행 인덱스 이름(Index name)은 아래 데이터프레임에서 빨간 박스에 해당하는 인덱스 이름을 의미하며 행 위치 번호는 인덱스의 번째수를 나타내는 숫자이며 0부터 시작하여 1씩 증가합니다.

행방향 데이터프레임(DataFrame) 순회

1) 행 인덱스 이름(Index name)으로 순회

먼저 데이터프레임(DataFrame)을 하나 만들어 줍니다. 이번 포스팅에서 계속 사용할 데이터프레임이에요~

 

import pandas as pd

df_dict = {
    '주소' : ['서울 특별시', '서울 특별시', '경기도', '제주도', '경상도'],
    '나이' : [20, 21, 27, 27, 35], 
    '취미' : ['게임', '영화', '독서', '독서', '음악 감상']
}

df = pd.DataFrame(df_dict, index=['지수', '다혜', '유니', '지선', '효진'])
df.index.name = '이름'

 

이제 데이터프레임을 순회해볼게요. 행 인덱스 이름(Index name)으로 순회하기 위해서 DataFrame의 iterrows를 이용합니다. "for 문"에서는 인덱스 이름(idx)과 행 정보를 담고 있는 Series 객체를 가져오게 됩니다(row). 이때 각괄호에 칼럼 이름을 넣어주면 해당 행과 주어진 칼럼이 갖고 있는 값에 접근할 수 있습니다.

 

# 행을 index로 순회하기
for idx, row in df.iterrows():
    print('이름 : {}, 주소 : {}, 나이 : {}, 취미 : {}'.\
          format(idx, row['주소'], row['나이'], row['취미']))

 

2) 행 위치 번호로 순회

다음은 행 위치 번호로 순회한 것입니다. 여기서는 몇 번째 행인지 알기 위해 행 번호를 출력했습니다. 이때 행 인덱스 이름은 df.index, 행에 대한 정보는 df.iloc를 이용하여 접근할 수 있습니다.

 

# 행을 행 위치로 순회하기
for i in range(0, df.shape[0]):
    row = df.iloc[i]
    idx = df.index[i]
    print(f'행 위치 : {i} 번째')
    print('이름 : {}, 주소 : {}, 나이 : {}, 취미 : {}'.\
          format(idx, row['주소'], row['나이'], row['취미']))

 


   2. 열(column) 방향으로 순회하기

열 방향으로 순회하는 방법 또한 2가지가 있는데 하나는 열 이름(column name)으로 순회하는 방법과 열 위치 번호로 순회하는 방법이 있습니다.

 

열 이름(column name)은 아래 데이터프레임에서 빨간 박스에 해당하는 것이며 열 위치 번호는 열(칼럼, column)의 번째수를 나타내는 숫자이며 0부터 시작하여 1씩 증가합니다.

열방향 데이터프레임(DataFrame) 순회

1) 열 이름(column name)으로 순회

df.columns에 데이터프레임 열 이름이 배열 형태로 존재하므로 이를 이용하면 데이터프레임을 열 방향으로 쉽게 순회할 수 있습니다.

 

이때 칼럼의 데이터 타입에 따라서 다르게 처리해주는데 'object'인 경우 최빈값 아닌 경우에는 평균값을 출력하도록 했습니다.

 

# 열이름으로 순회하기
for col in df.columns:
    data_type = str(df[col].dtype)
    if data_type == 'object':
        print('칼럼 : {}, 통계량 : {}'.format(col, df[col].mode().values[0]))
    else:
        print('칼럼 : {}, 통계량 : {}'.format(col, df[col].mean()))

 

2) 열 위치 번호로 순회

df.shape를 사용하여 열 개수를 파악하고 이를 이용하여 열 위치 번호로 DataFrame을 순회합니다.

 

# 열 위치번호로 순회하기
for i in range(0, df.shape[1]):
    col = df.columns[i]
    data_type = str(df[col].dtype)
    print('{} 번째 열'.format(i))
    if data_type == 'object':
        print('칼럼 : {}, 통계량 : {}'.format(col, df.iloc[:, i].mode().values[0]))
    else:
        print('칼럼 : {}, 통계량 : {}'.format(col, df.iloc[:, i].mean()))

 


이번 포스팅에서는 데이터프레임을 열 방향, 또는 행 방향으로 순회하는 방법을 알아보았습니다. 데이터 분석 결과를 DataFrame에 저장하고 이를 행 단위로 출력하고자 할 때 오늘 배운 내용이 도움이 되실 거예요.

 

이상 포스팅 마치겠습니다. 다음에도 좋은 내용으로 찾아올게요. 감사합니다. 안녕히 계세요.


 

댓글


맨 위로