“Conocimiento Hardware>Mainframes

¿Cómo puedo crear y manipular un marcador de datos PANDAS 3D de manera eficiente?

2012/6/10
Pandas no admite directamente 3D Dataframes. La estructura fundamental de un marco de datos PANDAS es bidimensional (filas y columnas). Para representar datos 3D, debe utilizar un enfoque diferente, típicamente uno de estos:

1. Datos del panel (desaprobado pero conceptualmente relevante):

Los pandas solían tener un objeto 'panel', pero está en desuso. Era esencialmente un contenedor para múltiples marcos de datos. Si bien ahora no se puede usar directamente, ayuda a comprender el enfoque conceptual:imagine que cada marco de datos representa una porción a lo largo de una dimensión.

2. Uso de un solo marco de datos con un multiíndex:

Este es el método más eficiente y recomendado. Creas un multiíndex para tus columnas para representar la tercera dimensión.

`` `Python

importar pandas como PD

importar numpy como np

Datos 3D de muestra (2x3x4)

data_3d =np.random.rand (2, 3, 4)

Crear un multiíndex para las columnas

matrices =[

['A', 'A', 'B', 'B', 'C', 'C'], # Capa 1

['X', 'y', 'x', 'y', 'x', 'y'] # capa 2

]

tuples =list (zip (*matrices))

índice =pd.multiindex.from_tuples (tuples, nombres =['Layer1', 'Layer2'])

Resalva los datos en una matriz 2D adecuada para un DataFrame

data_2d =data_3d.reshape (2, 6)

Crea el DataFrame con el MultiDindex

df =pd.dataframe (data_2d, index =range (2), columns =index)

Imprimir (DF)

Acceso a datos:

print ("\ naccessing Element at layer1 ='a', layer2 ='x', fila 0:")

imprimir (df.loc [0, ('a', 'x')])

Acceder a una porción:

Imprimir ("\ Naccessing Todos los datos para capas1 ='a':")

imprimir (df.loc [:, 'a'])

#Agradecer una nueva capa (Layer3):

#Necido reestructurar los datos para esto

new_data_3d =np.random.rand (2,3,4,2) #Added A Dimension

new_data_2d =new_data_3d.reshape (2,12)

matrices =[

['A', 'a', 'a', 'a', 'a', 'a', 'b', 'b', 'b', 'b', 'b', 'b'], # capa 1

['X', 'y', 'x', 'y', 'x', 'y', 'x', 'y', 'x', 'y', 'x', 'y'] # capa 2

, ['Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1'] # Layer 3

]

tuples =list (zip (*matrices))

índice =pd.multiindex.from_tuples (tuples, nombres =['Layer1', 'Layer2', 'Layer3'])

df_new =pd.dataframe (new_data_2d, index =range (2), columnas =index)

imprimir ("\ ndataframe con una nueva capa3:")

Imprimir (df_new)

`` `` ``

3. Uso de un diccionario de marcos de datos:

Esto es menos eficiente que un multiíndex, pero ofrece más flexibilidad para escenarios complejos.

`` `Python

Data ={}

para i en el rango (2):

Datos [i] =pd.dataframe (np.random.rand (3, 4))

Acceso a datos:

Imprimir (datos [0])

`` `` ``

Elegir el enfoque correcto:

* multiíndex: Lo mejor para la mayoría de los casos, ofrece un buen rendimiento y acceso eficiente de datos si su tercera dimensión es relativamente pequeña a moderada.

* Diccionario de Dataframes: Mejor si tiene un número significativamente mayor de "capas" en sus datos 3D o si sus diferentes capas tienen estructuras muy diferentes.

Recuerde considerar cuidadosamente cómo accederá y manipulará sus datos una vez que esté estructurado de una de estas formas. El enfoque multiíntesis es generalmente preferible debido a su eficiencia y a las capacidades incorporadas de los pandas para trabajar con multiíntesis. Para conjuntos de datos muy grandes, considere usar DASK o VAEX que están diseñados para el cálculo fuera del núcleo.

Mainframes
Cómo instalar RAM en un ASUS A8N SLI Manual Premium con 3 Slots
¿Cuál es el recuerdo de mainframe?
¿Qué se entiende por HUB? ¿Definirlo?
¿Cómo son mainframes y ordenadores similares
¿Qué es el conjunto de habilidades de vainilla mainframe?
Cómo conectar una fuente de alimentación de la caja del ventilador
¿Por qué los sistemas mainframe están limitados en la cantidad de tareas que realizan?
¿Es la gestión de las instalaciones más preocupantes para los grandes sistemas de mainframe o el entorno de usuario final?
Conocimiento de la computadora © http://www.ordenador.online