Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky

Domáce Hardware Siete Programovanie Softvér Otázka Systémy

Ako môžem efektívne vytvoriť a manipulovať s pandas 3D dátovým rámcom?

Pandas priamo nepodporuje 3D dátové rámce. Základná štruktúra DataFrame Pandas je dvojrozmerná (riadky a stĺpce). Ak chcete reprezentovať 3D dáta, musíte použiť iný prístup, zvyčajne jeden z nich:

1. Panelové údaje (zastarané, ale koncepčne relevantné):

Pandas mal objekt „panela“, ale je zastaraný. Bol to v podstate kontajner pre viacero dátových rámcov. Aj keď to nie je priamo použiteľné, pomáha porozumieť koncepčnému prístupu:Predstavte si, že každý dátový rámec predstavuje plátok pozdĺž jednej dimenzie.

2. Použitie jedného dátového rámca s MultiIndexom:

Toto je najúčinnejšia a najúčinnejšia metóda. Vytvoríte multiindEx pre svoje stĺpce, ktoré predstavujú tretiu dimenziu.

`` `Python

Importovať pandy ako PD

import numpy ako np

Vzorka 3D dát (2x3x4)

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

Vytvorte multiindex pre stĺpce

polia =[

['A', 'a', 'b', 'b', 'c', 'c'], # vrstva 1

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

]

Treples =List (Zip (*polia))

index =pd.multiindex.from_tuples (Treps, name =['Layer1', 'Layer2'])

Prestavte údaje do 2D poľa vhodného pre dátový rámec

data_2d =data_3d.Reshape (2, 6)

Vytvorte DataFrame pomocou Multiindex

df =pd.dataframe (data_2d, index =rozsah (2), stĺpce =index)

tlač (DF)

Prístup k údajom:

Print ("\ nAccessing Element v vrstve1 ='a', vrstva2 ='x', riadok 0:")

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

Prístup k plátku:

tlač ("\ naccessing všetky údaje pre vrstvu1 ='a':")

tlač (df.loc [:, 'a'])

#Pripravovanie novej vrstvy (vrstva3):

#NEBEZPEČENSTVO ZA TO

new_data_3d =np.rand.rand (2,3,4,2)

new_data_2d =new_data_3d.reshape (2,12)

polia =[

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

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

, ['Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1', 'Z1'] # vrstva 3

]

Treples =List (Zip (*polia))

index =pd.multiindex.from_tuples (Treps, názvy =['Layer1', 'Layer2', 'Layer3'])

df_new =pd.dataframe (new_data_2d, index =rozsah (2), stĺpce =index)

Print ("\ ndataframe s novou vrstvou3:")

tlač (df_new)

`` `

3. Použitie slovníka DataFrames:

Je to menej efektívne ako multiindex, ale ponúka väčšiu flexibilitu pre zložité scenáre.

`` `Python

data ={}

pre i v rozsahu (2):

dáta [i] =pd.dataframe (np.random.rand (3, 4))

Prístup k údajom:

tlač (údaje [0])

`` `

Výber správneho prístupu:

* multiindex: Najlepšie pre väčšinu prípadov ponúka dobrý výkon a efektívny prístup k údajom, ak je vaša tretia dimenzia relatívne malý až mierny.

* Slovník DataFrames: Lepšie, ak máte vo svojich 3D údajoch výrazne väčší počet „vrstiev“ alebo ak vaše rôzne vrstvy majú veľmi odlišné štruktúry.

Nezabudnite starostlivo zvážiť, ako budete mať prístup a manipulujete s vašimi údajmi, keď sú štruktúrované jedným z týchto spôsobov. Prístup MultiIndex je všeobecne výhodný z dôvodu jeho účinnosti a vstavaným schopnostiam Pandas na prácu s multi-INDEXES. Ak chcete získať veľmi veľké súbory údajov, zvážte použitie Dask alebo VAEX, ktoré sú určené na výpočet mimo jadra.

Najnovšie články

Copyright © počítačové znalosti Všetky práva vyhradené