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.