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