Pour faciliter les tâches en Data Science et surtout Data Préparation, ce cheatsheet sur le langage Python et la librairie Pandas regroupe différentes fonctions et méthodes permettant de traiter les données.
Installation
Pour utiliser la librairie Pandas, il est necessaire de l'installer au préalable avec la commande PIP
pip install pandas
Dans le cas d'une utilisation de python à travers un proxy, il est necessaire d'ajouter l'option suivante :
pip install pandas --proxy http://votreproxy.extention:port
Par convention, lors de l'import, on déclarera l'alias "pd" pour la librairie Pandas.
import pandas as pd
Syntaxe
Pandas utilise des Dataframe qui sont des tableaux (tables en SQL). Par convention, un DataFrame est socké dans une variable nommée "df".
df = pd.DataFrame( {"First" : [245 , 247, 42], "Last" : ['Mark', 'Jacob', 'Larry'], "Handle" : ['@mdo', '@fat', '@twitter']}, index = [1, 2, 3])
Ce code crée un tableau tel que :
# | First | Last | Handle |
---|---|---|---|
1 | 245 | Mark | @mdo |
2 | 247 | Jacob | @fat |
3 | 42 | Larry |
Les lignes
Ajouter une nouvelle ligne à un dataframe existant
df = df.append({ 'First': 4, 'Last': 'Pierre', 'Handle': '@new' }, ignore_index=True)
Supprimer une ligne d'un dataframe existant par rapport à l'index
df = df.drop([3])
Supprimer des lignes d'un dataframe existant par rapport à l'index
df = df.drop([0,2])
Itérer sur les lignes d'un dataframe
for index, row in df.iterrows(): print(row['c1'], row['c2'])
Les fichiers I/O
Lire et écrire un csv
df = pd.read_csv('cheminFichier.csv', encoding="utf-8", sep=';', header=None) df.to_csv('cheminFichierSortie.csv', encoding="utf-8", sep=';', header=None, index=False)
Lire et écrire un fichier Excel (vous aurez besoin de la librairie xlwt pour écrire un fichier XLS)
df = pd.read_excel('cheminFichier.xls', sheetname=0, index_col=0) # pip install xlwt df.to_excel('cheminFichier.xls', sheet_name='nomFeuille', index=False)
Itérer sur plusieurs feuilles Excel
xlsx = pd.ExcelFile(excel_file) sheets_value = [] for sheet in xlsx.sheet_names: sheets_value.append(xlsx.parse(sheet)) df = pd.concat(sheets_value)
Filtrer un Dataframe
Filtrer les lignes par rapport au contenu d'une colonne (équivalent de la clause where en SQL)
# opérateurs classiques df = df[df['nomColonne'] == 1234] df = df[df['nomColonne'] >= 1234] df = df[df['nomColonne'] <= 1234] df = df[df['nomColonne'] > 1234] df = df[df['nomColonne'] < 1234] # négation avec la tilde df = df[~df['nomColonne'] == 1234] # conditions multiples df = df[df['nomColonne'] == 1234 | df['nomColonne'] == 4321] df = df[df['nomColonne'] == 1234 & df['nomColonne'] == 4321]
Filtres textes avancés
df = df[df['nomColonne'].str.contains('texte')]
Modifier un Dataframe
Réaliser un substring d'une colonne vers une nouvelle colonne
df['nouvelle_colonne'] = df.ancienne_colonne.str.slice(0,4)
Renommer des colonnes
df = df.rename(columns={'old_name_1': 'new_name_1', 'old_name_2': 'new_name_2'}, inplace=True)
Effectuer un select SQL vers un Dataframe Pandas
PostgreSQL vers un Dataframe Pandas
import psycopg2 as pg import pandas as pd conn = pg.connect("host=ADRESSE_HOST dbname=NOM_BASE user=UTILISATEUR password=MOT_DE_PASSE") df = pd.read_sql_query('REQUETE SQL', conn)