Python Tutorial su Panda: DataFrame, intervallo di date, utilizzo di Panda
Cos'è Panda Python?
Pandas è una libreria open source che consente di eseguire la manipolazione e l'analisi dei dati in Python. Panda Python la libreria offre manipolazione dei dati e operazioni sui dati per tabelle numeriche e serie temporali. Pandas fornisce un modo semplice per creare, manipolare e gestire i dati. È costruito su NumPy, il che significa che ha bisogno di NumPy per funzionare.
Perché usare i Panda?
I data scientist utilizzano i Panda in Python per i seguenti vantaggi:
- Gestisce facilmente i dati mancanti
- Esso utilizza Serie per strutture dati unidimensionali e DataFrame per struttura dati multidimensionale
- Fornisce un modo efficiente per suddividere i dati
- Fornisce un modo flessibile per unire, concatenare o rimodellare i dati
- Include un potente strumento per serie temporali con cui lavorare
In poche parole, Pandas è un'utile libreria in analisi dei dati. Può essere utilizzato per eseguire la manipolazione e l'analisi dei dati. I panda forniscono strutture dati potenti e facili da usare, nonché i mezzi per eseguire rapidamente operazioni su queste strutture.
Come installare i Panda?
Ora in questo Python Tutorial su Pandas, impareremo come installare Pandas Python.
Per installare la libreria Panda, fare riferimento al nostro tutorial Come installare TensorFlow. Pandas è installato per impostazione predefinita. Nel caso remoto, i panda non sono installati-
Puoi installare Panda utilizzando:
- Anaconda: conda install -c anaconda panda
- In Jupyter Taccuino :
import sys !conda install --yes --prefix {sys.prefix} pandas
Cos'è un DataFrame Panda?
Panda DataFrame è un array bidimensionale con struttura dati etichettata con diversi tipi di colonne. Un DataFrame è un modo standard per archiviare i dati in un formato tabellare, con righe per archiviare le informazioni e colonne per denominare le informazioni. Ad esempio, il prezzo può essere il nome di una colonna e 2,3,4 possono essere i valori del prezzo.
Data Frame è ben noto agli statistici e ad altri professionisti dei dati.
Sotto un'immagine di un data frame Panda:
Cos'è una serie?
Una serie è una struttura dati unidimensionale. Può avere qualsiasi struttura dati come numeri interi, float e stringhe. È utile quando si desidera eseguire calcoli o restituire un array unidimensionale. Una serie, per definizione, non può avere più colonne. Per quest'ultimo caso, utilizzare la struttura del frame dati.
Python La serie Pandas ha i seguenti parametri:
- Dati: possono essere una lista, un dizionario o un valore scalare
pd.Series([1., 2., 3.])
0 1.0 1 2.0 2 3.0 dtype: float64
È possibile aggiungere l'indice con indice. Aiuta a dare un nome alle righe. La lunghezza dovrebbe essere uguale alla dimensione della colonna
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
Di seguito, crei una serie Panda con un valore mancante per la terza riga. Nota, valori mancanti in Python sono contrassegnati con "NaN". Puoi usare numpy per creare artificialmente il valore mancante: np.nan
pd.Series([1,2,np.nan])
Uscita
0 1.0 1 2.0 2 NaN dtype: float64
Crea Panda DataFrame
Ora in questo tutorial di Pandas DataFrame impareremo come creare Python Dataframe Panda:
È possibile convertire un array Numpy in un frame di dati panda con pd.Data frame(). È possibile anche il contrario. Per convertire un Data Frame panda in un array, puoi usare np.array()
## Numpy to pandas import numpy as np h = [[1,2],[3,4]] df_h = pd.DataFrame(h) print('Data Frame:', df_h) ## Pandas to numpy df_h_n = np.array(df_h) print('Numpy array:', df_h_n) Data Frame: 0 1 0 1 2 1 3 4 Numpy array: [[1 2] [3 4]]
Puoi anche utilizzare un dizionario per creare un dataframe Pandas.
dic = {'Name': ["John", "Smith"], 'Age': [30, 40]} pd.DataFrame(data=dic)
Età | Nome | |
---|---|---|
0 | 30 | John |
1 | 40 | fabbro |
Dati sulla gamma dei panda
I panda hanno una comoda API per creare un intervallo di date. Impariamo con Python Esempi di panda:
pd.data_range(data,periodo,frequenza):
- Il primo parametro è la data di inizio
- Il secondo parametro è il numero di periodi (facoltativo se è specificata la data di fine)
- L'ultimo parametro è la frequenza: giorno: 'D', mese: 'M' e anno: 'Y.'
## Create date # Days dates_d = pd.date_range('20300101', periods=6, freq='D') print('Day:', dates_d)
Uscita
Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months dates_m = pd.date_range('20300101', periods=6, freq='M') print('Month:', dates_m)
Uscita
Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')
Ispezione dei dati
Puoi controllare la testa o la coda del set di dati con head() o tail() preceduto dal nome del frame di dati del panda come mostrato nell'esempio Pandas seguente:
Passo 1) Crea una sequenza casuale con numpy. La sequenza ha 4 colonne e 6 righe
random = np.random.randn(6,4)
Passo 2) Quindi crei un frame di dati utilizzando i panda.
Usa date_m come indice per il frame di dati. Ciò significa che a ogni riga verrà assegnato un "nome" o un indice, corrispondente a una data.
Infine, dai un nome alle 4 colonne con le colonne argomento
# Create data with date df = pd.DataFrame(random, index=dates_m, columns=list('ABCD'))
Passo 3) Utilizzando la funzione testa
df.head(3)
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | 1.139433 | 1.318510 | all'0.181334 ottobre | 1.615822 |
2030-02-28 | all'0.081995 ottobre | all'0.063582 ottobre | 0.857751 | all'0.527374 ottobre |
2030-03-31 | all'0.519179 ottobre | 0.080984 | all'1.454334 ottobre | 1.314947 |
Passaggio 4) Utilizzo della funzione coda
df.tail(3)
A | B | C | D | |
---|---|---|---|---|
2030-04-30 | all'0.685448 ottobre | all'0.011736 ottobre | 0.622172 | 0.104993 |
2030-05-31 | all'0.935888 ottobre | all'0.731787 ottobre | all'0.558729 ottobre | 0.768774 |
2030-06-30 | 1.096981 | 0.949180 | all'0.196901 ottobre | all'0.471556 ottobre |
Passaggio 5) Una pratica eccellente per avere un'idea dei dati è utilizzare description(). Fornisce i conteggi, la media, lo std, il minimo, il massimo e il percentile del set di dati.
df.describe()
A | B | C | D | |
---|---|---|---|---|
contare | 6.000000 | 6.000000 | 6.000000 | 6.000000 |
significare | 0.002317 | 0.256928 | all'0.151896 ottobre | 0.467601 |
std | 0.908145 | 0.746939 | 0.834664 | 0.908910 |
verbale | all'0.935888 ottobre | all'0.731787 ottobre | all'1.454334 ottobre | all'0.527374 ottobre |
all'0.643880 ottobre | all'0.050621 ottobre | all'0.468272 ottobre | all'0.327419 ottobre | |
all'0.300587 ottobre | 0.034624 | all'0.189118 ottobre | 0.436883 | |
0.802237 | 0.732131 | 0.421296 | 1.178404 | |
max | 1.139433 | 1.318510 | 0.857751 | 1.615822 |
Suddividere i dati
L'ultimo punto di questo Python Il tutorial di Panda riguarda come tagliare un frame di dati di Panda.
Puoi utilizzare il nome della colonna per estrarre i dati in una colonna particolare, come mostrato nell'esempio Panda di seguito:
## Slice ### Using name df['A'] 2030-01-31 -0.168655 2030-02-28 0.689585 2030-03-31 0.767534 2030-04-30 0.557299 2030-05-31 -1.547836 2030-06-30 0.511551 Freq: M, Name: A, dtype: float64
Per selezionare più colonne, è necessario utilizzare due volte la parentesi, [[..,..]]
La prima coppia di parentesi indica che vuoi selezionare le colonne, la seconda coppia di parentesi indica quali colonne vuoi restituire.
df[['A', 'B']].
A | B | |
---|---|---|
2030-01-31 | all'0.168655 ottobre | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | all'0.940617 ottobre |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | all'1.547836 ottobre | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Puoi tagliare le righe con:
Il codice seguente restituisce le prime tre righe
### using a slice for row df[0:3]
A | B | C | D | |
---|---|---|---|---|
2030-01-31 | all'0.168655 ottobre | 0.587590 | 0.572301 | all'0.031827 ottobre |
2030-02-28 | 0.689585 | 0.998266 | 1.164690 | 0.475975 |
2030-03-31 | 0.767534 | all'0.940617 ottobre | 0.227255 | all'0.341532 ottobre |
La funzione loc è usata per selezionare colonne in base ai nomi. Come al solito, i valori prima della virgola rappresentano le righe e dopo si riferiscono alla colonna. Devi usare le parentesi per selezionare più di una colonna.
## Multi col df.loc[:,['A','B']]
A | B | |
---|---|---|
2030-01-31 | all'0.168655 ottobre | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | all'0.940617 ottobre |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | all'1.547836 ottobre | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Esiste un altro metodo per selezionare più righe e colonne in Panda. È possibile utilizzare iloc[]. Questo metodo utilizza l'indice anziché il nome delle colonne. Il codice seguente restituisce lo stesso frame di dati di cui sopra
df.iloc[:, :2]
A | B | |
---|---|---|
2030-01-31 | all'0.168655 ottobre | 0.587590 |
2030-02-28 | 0.689585 | 0.998266 |
2030-03-31 | 0.767534 | all'0.940617 ottobre |
2030-04-30 | 0.557299 | 0.507350 |
2030-05-31 | all'1.547836 ottobre | 1.276558 |
2030-06-30 | 0.511551 | 1.572085 |
Rilascia una colonna
Puoi eliminare le colonne usando pd.drop()
df.drop(columns=['A', 'C'])
B | D | |
---|---|---|
2030-01-31 | 0.587590 | all'0.031827 ottobre |
2030-02-28 | 0.998266 | 0.475975 |
2030-03-31 | all'0.940617 ottobre | all'0.341532 ottobre |
2030-04-30 | 0.507350 | all'0.296035 ottobre |
2030-05-31 | 1.276558 | 0.523017 |
2030-06-30 | 1.572085 | all'0.594772 ottobre |
Concatenazione
Puoi concatenare due DataFrame in Panda. Puoi usare pd.concat()
Prima di tutto, devi creare due DataFrame. Fin qui tutto bene, hai già familiarità con la creazione di dataframe
import numpy as np df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'], 'Age': ['25', '30', '50']}, index=[0, 1, 2]) df2 = pd.DataFrame({'name': ['Adam', 'Smith' ], 'Age': ['26', '11']}, index=[3, 4])
Infine, concatena i due DataFrame
df_concat = pd.concat([df1,df2]) df_concat
Età | Nome | |
---|---|---|
0 | 25 | John |
1 | 30 | fabbro |
2 | 50 | Paul |
3 | 26 | Adam |
4 | 11 | fabbro |
Drop_duplicates
Se un set di dati può contenere informazioni duplicate sull'uso, `drop_duplicates` è un modo semplice per escludere le righe duplicate. Puoi vedere che "df_concat" ha un'osservazione duplicata, "Smith" appare due volte nella colonna "nome".
df_concat.drop_duplicates('name')
Età | Nome | |
---|---|---|
0 | 25 | John |
1 | 30 | fabbro |
2 | 50 | Paul |
3 | 26 | Adam |
Ordina i valori
Puoi ordinare il valore con sort_values
df_concat.sort_values('Age')
Età | Nome | |
---|---|---|
4 | 11 | fabbro |
0 | 25 | John |
3 | 26 | Adam |
1 | 30 | fabbro |
2 | 50 | Paul |
Rinomina: cambio di indice
Puoi utilizzare la ridenominazione per rinominare una colonna in Pandas. Il primo valore è il nome della colonna corrente e il secondo valore è il nome della nuova colonna.
df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Età_ppl | Cognome | |
---|---|---|
0 | 25 | John |
1 | 30 | fabbro |
2 | 50 | Paul |
3 | 26 | Adam |
4 | 11 | fabbro |
Sintesi
Di seguito è riportato un riepilogo del metodo più utile per la scienza dei dati con Panda
importare dati | leggi_csv |
---|---|
creare serie | Serie |
Crea frame di dati | dataframe |
Crea intervallo di date | DATE_RANGE |
testa di ritorno | capo |
coda di ritorno | coda |
Descrivere | descrivere |
affettare utilizzando il nome | nomedati['nomecolonna'] |
Tagliare utilizzando le righe | nome_dati[0:5] |