Erstellen Sie verschachtelte Datenrahmen in Pandas

Salman Mehmood 21 Juni 2023
  1. Pandas verschachtelte Datenrahmen
  2. Erstellen Sie verschachtelte Datenrahmen in Pandas
Erstellen Sie verschachtelte Datenrahmen in Pandas

In diesem Artikel wird erläutert, wie ein verschachtelter Pandas-Datenrahmen gelesen wird. Dies zeigt auch, wie die Probleme behoben werden können, wenn wir Pandas verschachtelten Datenrahmen in Python lesen.

Pandas verschachtelte Datenrahmen

Pandas DataFrame ist eine Struktur, die Daten mit zwei Dimensionen und den diesen Dimensionen entsprechenden Beschriftungen speichert. DataFrames wurden in vielen datenintensiven Bereichen eingesetzt, darunter Datenwissenschaft, maschinelles Lernen, wissenschaftliches Rechnen und viele andere.

DataFrames sind vergleichbar mit SQL-Tabellen und Tabellenkalkulationen, die in Anwendungen wie Excel und Calc bearbeitet werden können.

Da sie ein wesentlicher Bestandteil der Python- und NumPy-Ökosysteme sind, sind DataFrames häufig Tabellen und Tabellenkalkulationen in Bezug auf Geschwindigkeit, Benutzerfreundlichkeit und Leistung überlegen. Dies ist bei vielen Anwendungen der Fall.

Beim Umgang mit großen Datenmengen kann es vorkommen, dass eine Dataframe-Instanz erstellt werden muss, die weitere Instanzen enthält.

Betrachten Sie den folgenden Code:

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)
)

Ausgang:

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

Im obigen Code wurden drei verschiedene Dataframe-Instanzen deklariert und jeweils in den Variablen df, df2 und df3 gespeichert. Unter der Annahme, dass die drei verschiedenen Dataframe-Instanzen eng miteinander verwandt sind, kann es mühsam werden, sie separat aufzurufen, insbesondere in Fällen, in denen die Daten in den Instanzen groß sind.

Um dieses Problem zu lösen, kann das Sammeln der Daten an einem einzigen Ort ein sinnvoller Ansatz für einen einfacheren Zugriff sein. Ein verschachtelter Dataframe kann eine mögliche Lösung sein, da alle zusammengehörigen Dataframe-Instanzen in einer neuen, einzigen Dataframe-Instanz zusammengefasst werden können.

Andererseits sind verschachtelte Dataframes möglicherweise nicht die beste Wahl und eignen sich nur für sehr spezifische Szenarien und Anwendungsfälle.

Erstellen Sie verschachtelte Datenrahmen in Pandas

So wie einem Dataframe normale Werte zugewiesen werden können, kann er auch Dataframe-Instanzen erhalten und einen neuen Dataframe bestehend aus mehreren benutzerdefinierten Dataframe-Instanzen erstellen, der mit anderen Worten als verschachtelter Dataframe bezeichnet wird.

Betrachten Sie den folgenden Code:

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)

Dies ergibt die folgende Ausgabe:

   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...

Aus der obigen Ausgabe ist ersichtlich, dass das Drucken der Instanz Dataframe nicht den gesamten Dataframe gut anzeigt. Um die Ausgabe etwas verständlicher zu machen, müssen wir einzeln auf die Dataframe-Elemente zugreifen, die in unserem Fall Dataframe-Instanzen sind.

Um auf die Elemente zuzugreifen, betrachten Sie die folgende Zeile:

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])
)

Dies ergibt die Ausgabe:

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

Um Dataframe-Instanzen in einer anderen Instanz zu verschachteln, müssen wir eine neue Dataframe-Instanz erstellen und die zuvor erstellten Dataframe-Instanzen dem neu erstellten Dataframe zuweisen.

Das Zuweisen von Dataframe-Instanzen zu dem neu erstellten Dataframe ist ziemlich einfach und unterscheidet sich in keiner Weise von Methoden, die beim Zuweisen normaler Daten zu einer Dataframe-Instanz befolgt werden.

In unserem Fall wurde eine Liste bestehend aus der benötigten Dataframe-Instanz erstellt, die dann an den Konstruktor der Dataframe-Klasse beim Erstellen der neuen Dataframe-Instanz weitergegeben wurde, die speziell erstellt wurde, um als Dataframe zu fungieren, bestehend aus mehrere Dataframes.

Wie bei jedem Problem kann es viele mögliche Ansätze für dieses Problem geben. Ein verschachtelter Dataframe wird in bestimmten Szenarien und Anwendungsfällen verwendet.

Im Allgemeinen wird empfohlen, zunächst zu recherchieren, wie die Situation die Strukturierung der Daten erfordert und welche Art von Operationen mit den Daten durchgeführt werden sollen. Basierend auf diesen Bedingungen kann bestimmt werden, ob die Verwendung von verschachtelten Dataframes eine praktikable Option ist oder nicht.

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

Verwandter Artikel - Pandas Dataframe