In [1]:
from data_cleaner import DataCleaner
import pandas as pd

In [2]:
#input_path = "contratos_vigentes_2015.csv"
#output_path = "clear_contratos_vigentes_2015.csv"

input_path = "contratos-concatenados-raw.csv"
output_path = "contratos-hasta-2015-clean.csv"

In [3]:
dc = DataCleaner(input_path, encoding="utf-8")


/usr/local/lib/python2.7/dist-packages/IPython/core/interactiveshell.py:3006: DtypeWarning: Columns (16) have mixed types. Specify dtype option on import or set low_memory=False.
  if self.run_code(code, result):
/usr/local/lib/python2.7/dist-packages/unidecode/__init__.py:46: RuntimeWarning: Argument <type 'str'> is not an unicode object. Passing an encoded string will likely have unexpected results.
  _warn_if_not_unicode(string)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Unnamed: 0" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "unnamed_0".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Alta_Fecha" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "alta_fecha".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Apellido" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "apellido".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Cuit" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "cuit".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Dedicacion" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "dedicacion".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Desde" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "desde".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Estudios" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "estudios".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Financiacion" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "financiacion".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Hasta" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "hasta".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "ID_Unico" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "id_unico".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Locacion" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "locacion".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Mod_Fecha" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "mod_fecha".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Nacimiento" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "nacimiento".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Nivel_Grado" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "nivel_grado".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Nombre" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "nombre".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Nombre_Organismo" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "nombre_organismo".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Requiere Excepcion" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "requiere_excepcion".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Sexo" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "sexo".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)
/home/mec/MEGAsync/repo/data-cleaner/data_cleaner/data_cleaner.py:124: UserWarning: 

El campo "Titulo" no sigue las convenciones para escribir
campos (sólo se admiten caracteres alfanuméricos ASCII en
minúsculas, con palabras separadas por "_"). DataCleaner
normaliza automáticamente los campos en estos casos, lo
que puede llevar a resultados inesperados.

El nuevo nombre del campo normalizado es: "titulo".
Método que llamó al normalizador de campos: __init__

  warnings.warn(msg)

In [5]:
dc.df.columns


Out[5]:
Index([u'unnamed_0', u'alta_fecha', u'apellido', u'cuit', u'dedicacion',
       u'desde', u'estudios', u'financiacion', u'hasta', u'id_unico',
       u'locacion', u'mod_fecha', u'nacimiento', u'nivel_grado', u'nombre',
       u'nombre_organismo', u'requiere_excepcion', u'sexo', u'titulo'],
      dtype='object')

In [4]:
rules = [
    
#     {
#         "nombre_propio": [
#             {"field": "financiacion"},
#             {"field": "nombre_organismo"},
#             {"field": "apellido"},
#             {"field": "nombre"},
#         ]
#     },
    {
        "fecha_simple": [
#            {"field": "desde", "time_format": "YYYY-MM-DD"},
#            {"field": "hasta", "time_format": "YYYY-MM-DD"},
            {"field": "alta_fecha", "time_format": "YYYY/MM/DD"},
            {"field": "mod_fecha", "time_format": "YYYY/MM/DD"},
        ]
    },
    
        {"reemplazar": [
            {
            "field": "locacion",
            "replacements": {"Servicios": ["Serv"]}
            }
        ]
    },
    
     {"renombrar_columnas": [
        {"field": "alta_fecha", "new_field": "fecha_alta_registro_rcpc"},
        {"field": "mod_fecha", "new_field": "fecha_modificacion_registro_rcpc"}
    ]},
    
    {"remover_columnas": [
        {"field": "estudios"},
        {"field": "titulo"},
        {"field": "nivel_grado"},
        {"field": "id_unico"},
        {"field": "nacimiento"}
    ]}
]

In [5]:
dc.clean(rules)

In [8]:
y = 2015
dc.df.hasta = pd.to_datetime(dc.df.hasta,yearfirst=True)
dc.df.desde = pd.to_datetime(dc.df.desde,yearfirst=True)
gii = dc.df.desde.dt.year == y
gif = dc.df.hasta.dt.year == y
gis = (dc.df.desde.dt.year < y) & (dc.df.hasta.dt.year > y)
givig = gii | gif | gis
df1 = dc.df[givig]

In [10]:
y = 2015
dc.df.hasta = pd.to_datetime(dc.df.hasta,yearfirst=True)
dc.df.desde = pd.to_datetime(dc.df.desde,yearfirst=True)
gii = dc.df.desde.dt.year == y
gif = dc.df.hasta.dt.year == y
gis = (dc.df.desde.dt.year < y) & (dc.df.hasta.dt.year > y)
givig = gii | gif | gis
df1 = dc.df[givig]
gin2016 = dc.df.desde.dt.year == 2016
df2 = dc.df[~gin2016]
df1.set_index(df1.columns[0]).to_csv(
    DEFAULT_OUTPUT_PATH_VIGENTE, encoding=self.OUTPUT_ENCODING,
    separator=self.OUTPUT_SEPARATOR,
    quotechar=self.OUTPUT_QUOTECHAR)
df2.set_index(df2.columns[0]).to_csv(
    DEFAULT_OUTPUT_PATH1_HISTORICO, encoding=self.OUTPUT_ENCODING,
    separator=self.OUTPUT_SEPARATOR,
    quotechar=self.OUTPUT_QUOTECHAR)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-10-c3a93b7ccce3> in <module>()
     10 df2 = dc.df[~gin2016]
     11 df1.set_index(df1.columns[0]).to_csv(
---> 12     DEFAULT_OUTPUT_PATH_VIGENTE, encoding=self.OUTPUT_ENCODING,
     13     separator=self.OUTPUT_SEPARATOR,
     14     quotechar=self.OUTPUT_QUOTECHAR)

NameError: name 'DEFAULT_OUTPUT_PATH_VIGENTE' is not defined

In [ ]: