Crear marcos de datos anidados en Pandas
Este artículo discutirá cómo leer un marco de datos anidado de Pandas. Esto también demostrará cómo solucionar los problemas cuando leemos el marco de datos anidado de Pandas en Python.
Marcos de datos anidados de Pandas
Pandas DataFrame es una estructura que almacena datos con dos dimensiones y las etiquetas correspondientes a esas dimensiones. Los marcos de datos se han aplicado ampliamente en muchos campos intensivos en datos, incluida la ciencia de datos, el aprendizaje automático, la computación científica y muchos otros.
Los marcos de datos son comparables a las tablas y hojas de cálculo SQL que se pueden manipular en aplicaciones como Excel y Calc.
Debido a que son un componente esencial de los ecosistemas Python y NumPy, los marcos de datos suelen ser superiores a las tablas y hojas de cálculo en términos de velocidad, facilidad de uso y potencia. Este es el caso de muchas aplicaciones.
Al manejar grandes cantidades de datos, puede ocurrir una situación en la que se requiera crear una instancia de Dataframe
que contenga más instancias dentro de ella.
Considere el siguiente código:
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)
)
Producción :
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
En el código anterior, se han declarado y almacenado tres instancias de Dataframe
diferentes en las variables df
, df2
y df3
, respectivamente. Bajo el supuesto de que las tres instancias de Dataframe
diferentes están estrechamente relacionadas, puede volverse tedioso acceder a ellas por separado, especialmente en los casos en que los datos en las instancias son grandes.
Para superar este problema, recopilar los datos en un solo lugar puede ser un enfoque sensato para facilitar el acceso. Un Dataframe
anidado puede ser una posible solución, ya que todas las instancias de Dataframe
relacionadas se pueden reunir en una nueva instancia única de Dataframe
.
Por otro lado, el Dataframe
anidado puede no ser la mejor opción y solo es adecuado para escenarios y casos de uso muy específicos.
Crear marcos de datos anidados en Pandas
Al igual que a un Dataframe
se le pueden asignar valores normales, también puede recibir instancias de Dataframe
y crear un nuevo Dataframe
que consta de varias instancias de Dataframe
definidas por el usuario, que en otras palabras, se denomina Dataframe
anidado.
Considere el siguiente código:
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)
Esto da la siguiente salida:
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...
A partir del resultado anterior, se puede ver que simplemente imprimir la instancia de Dataframe
no muestra bien todo el Dataframe
. Para que la salida sea un poco más comprensible, tenemos que acceder a los elementos Dataframe
individualmente, que son instancias de Dataframe
en nuestro caso.
Para acceder a los elementos, considere la siguiente línea:
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])
)
Esto da la salida:
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
Para anidar instancias de Dataframe
dentro de otra instancia, debemos crear una nueva instancia de Dataframe
y asignar las instancias de Dataframe
creadas previamente al Dataframe
recién creado.
Asignar instancias de Dataframe
al Dataframe
recién creado es bastante simple y no es diferente de los métodos seguidos al asignar datos normales a una instancia de Dataframe
.
En nuestro caso, se creó una lista que constaba de la instancia de Dataframe
requerida, que luego se pasó al constructor de la clase Dataframe
al crear la nueva instancia de Dataframe
creada específicamente para actuar como un Dataframe
que consta de varios Dataframes
.
Como con cualquier problema, puede haber muchos enfoques potenciales para este problema. Un Dataframe
anidado se utiliza en escenarios y casos de uso específicos.
En general, se recomienda investigar primero cómo la situación requiere que se estructuren los datos y qué tipo de operaciones se realizarán en los datos. En base a estas condiciones, se puede determinar si el uso de Dataframes
anidados es una opción viable o no.
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