language: python
import pandas as pd
import re
1) Leer (prueba separadores si no está claro)
df = pd.read_csv("datos.csv", sep=',', encoding='utf-8', dtype=str)
2) Normalizar columnas: quitar espacios alrededor y convertir NaN
df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)
3) Limpiar columnas específicas con regex (quitar comillas y espacios interiores)
cols_to_clean = ['email', 'telefono', 'codigo']
for c in cols_to_clean:
if c in df.columns:
df[c] = df[c].replace(r'"|\s+', '', regex=True).replace('', pd.NA)
4) Validar emails simples
email_re = re.compile(r'^[^@ \t\r\n]+@[^@ \t\r\n]+.[^@ \t\r\n]+$')
if 'email' in df.columns:
df['email_ok'] = df['email'].fillna('').apply(lambda v: bool(email_re.match(v)))
df = df[df['email_ok']].drop(columns=['email_ok'])
5) Eliminar duplicados (definir clave)
df = df.drop_duplicates(subset=['email'], keep='first') # o ['nombre','telefono'] etc.
6) Guardar resultado
df.to_csv("datos_limpios.csv", index=False, encoding='utf-8')
language: python
import pandas as pd
import re
1) Leer (prueba separadores si no está claro)
df = pd.read_csv("datos.csv", sep=',', encoding='utf-8', dtype=str)
2) Normalizar columnas: quitar espacios alrededor y convertir NaN
df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x)
3) Limpiar columnas específicas con regex (quitar comillas y espacios interiores)
cols_to_clean = ['email', 'telefono', 'codigo']
for c in cols_to_clean:
if c in df.columns:
df[c] = df[c].replace(r'"|\s+', '', regex=True).replace('', pd.NA)
4) Validar emails simples
email_re = re.compile(r'^[^@ \t\r\n]+@[^@ \t\r\n]+.[^@ \t\r\n]+$')
if 'email' in df.columns:
df['email_ok'] = df['email'].fillna('').apply(lambda v: bool(email_re.match(v)))
df = df[df['email_ok']].drop(columns=['email_ok'])
5) Eliminar duplicados (definir clave)
df = df.drop_duplicates(subset=['email'], keep='first') # o ['nombre','telefono'] etc.
6) Guardar resultado
df.to_csv("datos_limpios.csv", index=False, encoding='utf-8')