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

Manav Narula 2023년1월30일
  1. to_dict()함수를 사용하여 Pandas DataFrame에서 사전으로
  2. Pandas DataFrame을 List 또는Series로 값이있는 사전으로
  3. Pandas DataFrame을 사전 목록으로
  4. Pandas 데이터 프레임을 행별 사전으로
  5. 하나의 열을 키(key)로 사용하여 사전에 데이터 프레임
  6. dict()zip()함수를 사용하여 사전에 Pandas DataFrame
Pandas 데이터 프레임을 사전으로 변환

이 튜토리얼에서는 인덱스 열 요소를 키로 사용하고 다른 열의 해당 요소를 값으로 사용하여 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']}
작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Pandas DataFrame