Python
Tema 4 · Pandas
Introducció
Pandas és la biblioteca de referència per manipular i analitzar dades tabulades en Python. Les seves estructures principals, Series i DataFrame, permeten carregar fitxers CSV, netejar dades, filtrar, agrupar i fer càlculs estadístics de manera senzilla i eficient. En farmacologia computacional, Pandas és ideal per gestionar grans conjunts de compostos químics.
Objectius
- Crear DataFrames a partir de diccionaris o fitxers CSV
- Explorar dades amb
head(),info(),describe() - Filtrar files segons condicions
- Fer agrupacions (
groupby) i agregacions - Exportar resultats a CSV
Càrrega i exploració de dades
Exemple amb dades de fàrmacs:
import pandas as pd
# Crear un DataFrame des d'un diccionari
dades = {
'farmac': ['Ibuprofè', 'Paracetamol', 'Amoxicil·lina', 'Omeprazol'],
'pes_molecular': [206.3, 151.2, 365.4, 345.4],
'logP': [3.5, 0.5, 0.9, 2.2],
'dosi_mg': [400, 500, 250, 20]
}
df = pd.DataFrame(dades)
print(df.head())
print("\nEstadístiques bàsiques:")
print(df.describe())
Filtratge i noves columnes
# Carregar un CSV (exemple: dataset de molècules)
# df = pd.read_csv("molecules.csv")
# Filtrar compostos amb pes molecular < 500 Da
df_petits = df[df['pes_molecular'] < 500]
print(f"Compostos amb MW < 500: {len(df_petits)}")
# Crear una nova columna amb la dosi ajustada
df['dosi_ajustada'] = df['dosi_mg'] * 0.8
print(df[['farmac', 'dosi_mg', 'dosi_ajustada']])
Agrupacions i agregacions
Agrupar per categories i calcular estadístiques:
# Afegir una columna de categoria
df['categoria'] = ['AINE', 'Analgèsic', 'Antibiòtic', 'Antiàcid']
# Agrupar per categoria i calcular mitjanes
resum = df.groupby('categoria').agg({
'pes_molecular': 'mean',
'dosi_mg': ['min', 'max']
})
print(resum)
Exercicis
- Crea un DataFrame amb 10 medicaments, les seves dosis i el preu. Calcula el preu per mg de cada un.
- Carrega un fitxer CSV de pacients (nom, edat, glucosa) i filtra els que tenen glucosa > 110 mg/dL.
- Agrupa per tipus de fàrmac i calcula la mitjana de pes molecular i la desviació estàndard.
Mini Projecte – Biblioteca molecular amb Pandas
Processa un dataset de compostos amb les següents tasques:
- Carrega un fitxer CSV amb almenys 50 molècules (columnes:
id,nom,MW,LogP,HBD,HBA). - Mostra les primeres 10 files i les estadístiques generals.
- Filtra els compostos que compleixen la regla de Lipinski (MW ≤ 500, LogP ≤ 5, HBD ≤ 5, HBA ≤ 10) i guarda el resultat en un nou DataFrame.
- Afegeix una columna amb el percentatge de compliment de Lipinski per a cada molècula.
- Exporta el DataFrame filtrat a un fitxer
compostos_lipinski.csv.