Panda Python - DataFrame
Un Data frame è una struttura dati bidimensionale, cioè i dati sono allineati in modo tabulare in righe e colonne.
Caratteristiche di DataFrame
- Potenzialmente le colonne sono di diversi tipi
- Dimensioni - Mutevole
- Assi etichettati (righe e colonne)
- Può eseguire operazioni aritmetiche su righe e colonne
Struttura
Supponiamo di creare un data frame con i dati dello studente.
Puoi pensarlo come una tabella SQL o una rappresentazione dei dati di un foglio di calcolo.
pandas.DataFrame
Un DataFrame panda può essere creato utilizzando il seguente costruttore:
pandas.DataFrame( data, index, columns, dtype, copy)
I parametri del costruttore sono i seguenti:
Suor n | Parametro e descrizione |
---|---|
1 |
data i dati assumono varie forme come ndarray, serie, mappa, elenchi, dict, costanti e anche un altro DataFrame. |
2 |
index Per le etichette di riga, l'indice da utilizzare per il frame risultante è opzionale Default np.arange (n) se non viene passato alcun indice. |
3 |
columns Per le etichette di colonna, la sintassi predefinita opzionale è - np.arange (n). Questo è vero solo se non viene passato alcun indice. |
4 |
dtype Tipo di dati di ogni colonna. |
5 |
copy Questo comando (o qualunque cosa sia) viene utilizzato per la copia dei dati, se l'impostazione predefinita è False. |
Crea DataFrame
Un DataFrame panda può essere creato utilizzando vari input come:
- Lists
- dict
- Series
- Numpy ndarrays
- Un altro DataFrame
Nelle sezioni successive di questo capitolo vedremo come creare un DataFrame utilizzando questi input.
Crea un DataFrame vuoto
Un DataFrame di base, che può essere creato è un Dataframe vuoto.
Esempio
#import the pandas library and aliasing as pd
import pandas as pd
df = pd.DataFrame()
print df
Suo output è il seguente -
Empty DataFrame
Columns: []
Index: []
Crea un DataFrame dagli elenchi
Il DataFrame può essere creato utilizzando un singolo elenco o un elenco di elenchi.
Esempio 1
import pandas as pd
data = [1,2,3,4,5]
df = pd.DataFrame(data)
print df
Suo output è il seguente -
0
0 1
1 2
2 3
3 4
4 5
Esempio 2
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'])
print df
Suo output è il seguente -
Name Age
0 Alex 10
1 Bob 12
2 Clarke 13
Esempio 3
import pandas as pd
data = [['Alex',10],['Bob',12],['Clarke',13]]
df = pd.DataFrame(data,columns=['Name','Age'],dtype=float)
print df
Suo output è il seguente -
Name Age
0 Alex 10.0
1 Bob 12.0
2 Clarke 13.0
Note - Osserva, il dtype Il parametro modifica il tipo di colonna Età in virgola mobile.
Crea un DataFrame da Dict of ndarrays / Lists
Tutti i ndarraysdeve essere della stessa lunghezza. Se index viene passato, la lunghezza dell'indice dovrebbe essere uguale alla lunghezza degli array.
Se non viene passato alcun indice, per impostazione predefinita l'indice sarà intervallo (n), dove n è la lunghezza dell'array.
Esempio 1
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data)
print df
Suo output è il seguente -
Age Name
0 28 Tom
1 34 Jack
2 29 Steve
3 42 Ricky
Note- Rispettare i valori 0,1,2,3. Sono l'indice predefinito assegnato a ciascuno utilizzando l'intervallo di funzioni (n).
Esempio 2
Creiamo ora un DataFrame indicizzato usando gli array.
import pandas as pd
data = {'Name':['Tom', 'Jack', 'Steve', 'Ricky'],'Age':[28,34,29,42]}
df = pd.DataFrame(data, index=['rank1','rank2','rank3','rank4'])
print df
Suo output è il seguente -
Age Name
rank1 28 Tom
rank2 34 Jack
rank3 29 Steve
rank4 42 Ricky
Note - Osserva, il index il parametro assegna un indice a ciascuna riga.
Crea un DataFrame da List of Dicts
È possibile passare un elenco di dizionari come dati di input per creare un DataFrame. Le chiavi del dizionario vengono prese per impostazione predefinita come nomi di colonna.
Esempio 1
L'esempio seguente mostra come creare un DataFrame passando un elenco di dizionari.
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data)
print df
Suo output è il seguente -
a b c
0 1 2 NaN
1 5 10 20.0
Note - Osserva, NaN (Not a Number) è aggiunto nelle aree mancanti.
Esempio 2
L'esempio seguente mostra come creare un DataFrame passando un elenco di dizionari e gli indici di riga.
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
df = pd.DataFrame(data, index=['first', 'second'])
print df
Suo output è il seguente -
a b c
first 1 2 NaN
second 5 10 20.0
Esempio 3
L'esempio seguente mostra come creare un DataFrame con un elenco di dizionari, indici di riga e indici di colonna.
import pandas as pd
data = [{'a': 1, 'b': 2},{'a': 5, 'b': 10, 'c': 20}]
#With two column indices, values same as dictionary keys
df1 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b'])
#With two column indices with one index with other name
df2 = pd.DataFrame(data, index=['first', 'second'], columns=['a', 'b1'])
print df1
print df2
Suo output è il seguente -
#df1 output
a b
first 1 2
second 5 10
#df2 output
a b1
first 1 NaN
second 5 NaN
Note- Osserva, df2 DataFrame viene creato con un indice di colonna diverso dalla chiave del dizionario; quindi, aggiunto i NaN in atto. Considerando che, df1 viene creato con gli indici di colonna stessi delle chiavi del dizionario, quindi NaN viene aggiunto.
Crea un DataFrame da Dict of Series
Il dizionario delle serie può essere passato per formare un DataFrame. L'indice risultante è l'unione di tutti gli indici di serie passati.
Esempio
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df
Suo output è il seguente -
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
Note - Osserva, per la serie uno, non c'è etichetta ‘d’ passato, ma nel risultato, per il d etichetta, NaN viene aggiunto con NaN.
Cerchiamo ora di capire column selection, addition, e deletion attraverso esempi.
Selezione della colonna
Lo capiremo selezionando una colonna dal DataFrame.
Esempio
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df ['one']
Suo output è il seguente -
a 1.0
b 2.0
c 3.0
d NaN
Name: one, dtype: float64
Aggiunta di colonne
Lo capiremo aggiungendo una nuova colonna a un data frame esistente.
Esempio
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
# Adding a new column to an existing DataFrame object with column label by passing new series
print ("Adding a new column by passing as Series:")
df['three']=pd.Series([10,20,30],index=['a','b','c'])
print df
print ("Adding a new column using the existing columns in DataFrame:")
df['four']=df['one']+df['three']
print df
Suo output è il seguente -
Adding a new column by passing as Series:
one two three
a 1.0 1 10.0
b 2.0 2 20.0
c 3.0 3 30.0
d NaN 4 NaN
Adding a new column using the existing columns in DataFrame:
one two three four
a 1.0 1 10.0 11.0
b 2.0 2 20.0 22.0
c 3.0 3 30.0 33.0
d NaN 4 NaN NaN
Cancellazione della colonna
Le colonne possono essere eliminate o estratte; facciamo un esempio per capire come.
Esempio
# Using the previous DataFrame, we will delete a column
# using del function
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd']),
'three' : pd.Series([10,20,30], index=['a','b','c'])}
df = pd.DataFrame(d)
print ("Our dataframe is:")
print df
# using del function
print ("Deleting the first column using DEL function:")
del df['one']
print df
# using pop function
print ("Deleting another column using POP function:")
df.pop('two')
print df
Suo output è il seguente -
Our dataframe is:
one three two
a 1.0 10.0 1
b 2.0 20.0 2
c 3.0 30.0 3
d NaN NaN 4
Deleting the first column using DEL function:
three two
a 10.0 1
b 20.0 2
c 30.0 3
d NaN 4
Deleting another column using POP function:
three
a 10.0
b 20.0
c 30.0
d NaN
Selezione, aggiunta e cancellazione di righe
Ora capiremo la selezione, l'aggiunta e l'eliminazione delle righe tramite esempi. Cominciamo con il concetto di selezione.
Selezione per etichetta
Le righe possono essere selezionate passando l'etichetta della riga a un file loc funzione.
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df.loc['b']
Suo output è il seguente -
one 2.0
two 2.0
Name: b, dtype: float64
Il risultato è una serie con etichette come nomi di colonna del DataFrame. E il nome della serie è l'etichetta con cui viene recuperata.
Selezione per posizione intera
Le righe possono essere selezionate passando la posizione intera a un file iloc funzione.
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df.iloc[2]
Suo output è il seguente -
one 3.0
two 3.0
Name: c, dtype: float64
Slice Rows
È possibile selezionare più righe utilizzando l'operatore ":".
import pandas as pd
d = {'one' : pd.Series([1, 2, 3], index=['a', 'b', 'c']),
'two' : pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
df = pd.DataFrame(d)
print df[2:4]
Suo output è il seguente -
one two
c 3.0 3
d NaN 4
Aggiunta di righe
Aggiungi nuove righe a un DataFrame usando il appendfunzione. Questa funzione aggiungerà le righe alla fine.
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
print df
Suo output è il seguente -
a b
0 1 2
1 3 4
0 5 6
1 7 8
Eliminazione di righe
Usa l'etichetta indice per eliminare o rilasciare righe da un DataFrame. Se l'etichetta è duplicata, verranno eliminate più righe.
Se osservi, nell'esempio sopra, le etichette sono duplicate. Rilasciamo un'etichetta e vedremo quante righe verranno eliminate.
import pandas as pd
df = pd.DataFrame([[1, 2], [3, 4]], columns = ['a','b'])
df2 = pd.DataFrame([[5, 6], [7, 8]], columns = ['a','b'])
df = df.append(df2)
# Drop rows with label 0
df = df.drop(0)
print df
Suo output è il seguente -
a b
1 3 4
1 7 8
Nell'esempio precedente, due righe sono state eliminate perché quelle due contengono la stessa etichetta 0.