English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Esempi di operazioni di indice e query di dati Pandas
In questo capitolo, discuteremo come effettuare slice e chunk su date e ottenere sottoinsiemi di oggetti Pandas.
Operatore di indice Python e NumPy "[]" e l'operatore di attributo ".". È possibile accedere rapidamente e facilmente a strutture dati Pandas in vari casi d'uso. Tuttavia, poiché non si conosce preventivamente il tipo di dati da accedere, l'uso diretto degli operatori standard implica alcune limitazioni ottimizzative. Per codice di produzione, si consiglia di utilizzare i metodi di accesso ottimizzati per Pandas descritti in questo capitolo.
Pandas supporta ora tre tipi di indici multi-assiciati: nei tabella sottostante sono menzionati i tre tipi-
indice | descrizione |
.loc() | basato su etichetta |
.iloc() | basato su intero |
.ix() | basato su etichetta e intero |
Pandas offre diversi metodi per avere un'indice basato esclusivamente su etichette. Durante lo slice, include anche i limiti di inizio. Gli interi sono etichette validi, ma si riferiscono alle etichette e non alle posizioni.
.loc() Ha diversi metodi di accesso, ad esempio:
un'etichetta scalare elenco etichette oggetto slice array booleano
loc Occorrono due operatori di singola/elencazione/lista/intervallo, separati da virgola. Il primo indica la riga, il secondo la colonna.
# importare la libreria pandas e assegnare un alias pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # selezionare tutte le righe di colonne specifiche print(df.loc[:,'A'])
运行结果:
a 0.391548 b -0.070649 c -0.317212 d -2.162406 e 2.202797 f 0.613709 g 1.050559 h 1.122680 Nome: A, dtype: float64
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Seleziona tutte le righe per più colonne, ad esempio list[] print(df.loc[:,['A','C']])
运行结果:
A C a 0.391548 0.745623 b -0.070649 1.620406 c -0.317212 1.448365 d -2.162406 -0.873557 e 2.202797 0.528067 f 0.613709 0.286414 g 1.050559 0.216526 h 1.122680 -1.621420
# importare la libreria pandas e assegnare un alias pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Seleziona più righe per più colonne, ad esempio list[] print(df.loc[['a','b','f','h'],['A','C']])
运行结果:
A C a 0.391548 0.745623 b -0.070649 1.620406 f 0.613709 0.286414 h 1.122680 -1.621420
# importare la libreria pandas e assegnare un alias pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # Seleziona l'intervallo di righe per tutte le colonne print(df.loc['a':'h'])
运行结果:
A B C D a 0.391548 -0.224297 0.745623 0.054301 b -0.070649 -0.880130 1.620406 1.419743 c -0.317212 -1.929698 1.448365 0.616899 d -2.162406 0.614256 -0.873557 1.093958 e 2.202797 -2.315915 0.528067 0.612482 f 0.613709 -0.157674 0.286414 -0.500517 g 1.050559 -2.272099 0.216526 0.928449 h 1.122680 0.324368 -1.621420 -0.741470
# importare la libreria pandas e assegnare un alias pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), index = ['a','b','c','d','e','f','g','h'], columns = ['A', 'B', 'C', 'D']) # usato per ottenere valori con array booleani stampa(df.loc['a']>0)
运行结果:
A False B True C False D False Nome: a, dtype: bool
Pandas fornisce diversi metodi per ottenere indici basati esclusivamente su interi. Come python e numpy, sono tutti basati su un'indagine da 0.
Modi di accesso vari:
Intero Elenco di interi Intervallo di valori
# importare la libreria pandas e assegnare un alias pd import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # selezionare tutte le righe di colonne specifiche stampa(df.iloc[:4])
运行结果:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Taglio intero stampa(df.iloc[:4]) stampa(df.iloc[1:5, 2:4])
运行结果:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251 C D 1 -0.813012 0.631615 2 0.025070 0.230806 3 0.826977 -0.026251 4 1.423332 1.130568
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # tagliare le liste di valori stampa(df.iloc[[1, 3, 5], [1, 3]]) stampa(df.iloc[1:3, :]) stampa(df.iloc[:,1:3])
运行结果:
B D 1 0.890791 0.631615 3 -1.284314 -0.026251 5 -0.512888 -0.518930 A B C D 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 B C 0 0.256239 -1.270702 1 0.890791 -0.813012 2 -0.531378 0.025070 3 -1.284314 0.826977 4 -0.460729 1.423332 5 -0.512888 0.581409 6 -1.204853 0.098060 7 -0.947857 0.641358
Oltre ai metodi basati su etichette puri e basati su interi, Pandas offre anche un metodo misto per selezionare e sottoggetti utilizzando l'operatore .ix().
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Taglio intero print(df.ix[:4])
运行结果:
A B C D 0 0.699435 0.256239 -1.270702 -0.645195 1 -0.685354 0.890791 -0.813012 0.631615 2 -0.783192 -0.531378 0.025070 0.230806 3 0.539042 -1.284314 0.826977 -0.026251
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) # Taglio di indici print(df.ix[:,'A'])
运行结果:
0 0.699435 1 -0.685354 2 -0.783192 3 0.539042 4 -1.044209 5 -1.415411 6 1.062095 7 0.994204 Nome: A, dtype: float64
Per ottenere valori da oggetti Pandas tramite un'indagine multiassiale, utilizzare i seguenti simboli:
Oggetto | Indicizzatore | Tipo di ritorno |
Series | s.loc[indexer] | Valore scalare |
DataFrame | df.loc[row_index,col_index] | Oggetto Series |
Pannello | p.loc[item_index,major_index, minor_index] | p.loc[item_index,major_index, minor_index] |
.iloc() e .ix() applicano le stesse opzioni di indagine e restituiscono lo stesso valore.
Vediamo come eseguire ogni operazione sull'oggetto DataFrame. Utilizzeremo l'operatore di indagine di base '[]'-
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) print(df['A'])
运行结果:
0 -0.478893 1 0.391931 2 0.336825 3 -1.055102 4 -0.165218 5 -0.328641 6 0.567721 7 -0.759399 Nome: A, dtype: float64
Possiamo passare una lista di valori a [] per selezionare quelle colonne
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) print(df[['A','B']])
运行结果:
A B 0 -0.478893 -0.606311 1 0.391931 -0.949025 2 0.336825 0.093717 3 -1.055102 -0.012944 4 -0.165218 1.550310 5 -0.328641 -0.226363 6 0.567721 -0.312585 7 -0.759399 -0.372696
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) print(df[2:2])
运行结果:
Columns: [A, B, C, D] Index: []
可以使用属性运算符“。”选择列。
import pandas as pd import numpy as np df = pd.DataFrame(np.random.randn(8, 4), columns = ['A', 'B', 'C', 'D']) print(df.A)
运行结果:
0 -0.478893 1 0.391931 2 0.336825 3 -1.055102 4 -0.165218 5 -0.328641 6 0.567721 7 -0.759399 Nome: A, dtype: float64