Panda: da zero a eroe
Un articolo completo che puoi leggere mentre guardi la tua TV preferita durante il giorno, ma abbastanza buono da insegnarti tutto ciò che devi sapere per portare a termine il lavoro.
Iniziare
Pandas è una libreria di analisi ed elaborazione dei dati in Python. Pandas è ampiamente utilizzato per Data Science e Machine Learning. È sviluppato su un altro pacchetto Python chiamato NumPy, utilizzato per il calcolo scientifico. Se non sai molto di NumPy, potresti voler verificarlo rapidamente leggendo il mio articolo di 5 minuti prima di continuare con Pandas. Questo non è un must ma lo consiglio vivamente.
Per iniziare, assicurati innanzitutto di avere Python, NumPy e Pandas nel tuo sistema. Il modo in cui lo ottieni dipende dal tuo sistema e dall'IDE che preferisci, ma io raccomando Anaconda. Con l'installazione di base di Anaconda puoi semplicemente andare al terminale ed eseguire "conda install numpy", quindi "conda install pandas" e voilà!
Ora, creiamo un file example.py con cui iniziare a lavorare.
Nota: se dovessimo creare un progetto invece di un singolo file di esempio con cui lavorare, dovremmo semplicemente creare una directory e un file __init__.py al suo interno.
Dovresti aggiungere le seguenti righe all'inizio del file per poter lavorare con Pandas all'interno del file.
importa numpy come np
importa panda come pd
Nota: generalmente importiamo NumPy come np e Pandas come pd in modo da non dover digitare numpy & pandas ogni volta che chiamiamo una funzione dalle librerie. Tieni presente che sebbene possa essere modificato, np e pd sono la convenzione generale.
Successivamente, puoi eseguire il codice all'interno del file di esempio semplicemente andando al terminale ed eseguendo il comando:
python esempio.py
Serie
Simile a come qualsiasi linguaggio di programmazione ha array, in modo simile a come NumPy ha matrici, otteniamo serie in Pandas. La differenza principale tra serie e matrici/array ordinari è che gli elementi all'interno della serie possono avere un numero di indice o chiavi per accedere a quel valore. Pensalo come un elenco di coppie chiave-valore come un dato JSON.
Curiosità: Pandas è spesso espresso come "Excel per la scienza dei dati" a causa del fatto che consente di risparmiare valore: coppie di chiavi, le visualizza visivamente ed esegue calcoli su di esse in modo simile a MS Excel.
Puoi creare una serie Pandas da un dizionario Python:
mioDizionario = {"John" : 35, "Jane" : 40}
pd.Series(myDictionary) // restituisce John 35, Jane 40
Se dovessi aggiungere un array invece di un dizionario, gli elementi all'interno della serie avrebbero numeri interi come chiavi:
mioArray = [ 35, 40]
pd.Series(myArray) // restituisce 0 35, 1 40
Puoi aggiungere due array insieme e creare una serie da essi come:
mioArray1 = [ 35, 40]
myArray2 = ["Giovanni", "Giovanna"]
pd.Series(data= myArray1, index=myArray2) // restituisce John 35, Jane 40
Se ci sono due serie diverse con le stesse chiavi, puoi eseguire operazioni matematiche su di esse come:
serie1 = pd.Serie({ "John" : 35, "Jane" : 40})
serie2 =pd.Serie({ "John" : 100, "Jane" : 50})
sommaserie = serie1 + serie2 // restituisce John 135, Jane 90
Nota: quando si esegue un'operazione matematica su serie con chiavi diverse, le chiavi corrispondenti avranno come valore il risultato dell'operazione, ma le chiavi non corrispondenti avranno un valore NaN poiché non ci sarà alcun risultato per queste chiavi.
Frame di dati
I frame di dati possono essere considerati come una serie ma per le matrici. Fondamentalmente, una matrice in cui gli indici sono chiavi e il tutto è una coppia chiave-valore è chiamata frame di dati.
Puoi creare un frame di dati da qualsiasi array o matrice come:
miaMatrice = [ [10, 20, 30], [ 100, 200, 300] ]
dataFrame = pd.DataFrame(miaMatrice)
Puoi assegnare chiavi di colonne e righe come:
miaMatrice = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]
righe = ["John", "Jane", "Sarah" ]
colonne = [“Tennis”, “Basket”, “Pingpong”]
dataFrame = pd.DataFrame(myMatrix, index = righe, colonne = colonne)
Puoi chiamare una determinata colonna dal frame di dati come:
dataFrame[ “Tennis” ]
Se dovessi chiamare una riga con la chiave come mostrato sopra, tuttavia, genererebbe un errore. Puoi chiamare una riga con la chiave come:
dataFrame.loc[ “Giovanni” ]
Il fatto che ci siano chiavi per chiamare colonne e righe non significa che non ci siano indici. Proprio come nelle matrici, gli indici esistono ancora. Puoi, ad esempio, chiamare la prima riga come:
dataFrame.iloc[1] // restituisce la riga Jane con i valori 2, 20, 200
Puoi aggiungere una nuova colonna al data frame come:
dataFrame[ “Calcio” ] = [ 1000, 2000, 3000]
Viceversa, puoi eliminare una colonna o una riga dal data frame come:
dataFrame.drop(“Football”, axis=1, inPlace=True) // per eliminare una colonna devi impostare axis a 1
dataFrame.drop("John", axis=0, inPlace=True) // per eliminare una riga devi impostare axis a 0
Nota: Pandas non vuole che tu cambi erroneamente un'intera colonna o una riga. Forse stai cercando di creare un altro frame di dati e impostare il vecchio frame di dati con una colonna mancante invece di alterare effettivamente quello vecchio? Quindi, per assicurarci che tu stia effettivamente modificando il frame di dati stesso, inseriamo il parametro inPlace=True all'interno delle funzioni.
Puoi chiamare un valore di cella come:
dataFrame.loc[ “Giovanni”, “Tennis”]
È possibile eliminare all'interno dei frame di dati come:
DataFrame[ DataFrame[“Tennis”] > 5]
// eliminerà le righe in cui il valore della colonna Tennis è inferiore a 5, quindi eliminerà la riga John
Per modificare gli indici all'interno di un frame di dati, è innanzitutto necessario aggiungere il nuovo array di indici come colonna al vecchio frame di dati. Quindi, puoi catturarlo con il nome della colonna e assegnare i suoi valori come nuovi indici come:
dataFrame.set_indexes("Nuova colonna indice", inPlace=True)
Un frame di dati multi-indice ha questo aspetto in Excel:
Qui ci sono due indici a righe, Frutta & Verdura E il nome del prodotto. Possiamo anche creare multi-indici come questo tramite Pandas. Per fare ciò devi:
- Definire due elenchi di indici esterni e indici interni, quindi combinare questi due in un elenco di tuple utilizzando l'elenco e i metodi zip.
- Quindi utilizzare il metodo MultiIndex.from_tuples() per trasformare la tupla in un multiindice.
- Quindi crea un elenco di colonne.
- Successivamente, crea un elenco di dati come matrice e trasformalo effettivamente in una matrice utilizzando il metodo np.array().
- Infine, utilizza la funzione DataFrame() di Pandas per creare il frame di dati con multiindice.
outerIndexes = [“Verdure”, “Verdure”, “Frutis”, “Frutta”]
innerIndexes = ["Pomodori", "Cetrioli", "Arance", "Mirtilli"]
Indicicombinati = lista(zip(Indiciesterni, Indiciinterni))
combinedIndexes = pd.MultiIndex.from_tuples(combinedIndexes)
listAmountPrice =[ [ 2 USD, 5 lbs], [ 1USD, 3 lbs], [ 2 USD, 3 lbs], [ 3 USD, 2 lbs] ]
numpySerieImportoPrezzo = np.array(elencoImportoPrezzo)
myColumns = ["Prezzo", "Importo" ]
multiIndexDataFrame = pd.DataFrame( numpySeriesAmountPrice, index = combinedIndexes, columns= myColumns)
E poi, puoi chiamare l'importo e il prezzo dei mirtilli come:
multiIndexDataFrame.loc[ “Frutta” ].loc[ “Mirtilli” ]
Puoi anche dare alle colonne multi-indice alcuni nomi, come questo:
multiIndexDataFrame.index.names = ["Corridoio", "Nome prodotto" ]
Operazioni
- Per restituire un frame di dati dal frame di dati originale con le righe che contengono valori NaN cancellati:
- Per restituire un frame di dati dal frame di dati originale con le colonne che contengono valori NaN eliminati:
- Per restituire un frame di dati dal frame di dati originale con le righe che contengono più di due valori NaN eliminati:
- Per restituire un frame di dati dal frame di dati originale con le celle che contengono un valore NaN modificato in un determinato valore, diciamo, il numero intero 20:
- Per eseguire operazioni e raccogliere dati su un frame di dati basato su una colonna, è necessario raggruppare il frame di dati in relazione a quella colonna utilizzando groupby. Quindi puoi eseguire operazioni per contare i dati all'interno, ottenere la media dei valori ecc.
group.mean() // ottiene la media degli stipendi all'interno della tabella
group.count() // calcola quanti dipendenti ricevono un certo stipendio per ogni stipendio
group.describe() // porta alcuni risultati di analisi statistiche come la media, i valori massimo e minimo ecc. per quel frame di dati relativo alla colonna "Stipendio" raggruppata
- Se hai due o più frame di dati che hanno le stesse colonne, puoi raggrupparli insieme (uno sotto l'altro) in questo modo:
- Allo stesso modo, se hai due o più frame di dati che hanno le stesse righe, puoi raggrupparli insieme (uno sotto l'altro) in questo modo:
- Se stai cercando di ottenere due o più frame di dati con colonne diverse, tuttavia, utilizzerai il metodo di unione come di seguito. Ma tieni presente che, per poterlo fare, tutti i frame di dati che unisci devono avere almeno una colonna in comune.
- Puoi portare solo i valori univoci all'interno di una colonna in un database come:
- Puoi calcolare quanti valori univoci ci sono all'interno di una colonna in un frame di dati come:
- È possibile definire una funzione e applicarla a ciascun valore all'interno di un frame di dati con la funzione .apply(). Per spiegare meglio con un esempio:
return price * 1.33 // funzione che aggiunge %33 tasse al prezzo originale
priceDataFrame[ “Price” ].apply( priceWithTax ) // restituisce una serie con i prezzi aggiornati
Eccellere con Panda
Anche se abbiamo lavorato con frame di dati e serie sopra, i dati della vita reale molto probabilmente ti verranno consegnati sotto forma di un file Excel.
Per poter lavorare con un file Excel, assicurati di salvarlo esattamente nella stessa directory in cui si trova il tuo file python (il file python in cui eseguirai le funzioni e le operazioni di Pandas). Quindi, puoi importare il tuo file Excel come:
myDataFrame = pd.read_excel( “myExcelFile.xlsx” )
I file Excel verranno importati come tipo DataFrame per impostazione predefinita, quindi sei a posto!
Conclusione
Ci sono molte altre funzioni predefinite e strutture facili da usare all'interno di Pandas di cui potresti aver bisogno a seconda dell'attività, ma questo dovrebbe essere sufficiente per aiutarti a portare a termine il lavoro. Se stai cercando un'intera carriera su questo o se sei interessato a saperne di più, puoi continuare da corsi di livello avanzato o ricerca quando ti imbatti nella necessità di qualcos'altro (qualcosa di più intelligente!) Mentre lavori su un'attività. Pandas ha una soluzione per quasi tutto!

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































