HOWTO · Python

Python 목록을 Pandas DataFrame으로 변환하는 방법

이 튜토리얼에서는 Python에서 리스트를 Pandas DataFrame으로 변환하는 방법을 소개합니다.

이 페이지의 내용

Python 목록은 pd.DataFrame(my_list)로 Pandas DataFrame으로 변환할 수 있습니다. 1차원 목록은 기본 정수 행 인덱스가 붙은 한 개의 열이 됩니다. columns 인수로 열 이름을 지정하고, index 인수로 행 레이블을 지정하거나, 목록 안에 목록을 넣어 여러 열을 만들 수 있습니다.

Python에서 목록을 Pandas DataFrame으로 변환

DataFrame은 행과 열에 레이블이 붙는 2차원 표입니다. Pandas를 가져온 다음 목록을 DataFrame 생성자에 전달하고 결과를 변수에 저장합니다. 스크립트에서는 print(df)를 호출해 표를 출력하고, 노트북이나 대화형 세션에서는 df를 평가하면 표를 표시할 수 있습니다.

아래 예제에서는 각 이름이 0이라는 열 하나에 들어갑니다. Pandas는 기본적으로 0부터 시작하는 행 레이블을 지정합니다. pd.DataFrame()은 표를 만드는 생성자이며 목록에서 호출하는 메서드가 아닙니다. 따라서 데이터를 첫 번째 인수로 전달하고, columns나 index 같은 키워드 인수로 표의 구성을 지정합니다.

import pandas as pd

my_list = ["Tom", "Mark", "Tony"]
df = pd.DataFrame(my_list)
print(df)

Python에서 Pandas DataFrame의 열에 목록 저장

DataFrame을 만들 때 columns 인수에 열 레이블을 담은 한 항목짜리 목록을 전달합니다. 이 레이블은 열 이름을 지정하며 행 인덱스에는 영향을 주지 않습니다. 열 레이블의 개수는 입력 데이터의 열 개수와 일치해야 합니다.

이 예제에서는 값의 순서를 그대로 유지하면서 기본 열 레이블 0을 Names로 바꿉니다.

import pandas as pd

my_list = ["Tom", "Mark", "Tony"]
df = pd.DataFrame(my_list, columns=["Names"])
print(df)

Python에서 인덱스를 사용해 목록을 DataFrame으로 변환

index 인수로 행 레이블을 지정하고 columns 인수로 열 레이블을 지정합니다. 각 목록 값에 대응하는 행 레이블을 하나씩 제공해야 합니다. 지정한 레이블은 기본 정수 인덱스를 대체하며 별도의 데이터 열이 되지는 않습니다. 예를 들어 첫 번째 값에는 i., 두 번째 값에는 ii., 세 번째 값에는 iii.를 붙일 수 있습니다. 실제 데이터에서는 날짜나 제품 식별자처럼 레코드를 알아보기 쉬운 레이블을 사용하세요.

import pandas as pd

my_list = ["Tom", "Mark", "Tony"]
df = pd.DataFrame(
    my_list,
    index=["i.", "ii.", "iii."],
    columns=["Names"],
)
print(df)

Python에서 zip()으로 두 목록을 하나의 DataFrame에 결합

Python의 zip()은 입력 가능한 여러 자료형의 값을 위치에 따라 짝짓습니다. 짝지어진 값을 pd.DataFrame()에 전달하고, 입력 목록마다 열 레이블을 하나씩 지정합니다. 아래 예제는 이름 목록과 키 목록을 짝지으므로 각 이름과 키가 같은 행에 놓입니다. 두 개보다 많은 목록도 모두 zip()에 전달한 뒤 그에 맞는 열 레이블을 지정하면 함께 묶을 수 있습니다.

zip()은 가장 짧은 입력이 끝나는 즉시 멈춥니다. 원본 목록마다 모든 행에 값 하나씩 제공되어야 한다면 DataFrame을 만들기 전에 목록 길이가 같은지 확인하세요.

import pandas as pd

name_list = ["Tom", "Mark", "Tony"]
height_list = [150, 151, 152]
rows = zip(name_list, height_list)
df = pd.DataFrame(rows, columns=["Name", "Height"])
print(df)

Python에서 다차원 목록을 Pandas DataFrame으로 변환

표 형태의 데이터라면 각 행을 내부 목록으로 표현하고 바깥 목록을 pd.DataFrame()에 전달합니다. columns에는 각 행의 값에 대응하는 레이블을 지정합니다. 이 예제의 각 내부 목록에는 이름 다음에 나이가 들어 있으므로 표는 두 열과 세 행으로 구성됩니다.

이 구조는 모든 행의 필드가 같은 순서로 있을 때 적합합니다. 행의 값과 지정한 열 레이블이 서로 맞는지 확인하세요. 레코드마다 필드가 다르다면 먼저 데이터를 일관된 표 형태로 정리해야 합니다.

import pandas as pd

info = [["Tom", 18], ["Mark", 25], ["Tony", 68]]
df = pd.DataFrame(info, columns=["Name", "Age"])
print(df)