안녕하세요~ 꽁냥이에요. 이번 포스팅에서는 판다스(Pandas)에서 데이터프레임을 순회하는 방법에 대해서 알아보겠습니다.
오늘 다루는 내용은 다음과 같습니다.
1. 행(row) 방향으로 순회하기
행 방향으로 순회하는 방법은 행 인덱스 이름(Index name)으로 순회하는 방법과 행 위치 번호로 순회하는 방법이 있습니다.
행 인덱스 이름(Index name)은 아래 데이터프레임에서 빨간 박스에 해당하는 인덱스 이름을 의미하며 행 위치 번호는 인덱스의 번째수를 나타내는 숫자이며 0부터 시작하여 1씩 증가합니다.
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씩 증가합니다.
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에 저장하고 이를 행 단위로 출력하고자 할 때 오늘 배운 내용이 도움이 되실 거예요.
이상 포스팅 마치겠습니다. 다음에도 좋은 내용으로 찾아올게요. 감사합니다. 안녕히 계세요.
'데이터 분석 > 데이터 전처리' 카테고리의 다른 글
[pandas] 판다스 고급 Tip! Groupby에 복잡한 집계(조건부 집계 등) 함수 적용하기 (397) | 2022.04.27 |
---|---|
[Pandas] 25. 데이터(칼럼, 열) 변환 하기 (feat. columns, dtype, map, apply) (423) | 2022.04.16 |
[Pandas] 23. 데이터 유일(유니크, unique)값과 개수 구하기 (399) | 2022.04.07 |
[Pandas] 22. Transform을 이용하여 그룹별 통계값으로 결측치 대체하기 (387) | 2022.04.03 |
[Numpy] 4. 통계량 구하기 (843) | 2021.10.29 |
댓글