Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 데이터프레임 행을 튜플 리스트 형태의 OrderedDict로 출력하는 방법

데이터 분석 작업을 하다 보면 pandas 데이터프레임의 각 행을 OrderedDict 형태로 변환해야 하는 경우가 종종 있습니다. 이 글에서는 데이터프레임의 행들을 튜플 리스트가 포함된 OrderedDict로 변환하여 출력하는 방법을 단계별로 알아보겠습니다.

예를 들어, 다음과 같은 데이터프레임이 있고 이를 OrderedDict로 변환하면 아래와 같은 결과를 얻을 수 있습니다.

OrderedDict([('Index', 0), ('Name', 'Raj'), ('Age', 13), ('City', 'Chennai'), ('Mark', 80)])
OrderedDict([('Index', 1), ('Name', 'Ravi'), ('Age', 12), ('City', 'Delhi'), ('Mark', 90)])
OrderedDict([('Index', 2), ('Name', 'Ram'), ('Age', 13), ('City', 'Chennai'), ('Mark', 95)])

해결 방법

이 문제를 해결하기 위해 다음 단계를 순서대로 따라갑니다.

  • 먼저 데이터프레임을 정의합니다.

  • for 반복문과 함께 df.itertuples() 함수를 사용하여 모든 행에 접근합니다. 이때 name='stud' 옵션을 지정하여 각 행에 이름을 부여할 수 있습니다.

for row in df.itertuples(name='stud')
  • row._asdict() 함수를 사용하여 각 행을 튜플 리스트가 포함된 OrderedDict로 변환하고, 그 결과를 dict_row 변수에 저장한 후 값을 출력합니다.

dict_row = row._asdict()
print(dict_row)

예제 코드

아래 전체 코드를 통해 더 자세히 이해해 보겠습니다.

import pandas as pd
Students = [('Raj', 13, 'Chennai', 80) ,
            ('Ravi', 12, 'Delhi' , 90) ,
            ('Ram', 13, 'Chennai', 95)]
df = pd.DataFrame(Students, columns=['Name', 'Age', 'City', 'Mark'])
print("DataFrame is:\n",df)
for row in df.itertuples(name='stud'):
    dict_row = row._asdict()
    print(dict_row)

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

DataFrame is:
 Name  Age  City    Mark
0 Raj  13   Chennai  80
1 Ravi 12   Delhi    90
2 Ram  13   Chennai  95
OrderedDict([('Index', 0), ('Name', 'Raj'), ('Age', 13), ('City', 'Chennai'), ('Mark', 80)])
OrderedDict([('Index', 1), ('Name', 'Ravi'), ('Age', 12), ('City', 'Delhi'), ('Mark', 90)])
OrderedDict([('Index', 2), ('Name', 'Ram'), ('Age', 13), ('City', 'Chennai'), ('Mark', 95)])

핵심 포인트 정리

  • itertuples(): 데이터프레임의 각 행을 네임드튜플(namedtuple) 형태로 순회하는 pandas 내장 함수입니다.

  • _asdict(): namedtuple 객체를 OrderedDict로 변환하는 메서드로, 열 이름과 값이 튜플 쌍으로 저장됩니다.

  • Index 항목: 변환 결과에는 데이터프레임의 인덱스 값이 자동으로 'Index' 키와 함께 포함됩니다.

이 방법은 데이터프레임의 행 데이터를 딕셔너리 기반 구조로 직렬화하거나, JSON 변환 등 후속 처리를 수행할 때 매우 유용하게 활용할 수 있습니다.