<jupyter_start><jupyter_text>Table of Contents1&nbsp;&nbsp;SkData1.1&nbsp;&nbsp;Motivaciones1.2&nbsp;&nbsp;Inspiraciones1.3&nbsp;&nbsp;Objetivos1.3.1&nbsp;&nbsp;Limpieza de datos1.3.2&nbsp;&nbsp;Reproducibilidad1.3.3&nbsp;&nbsp;Visualización de datos1.4&nbsp;&nbsp;Aplicación1.4.1&nbsp;&nbsp;Importing data1.4.2&nbsp;&nbsp;Data preparing and cleaning  SkData SkData es un proyecto nuevo, de 2017, con la finalidad de facilitar el análisis de datos, proviendo funcionalidades como:- limpieza de datos;- reproducibilidad de la manipulación/tratamiento de los datos;- visualización de datos;  Motivaciones La construcción de la librería fue motivada por:- exceso de boilerplate en el análisis de datos;- el uso de librerías como pandas, matplotlib, scipy, etc pueden ser difícil en un principio para no programadores;- en un escenario dónde la demanda es mayor que los recursos (personas, tiempo, etc) tener mecanismo que pueden agilizar en proceso de análisis de datos es fundamental.  Inspiraciones SkData se ha inspirado en funcionalidades de otros softwares como:- weka (http://www.cs.waikato.ac.nz/ml/weka/)- openrefine (http://openrefine.org/)Las visualizaciones gráficas en weka permiten de manera fácil entender las relaciones entre los atributos del conjunto de datos. El entendimiento previo de estas relaciones ayuda a determinar los pasos siguientes en el análisis de datos. Mientras que, generalmente, la programación de visualización de datos consume un poco de tiempo, tener un medio de hacerlo de manera automática, sin o con muy poco código, facilitaría mucho en el análisis de datos.La limpieza/tratamiento de los datos pueden ser una tarea que consume mucho tiempo y, muchas veces, el proceso se repite en el análisis de distintos conjunto de datos. A parte de eso, tener el control de los pasos/manipulacionesde los datos, puede facilitar el proceso de análisis sin modificar los datosoriginales. OpenRefine provee estos recursos y muchas otras funcionalidadespara limpieza de datos y otras funcionalidades como reconcilización de datos.  Objetivos Como ya mencionado, inicialmente skdata tiene 3 objetivos que serán comentados a continuación.  Limpieza de datos  Reproducibilidad  Visualización de datos  Aplicación SkData provide a data class to structure and organize the preprocessing data.The data is stored in **hdf5** format. The original data is kept and all steps of preprocessing is kept to and applied on demand. To import data from *csv* source:```pythonfrom skdata import SkDatasd = SkData('filename.h5')sd.import_from(source='filename.csv')```<jupyter_code>from skdata import SkData<jupyter_output><empty_output><jupyter_text>Importing data<jupyter_code>sd = SkData('/tmp/titanic.h5')

sd.import_from(
    source='../data/train.csv', 
    index_col='PassengerId',
    target_col='Survived',
    dset_id='train'
)
sd['train'].summary(compute=True)
sd['train'].computed.head()<jupyter_output><empty_output><jupyter_text>Data preparing and cleaning<jupyter_code>sd['train']['Sex'].replace({'male': 'Male', 'female': 'Female'})
sd['train']['Embarked'].replace({
    'C': 'Cherbourg', 'Q': 'Queenstown', 'S': 'Southampton'
})

sd['train'].compute()
sd['train'].computed.head()
survived_dict = {0: 'Died', 1: 'Survived'}
pclass_dict = {1: 'Upper Class', 2: 'Middle Class', 3: 'Lower Class'}

sd['train']['Pclass'].categorize(categories=pclass_dict)
sd['train']['Survived'].categorize(categories=survived_dict)
sd['train']['Sex'].categorize()
sd['train']['Embarked'].categorize()

sd['train'].summary(compute=True)
sd['train'].computed.head()
sd['train'].drop_columns(max_na_values=0.1)
sd['train'].summary(compute=True)
sd['train'].dropna()
sd['train'].summary(compute=True)
sd['train'].drop_columns(max_unique_values=0.3)
sd['train'].summary(compute=True)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11178168459721857, 'fraction_numerical': 0.010758331146680662, 'mean_word_length': 6.5936254980079685, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '113684', 'license': 'MIT', 'n_tokens_mistral': 1273, 'n_tokens_neox': 1249, 'n_words': 379, 'path': 'notebooks/SkData-SciPyLA2017-Propose.ipynb', 'repo_name': 'xmnlab/vizpydata', 'size': '3811'}