Pandas est la bibliothèque incontournable pour manipuler des données tabulaires en Python. Vous allez l'utiliser 80% du temps dans vos projets data.
import pandas as pd
df = pd.read_csv('ventes.csv', sep=';', encoding='utf-8')
df = pd.read_excel('data.xlsx', sheet_name='Janvier')
df = pd.read_json('api_response.json')
df = pd.read_sql('SELECT * FROM commandes', conn)
df = pd.read_parquet('gros_dataset.parquet') # ultra-rapide
df.head(10) # 10 premières lignes df.tail() # 5 dernières lignes df.info() # types + valeurs manquantes df.describe() # stats : mean, std, min, max, quartiles df.shape # (n_lignes, n_colonnes) df.dtypes # type de chaque colonne df.columns # liste des colonnes
# Par label (nom de colonne/index) df.loc[0, 'prix'] df.loc[df['region'] == 'Centre', ['produit', 'prix']] # Par position numérique df.iloc[0:5, 1:3] # 5 premières lignes, colonnes 1 à 2 # Filtres conditionnels df[df['prix'] > 10000] df[(df['region'] == 'Littoral') & (df['prix'] > 5000)] df[df['produit'].isin(['Riz', 'Maïs'])]
& et | (pas and/or) pour combiner des conditions sur DataFrame, et entourez chaque condition de parenthèses.
# Total ventes par région
df.groupby('region')['prix'].sum()
# Plusieurs agrégations
df.groupby('region').agg({
'prix': ['sum', 'mean', 'count'],
'quantite': 'sum'
})
# Transform : appliquer puis aligner sur df original
df['pct_region'] = df['prix'] / df.groupby('region')['prix'].transform('sum')
# Jointure SQL-like (inner, left, right, outer) ventes_clients = pd.merge(ventes, clients, on='client_id', how='left') # Concaténer (empiler) plusieurs DataFrames all_data = pd.concat([df_janv, df_fevr, df_mars], ignore_index=True)
pivot = df.pivot_table(
index='region',
columns='produit',
values='prix',
aggfunc='sum'
)
df.isnull().sum() # combien de NaN par colonne ? df['prix'].fillna(df['prix'].median(), inplace=True) df.dropna(subset=['email']) # supprimer lignes sans email df.drop_duplicates(subset=['client_id'], keep='last') # Parser des dates df['date'] = pd.to_datetime(df['date']) df['mois'] = df['date'].dt.month
df = df.set_index('date')
df.resample('M')['ventes'].sum() # total par mois
df['ventes'].rolling(window=7).mean() # moyenne mobile 7 jours
df.to_csv('propre.csv', index=False, encoding='utf-8')
df.to_excel('rapport.xlsx', sheet_name='Resultats')
df.to_parquet('data.parquet') # 10x plus petit, 5x plus rapide