Referencia de la API

data_cleaner.data_cleaner module

Cleaner de CSVs a partir de reglas de limpieza.

La clase DataCleaner permite limpiar archivos CSVs con datos a partir de la aplicación de reglas de limpieza.

class data_cleaner.data_cleaner.DataCleaner(input_path, encoding=None, sep=None, ignore_dups=False, quotechar=None)[fuente]

Clases base: object

Crea un objeto DataCleaner cargando un CSV en un DataFrame y expone reglas de limpieza para operar sobre las columnas del objeto y retornar un CSV limplio.

DEFAULT_SUFIX = u'normalizado'
INPUT_DEFAULT_ENCODING = 'utf-8'
INPUT_DEFAULT_QUOTECHAR = '"'
INPUT_DEFAULT_SEPARATOR = ','
OUTPUT_ENCODING = 'utf-8'
OUTPUT_QUOTECHAR = '"'
OUTPUT_SEPARATOR = ','
clean(rules)[fuente]

Aplica las reglas de limpieza al objeto en memoria.

Parámetros:rules (list) – Lista de reglas de limpieza.
clean_file(rules, output_path)[fuente]

Aplica las reglas de limpieza y guarda los datos en un csv.

Parámetros:rules (list) – Lista de reglas de limpieza.
fecha_completa(field, time_format, keep_original=False, inplace=False)[fuente]

Regla para fechas completas que están en un sólo campo.

Parámetros:
  • field (str) – Campo a limpiar.
  • time_format (str) – Formato temporal del campo.
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

fecha_separada(fields, new_field_name, keep_original=True, inplace=False)[fuente]

Regla para fechas completas que están separadas en varios campos.

Parámetros:
  • field (str) – Campo a limpiar.
  • new_field_name (str) – Sufijo para construir nombre del nuevo field.
Devuelve:

Serie de strings limpios.

Tipo del valor devuelto:
 

pandas.Series

fecha_simple(field, time_format, keep_original=False, inplace=False)[fuente]

Regla para fechas sin hora, sin día o sin mes.

Parámetros:
  • field (str) – Campo a limpiar.
  • time_format (str) – Formato temporal del campo.
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

mail_format(field, sufix=None, keep_original=False, inplace=False)[fuente]

Regla para dar formato a las direcciones de correo electronico.

Lleva todas las cadenas a minusculas y luego si hay varias las separa por comas.

Parámetros:field (str) – Campo a limpiar
Devuelve:Serie de strings limpios
Tipo del valor devuelto:
 pandas.Series
nombre_propio(field, sufix=None, lower_words=None, keep_original=False, inplace=False)[fuente]

Regla para todos los nombres propios.

Capitaliza los nombres de países, ciudades, personas, instituciones y similares.

Parámetros:field (str) – Campo a limpiar
Devuelve:Serie de strings limpios
Tipo del valor devuelto:
 pandas.Series
reemplazar(field, replacements, sufix=None, keep_original=False, inplace=False)[fuente]

Reemplaza listas de valores por un nuevo valor.

Parámetros:
  • field (str) – Campo a limpiar
  • replacements (dict) – {“new_value”: [“old_value1”, “old_value2”]}
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

reemplazar_string(field, replacements, sufix=None, keep_original=False, inplace=False)[fuente]
Reemplaza listas de strings por un nuevo string.
A diferencias de la funcion reemplazar hace reemplazos parciales.
Parámetros:
  • field (str) – Campo a limpiar
  • replacements (dict) – {“new_value”: [“old_value1”, “old_value2”]}
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

remover_columnas(field, inplace=False)[fuente]

Remueve columnas.

Parámetros:field (str) – Campo a limpiar
Devuelve:Data frame con las columnas removidas.
Tipo del valor devuelto:
 pandas.DataFrame
renombrar_columnas(field, new_field, inplace=False)[fuente]

Renombra una columna.

Parámetros:
  • field (str) – Campo a renombrar.
  • field – Nuevo nombre
Devuelve:

Data frame con las columnas renombradas.

Tipo del valor devuelto:
 

pandas.DataFrame

save(output_path)[fuente]

Guarda los datos en un nuevo CSV con formato estándar.

El CSV se guarda codificado en UTF-8, separado con ”,” y usando ‘”’ comillas dobles como caracter de enclosing.

string(field, sufix=None, sort_tokens=False, remove_duplicates=False, keep_original=False, inplace=False)[fuente]

Regla para todos los strings.

