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:

Panda DataFrame

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]