Importare pandas e numpy
import pandas as pd
importa la libreria pandas |
import numpy as np
importa la libreria numpy |
pd.set_option('max_columns', 300)
limitare il numero di colonne stampate in output:* |
pd.set_option('max_rows', 1000)
limitare il numero di righe stampate in output:* |
Creare una serie
my_data = [10,20,30]
e labels = ['A','B','C'] pd.Series(data=my_data, index=labels)
|
Caricare un file in un dataframe
df=pd.read_csv("file.csv")
Legge un file csv |
parametri aggiuntivi: |
header
specifca la riga da usare come header (int type), nel caso non sia presente: header=None
|
sep=';'
specifica il separatore usato nel file csv |
names=['col1','col2']
esplicita il nome delle colonne del dataframe, utile soprattutto in caso non ci sia header nel file |
parse_dates = ['col1','col2']
lista di interi nomi di colonne da tentare di parsare come data. |
df=pd.read_excel("nomefile.xlsx")
legge un file excel |
Salvare un dataframe in csv
df.to_csv('path/file_name.csv',sep=';', index=False)
salva il dataframe in un file csv (rimuovendo l'indice e usando come sepraratore il ;) |
Esplorare un dataframe
df.shape
restituisce (numero righe, numero colonne) |
df[df.isnull().any(axis=1)]
controlla se ci sono valori nulli |
df.dtypes
restituisce il tipo di variabile di ogni colonna |
df.head()
restituisce le prime (n) righe di un dataframe (default = 5) |
df.tail()
restituisce le ultime (n) righe di un dataframe (default = 5) |
df.columns
restituisce l'elenco delle colonne del dataframe |
df.describe()
restituisce una descrizione del dataframe con le statistiche di base |
Gestire i dati mancanti
df.dropna(axis=0) Elimina le righe con valori null presenti in qualsiasi colonna |
df.dropna(axis=1) Elimina le colonne con valori null |
df.dropna(axis=0, thresh=5) Elimina le righe con almeno 5 valori null presenti in qualsiasi colonna |
df.fillna(value='VALORE NUOVO') Riempi le righe con valori null usando il valore value indicato tra parentesi |
|
|
Reshape dei dati
df.sort_values(by=['col1','col2'])
ordina il dataframe per colonna o array di colonne |
df.sort_values(by='col1',ascending = False)
ordina il dataframe per colonna in ordine discendente |
df.sort_index() ordina l'indice del dataframe |
df.reset_index()
resetta l'indice del dataframe usando l'ordine delle righe, l'indice attuale viene salvato in una nuova colonna |
df.reset_index(name='new name')
assegna il nome alla colonna indice durante la fase di reset |
df.drop(columns=['col1','col2'])
elimina le colonne 'col1' e 'col2' |
df.rename(columns={'old_column : 'new column', 'old_column2 : 'new column2'})
rinomina le colonne (usando un dizionario) |
df.concat([df1,df2])
aggiunge le righe del df2 al df1 |
df.concat([df1,df2], axis=1)
aggiunge le colonne del df2 al df1 |
ricavare un sottoinsieme di un dataframe
per righe |
df[df['colonna1']>n]
seleziona tutte le righe dove nella colonna1 i valori sono maggiori di n |
df.drop_duplicates()
rimuove le righe duplicate |
df.iloc[10:20]
seleziona tutte le righe dalla 10 alla 20 |
df[df['column'].isin(['value1','value2'])]
seleziona tutte le righe dove il valore nella colonna column è uguale a value1 o value2 |
df['column'].unique()
restituisce i valori unici di una colonna |
per colonne |
df['colonna1']
o df.colonna1
seleziona la colonna 1 |
df[['colonna1','colonna2','colonna4']]
Seleziona le colonne 1,2,4 |
df.iloc[10:20, [1,2,5]]
seleziona tutte le righe dalla 10 alla 20 e le colonne in posizione 1,2,5 |
df.loc[:, 'x2':'x4']
seleziona tutte le colonne dalla posizione x2 alla posizione x4 (compresa) |
df.loc[df['a']>10,['a','c']]
seleziona le colonne 'a' e 'c' dove il valore di a è maggiore di 10 |
Varie
df.columns restituisce l'elenco delle colonne |
del df['col_1'] elimina una colonna |
|
|
Riassumere i dati
len(df) number of rows in a dataframe |
df['column1'].nunique() numero di valori unici in una colonna |
df['column1'].sum() somma dei valori di una colonna |
df['column1'].min() minimo dei valori di una colonna |
df['column1'].max() massimo dei valori di una colonna |
df['column1'].mean() media dei valori di una colonna |
df['column1'].var() varianza dei valori di una colonna |
df['column1'].std() deviazione standard dei valori di una colonna |
df['column1'].count() count dei valori non nulli di una colonna |
df['column1'].median() mediana dei valori di una colonna |
df['column1'].quantile([.25,.75]) quantile dei valori di una colonna |
df['column1'].value_count() count di ogni valore di una colonna |
Gestione oggetti di tipo datetime
df['Data']=pd.to_datetime(df['Data'])
converte stringhe in oggetti datetime |
df['Data'].dt.round('1s')
arrotonda la data al secondo |
df['Duration']=(df['Data2']-df['Data1']).dt.seconds
Calcola la differenza tra due date restituendo un risultato in seocndi |
df['Data'].dt.date
estrae solo la data da data ora |
df['Data'].dt.month
estrae il mese |
df['Data'].dt.week
estrae la settimana dell'anno |
df['Data'].dt.weekday
estrae il giorno della settimana |
df['Data'].dt.weekday_name
estrae il giorno della settimana (come nome) |
df['Data'].dt.time
estrae l'ora completa |
df['Data'].dt.hour
estrae l'ora |
df['Stagione']=pd.cut( (df['Data'].dt.dayofyear + 11) % 366, [0, 91, 183, 275, 366], labels=['inverno', 'primavera', 'estate', 'autunno'] )
crea una colonna con la corrispondente stagione |
Crea ed elimina colonne/righe
df['new_column'] = df['col_1'] + df['col_2']
crea una nuova colonna somma di due colonne |
df = df.drop('col_1', axis=1)
elimina la colonna col_1 |
df = df.drop(0, axis=0)
elimina la riga con indice 0 |
|