Aplica un algoritimo de clustering para normalizar strings que son demasiado parecidos, sin pérdida de información.

Parámetros:field (str) – Campo a limpiar.
Devuelve:Serie de strings limpios.
Tipo del valor devuelto:
 pandas.Series
string_peg_split(field, grammar, new_field_names, keep_original=True, inplace=False)[fuente]

Regla para separar un campo a partir parsing expression grammars.

Parámetros:
  • field (str) – Campo a limpiar.
  • grammar (str) – Reglas para compilar una PEG.
  • new_field_names (list) – Sufijos de los nuevos campos para los valores separados.
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

string_regex_split(field, pattern, new_field_names, keep_original=True, inplace=False)[fuente]

Regla para separar un campo a partir de una expresión regular.

TODO!!! Falta implementar este método.

Parámetros:
  • field (str) – Campo a limpiar.
  • pattern (str) – Expresión regular.
  • new_field_names (list) – Sufijos de los nuevos campos para los valores separados.
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

string_regex_substitute(field, regex_str_match, regex_str_sub, sufix=None, keep_original=True, inplace=False)[fuente]

Regla para manipular y reeemplazar datos de un campo con regex.

Parámetros:
  • field (str) – Campo a limpiar.
  • regex_str_match (str) – Expresion regular a buscar
  • regex_str_sub (str) – Expresion regular para el reemplazo.
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

string_simple_split(field, separators, new_field_names, keep_original=True, inplace=False)[fuente]

Regla para separar un campo a partir de separadores simples.

Parámetros:
  • field (str) – Campo a limpiar
  • separators (list) – Strings separadores.
  • new_field_names (list) – Sufijos de los nuevos campos para los valores separados.
Devuelve:

Serie de strings limpios

Tipo del valor devuelto:
 

pandas.Series

exception data_cleaner.data_cleaner.DuplicatedField(value)[fuente]

Clases base: exceptions.ValueError

Salta cuando hay un campo duplicado en el dataset.

data_cleaner.capitalizer module

Nomalizacion de strings.

data_cleaner.capitalizer.capitalize(string, sep=None, encoding='utf-8', lower_words=None)[fuente]

Capitaliza una string que puede estar compuesta por varias palabras

Parámetros:
  • string (str) – Palabra
  • sep (str) – Separador
Devuelve:

String normalizada

Tipo del valor devuelto:
 

str

data_cleaner.capitalizer.normalize_word(word, lower_words=None)[fuente]

Normaliza una palabra, capitalizándola cuando corresponde.

Si contiene signos de puntacion se capitaliza dentro de esas strings.

Parámetros:word (str) – Palabra
Devuelve:Palabra normalizada
Tipo del valor devuelto:
 str

data_cleaner.fingerprint_keyer module

Implementa funciones para clusterizar strings.

Utiliza el algoritmo Key Collision: Fingerprint.

data_cleaner.fingerprint_keyer.fingerprint_keyer(key_string, sort_tokens=False, remove_duplicates=False)[fuente]

Convierte un string en su fingerprint key representation.

Parámetros:key_string (str) – String para convertir en fingerprint key.
Devuelve:Fingerprint correspondiente al input.
Tipo del valor devuelto:
 str
data_cleaner.fingerprint_keyer.get_best_replacements(clusters, counts)[fuente]

Selecciona los strings más utilizados por cluster.

Itera por cada cluster para determinar la mejor string para reemplazar las strings originales. De momento solo utiliza un conteo simple pero podria agregarse algun criterio basado en la capitalizacion de las palabras

Parámetros:
  • clusters (dict) – {fingerprint: [raw_string_1, raw_string_2]}
  • counts (dict) – {raw_string: cant_veces_utilizada}
Devuelve:

{fingerprint: string_mas_usada_para_esa_fingerprint}

Tipo del valor devuelto:
 

dict

data_cleaner.fingerprint_keyer.group_fingerprint_strings(raw_strs, sort_tokens=False, remove_duplicates=False)[fuente]

Clusteriza un conjunto de strings, según sus fingerprints.

Parámetros:raw_strs (list) – Lista de strings sin procesar.
Devuelve:
En el primer dict las keys son los fingerprints y los
valores las strings originales. En el segundo las keys son las strings sin normalizar y los valores el conteo de la cantidad de veces que aparecen.
Tipo del valor devuelto:
 (dict, dict)
data_cleaner.fingerprint_keyer.replace_by_key(replacements, raw_strs)[fuente]

Reemplaza strings por sus mejores equivalentes.