SkData es un proyecto nuevo, de 2017, con la finalidad de facilitar el análisis de datos, proviendo funcionalidades como:
La construcción de la librería fue motivada por:
SkData se ha inspirado en funcionalidades de otros softwares como:
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/manipulaciones de los datos, puede facilitar el proceso de análisis sin modificar los datos originales. OpenRefine provee estos recursos y muchas otras funcionalidades para limpieza de datos y otras funcionalidades como reconcilización de datos.
Como ya mencionado, inicialmente skdata tiene 3 objetivos que serán comentados a continuació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:
from skdata import SkData
sd = SkData('filename.h5')
sd.import_from(source='filename.csv')
In [1]:
from skdata import SkData
In [2]:
sd = SkData('/tmp/titanic.h5')
sd.import_from(
source='../data/train.csv',
index_col='PassengerId',
target_col='Survived',
dset_id='train'
)
In [3]:
sd['train'].summary(compute=True)
Out[3]:
In [4]:
sd['train'].computed.head()
Out[4]:
In [5]:
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()
Out[5]:
In [6]:
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)
Out[6]:
In [7]:
sd['train'].computed.head()
Out[7]:
In [8]:
sd['train'].drop_columns(max_na_values=0.1)
sd['train'].summary(compute=True)
Out[8]:
In [9]:
sd['train'].dropna()
sd['train'].summary(compute=True)
Out[9]:
In [10]:
sd['train'].drop_columns(max_unique_values=0.3)
sd['train'].summary(compute=True)
Out[10]: