Pandas에서 중첩 데이터 프레임 만들기

Salman Mehmood 2023년6월21일
  1. Pandas 중첩 데이터 프레임
  2. Pandas에서 중첩 데이터 프레임 만들기
Pandas에서 중첩 데이터 프레임 만들기

이 기사에서는 Pandas 중첩 데이터 프레임을 읽는 방법에 대해 설명합니다. 이것은 또한 Python에서 Pandas 중첩 데이터 프레임을 읽을 때 문제를 해결하는 방법을 보여줍니다.

Pandas 중첩 데이터 프레임

Pandas DataFrame은 두 개의 차원과 해당 차원에 해당하는 레이블로 데이터를 저장하는 구조입니다. DataFrames는 데이터 사이언스, 기계 학습, 과학 컴퓨팅 등 많은 데이터 집약적인 분야에 널리 적용되었습니다.

DataFrames는 Excel 및 Calc와 같은 응용 프로그램에서 조작할 수 있는 SQL 테이블 및 스프레드시트와 비슷합니다.

DataFrame은 Python 및 NumPy 생태계의 필수 구성 요소이기 때문에 속도, 유용성 및 성능 면에서 테이블 및 스프레드시트보다 뛰어난 경우가 많습니다. 이것은 많은 응용 프로그램의 경우입니다.

많은 양의 데이터를 처리하다 보면 내부에 더 많은 인스턴스를 포함하는 Dataframe 인스턴스를 생성해야 하는 상황이 발생할 수 있습니다.

다음 코드를 고려하십시오.

import pandas as pd

data = [
    {"a": 1, "b": 2, "c": 3},
    {"a": 10, "b": 20, "c": 30},
    {"a": 40, "b": 50, "c": 60},
    {"a": 70, "b": 80, "c": 90},
]

data2 = [
    {"d": 1, "e": 2, "f": 3},
    {"d": 10, "e": 20, "f": 30},
    {"d": 40, "e": 50, "f": 60},
    {"d": 70, "e": 80, "f": 90},
]

data3 = [
    {"g": 1, "h": 2, "i": 3},
    {"g": 10, "h": 20, "i": 30},
    {"g": 40, "h": 50, "i": 60},
    {"g": 70, "h": 80, "i": 90},
]


df = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)

print(
    "Dataframe 1: \n"
    + str(df)
    + "\n\nDataframe 2:\n"
    + str(df2)
    + "\n\nDataframe 3:\n"
    + str(df3)
)

출력:

Dataframe 1: 
    a   b   c
0   1   2   3
1  10  20  30
2  40  50  60
3  70  80  90

Dataframe 2:
    d   e   f
0   1   2   3
1  10  20  30
2  40  50  60
3  70  80  90

Dataframe 3:
    g   h   i
0   1   2   3
1  10  20  30
2  40  50  60
3  70  80  90

위의 코드에서 세 가지 다른 Dataframe 인스턴스가 각각 df, df2df3 변수에 선언되고 저장되었습니다. 세 개의 서로 다른 Dataframe 인스턴스가 밀접하게 관련되어 있다고 가정하면 특히 인스턴스의 데이터가 큰 경우 개별적으로 액세스하는 것이 지루할 수 있습니다.

이 문제를 극복하기 위해 데이터를 한 곳에 모으는 것이 더 쉽게 액세스할 수 있는 합리적인 접근 방식이 될 수 있습니다. 중첩된 Dataframe은 관련된 모든 Dataframe 인스턴스를 새로운 단일 Dataframe 인스턴스에 수집할 수 있으므로 잠재적인 솔루션이 될 수 있습니다.

반면에 중첩된 Dataframe은 최선의 선택이 아닐 수 있으며 매우 특정한 시나리오 및 사용 사례에만 적합합니다.

Pandas에서 중첩 데이터 프레임 만들기

Dataframe에 일반 값을 할당할 수 있는 방법과 마찬가지로 Dataframe 인스턴스를 수신하고 여러 사용자 정의 Dataframe 인스턴스로 구성된 새 Dataframe을 생성할 수 있습니다. 즉, 중첩 Dataframe이라고 합니다. .

다음 코드를 고려하십시오.

import pandas as pd


data = [
    {"a": 1, "b": 2, "c": 3},
    {"a": 10, "b": 20, "c": 30},
    {"a": 40, "b": 50, "c": 60},
    {"a": 70, "b": 80, "c": 90},
]

data2 = [
    {"d": 1, "e": 2, "f": 3},
    {"d": 10, "e": 20, "f": 30},
    {"d": 40, "e": 50, "f": 60},
    {"d": 70, "e": 80, "f": 90},
]

data3 = [
    {"g": 1, "h": 2, "i": 3},
    {"g": 10, "h": 20, "i": 30},
    {"g": 40, "h": 50, "i": 60},
    {"g": 70, "h": 80, "i": 90},
]

df = pd.DataFrame(data)
df2 = pd.DataFrame(data2)
df3 = pd.DataFrame(data3)


df4 = pd.DataFrame({"idx": [1, 2, 3], "dfs": [df, df2, df3]})

print(df4)

이는 다음과 같은 결과를 제공합니다.

   idx                                                dfs
0    1      a   b   c
0   1   2   3
1  10  20  30
2  4...
1    2      d   e   f
0   1   2   3
1  10  20  30
2  4...
2    3      g   h   i
0   1   2   3
1  10  20  30
2  4...

위 출력에서 Dataframe 인스턴스를 인쇄하는 것만으로는 Dataframe 전체가 제대로 표시되지 않는다는 것을 알 수 있습니다. 출력을 좀 더 이해하기 쉽게 하려면 Dataframe 요소에 개별적으로 액세스해야 합니다. 이 경우 Dataframe 인스턴스입니다.

요소에 액세스하려면 다음 행을 고려하십시오.

print(
    "Dataframe 1: \n"
    + str(df4["dfs"].iloc[0])
    + "\n\nDataframe 2:\n"
    + str(df4["dfs"].iloc[1])
    + "\n\nDataframe 3:\n"
    + str(df4["dfs"].iloc[2])
)

결과는 다음과 같습니다.

Dataframe 1: 
    a   b   c
0   1   2   3
1  10  20  30
2  40  50  60
3  70  80  90

Dataframe 2:
    d   e   f
0   1   2   3
1  10  20  30
2  40  50  60
3  70  80  90

Dataframe 3:
    g   h   i
0   1   2   3
1  10  20  30
2  40  50  60
3  70  80  90

다른 인스턴스 내에 Dataframe 인스턴스를 중첩하려면 새 Dataframe 인스턴스를 생성하고 이전에 생성된 Dataframe 인스턴스를 새로 생성된 Dataframe에 할당해야 합니다.

새로 생성된 Dataframe 인스턴스에 Dataframe 인스턴스를 할당하는 것은 매우 간단하며 일반 데이터를 Dataframe 인스턴스에 할당할 때 따르는 방법과 전혀 다르지 않습니다.

우리의 경우 필수 Dataframe 인스턴스로 구성된 목록이 생성되었으며, 다음으로 구성된 Dataframe으로 작동하도록 특별히 생성된 새 Dataframe 인스턴스를 생성할 때 Dataframe 클래스의 생성자에 전달되었습니다. 여러 데이터 프레임.

모든 문제와 마찬가지로 이 문제에 대한 많은 잠재적 접근 방식이 있을 수 있습니다. 중첩된 Dataframe은 특정 시나리오 및 사용 사례에서 사용됩니다.

일반적으로 상황에 따라 데이터를 구조화해야 하는 방식과 데이터에 대해 어떤 유형의 작업을 수행해야 하는지 먼저 조사하는 것이 좋습니다. 이러한 조건에 따라 중첩된 Dataframes 사용이 실행 가능한 옵션인지 여부를 결정할 수 있습니다.

Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

관련 문장 - Pandas Dataframe