HOWTO · Pandas

Pandas 데이터 프레임을 사전으로 변환

이 튜토리얼은 Pandas DataFrame을 사전으로 변환하는 방법을 보여줍니다.

이 튜토리얼에서는 인덱스 열 요소를 키로 사용하고 다른 열의 해당 요소를 값으로 사용하여 Pandas DataFrame을 사전으로 변환하는 방법을 소개합니다. 이 기사에서는 다음 DataFrame을 사용합니다.

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

print(df)

출력:

   Name  Age Course
0   Jay   16    BBA
1  Jack   19  BTech
2  Mark   18    BSc

to_dict()함수를 사용하여 Pandas DataFrame에서 사전으로

Pandas to_dict()함수는 DataFrame을 사전으로 변환합니다. 매개 변수는 사전의 형식과 키-값 쌍이 연관되는 방식을 결정합니다. 다음은to_dict()를 사용하여 DataFrame을 Dictionary로 변환하는 기본적인 예입니다.

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

d1 = df.to_dict()
print(d1)

출력:

{'Name': {0: 'Jay', 1: 'Jack', 2: 'Mark'}, 'Age': {0: 16, 1: 19, 2: 18}, 'Course': {0: 'BBA', 1: 'BTech', 2: 'BSc'}}

출력에서 볼 수 있듯이 열 이름은 키로 변환되고 각 레코드는 값으로 변환되고 인덱스는 키로 사용됩니다.

Pandas DataFrame을 List 또는Series로 값이있는 사전으로

매개 변수를list,records,series,index,split,dictto_dict()함수에 전달하여 최종 사전의 형식을 변경할 수 있습니다. 예를 들어listseries를 매개 변수로 전달하면 열 이름이 키로 사용되지만 값 쌍은 각각 목록과 일련의 행으로 변환됩니다. 다음 예제는이를 보여줍니다.

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

d_list = df.to_dict("list")
print(d_list)

d_series = df.to_dict("series")
print(d_series)

출력:

{'Name': ['Jay', 'Jack', 'Mark'], 'Age': [16, 19, 18], 'Course': ['BBA', 'BTech', 'BSc']}

{'Name': 0     Jay
1    Jack
2    Mark
Name: Name, dtype: object, 'Age': 0    16
1    19
2    18
Name: Age, dtype: int64, 'Course': 0      BBA
1    BTech
2      BSc
Name: Course, dtype: object}

Pandas DataFrame을 사전 목록으로

또한 각 행을 별도의 사전으로 사용하여 ‘레코드’를 함수에 전달할 수도 있습니다. 최종 결과는 각 행이 사전으로 포함 된 목록입니다. 예를 들면

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

d_records = df.to_dict("records")
print(d_records)

출력:

[{'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}]

Pandas 데이터 프레임을 행별 사전으로

그러나 많은 경우 열 이름을 사전의 키로 원하지 않을 수 있습니다. 이러한 상황에서는 index를 전달하여 DataFrame 색인을 키로 만들 수 있습니다. 다음 코드 스 니펫이이를 보여줍니다.

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

d_index = df.to_dict("index")
print(d_index)

출력:

{0: {'Name': 'Jay', 'Age': 16, 'Course': 'BBA'}, 1: {'Name': 'Jack', 'Age': 19, 'Course': 'BTech'}, 2: {'Name': 'Mark', 'Age': 18, 'Course': 'BSc'}}

하나의 열을 키(key)로 사용하여 사전에 데이터 프레임

그러나 한 열의 요소를 키로 사용하고 다른 열의 요소를 값으로 사용하려면 어떻게해야할까요? 필요한 열을 DataFrame의 인덱스로 만들고.T()함수를 사용하여 전치하면 가능합니다.

예:

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

d_names = df.set_index("Name").T.to_dict("list")
print(d_names)

출력:

{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}

dict()zip()함수를 사용하여 사전에 Pandas DataFrame

Python dict()함수는 Pandas DataFrame을 사전으로 변환 할 수도 있습니다. 또한 병렬 반복기를 생성하기 위해 개별 열이있는zip()함수를 인수로 사용해야합니다. 그런 다음zip()함수는 각 반복에서 한 행의 모든 값을 산출합니다.

import pandas as pd

df = pd.DataFrame(
    [["Jay", 16, "BBA"], ["Jack", 19, "BTech"], ["Mark", 18, "BSc"]],
    columns=["Name", "Age", "Course"],
)

d = dict([(i, [a, b]) for i, a, b in zip(df["Name"], df["Age"], df["Course"])])
print(d)

출력:

{'Jay': [16, 'BBA'], 'Jack': [19, 'BTech'], 'Mark': [18, 'BSc']}