Está en la página 1de 5

4/12/2020 Limpieza_datos.

ipynb - Colaboratory

from google.colab import drive


drive.mount('/content/drive')

#Importar las librerias a emplear


import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from pandas_profiling import ProfileReport
%matplotlib inline

#Lectura del Archivo desde la ubicación local o en Drive


file = r"/content/drive/My Drive/Colab Notebooks/Clientes_Segmentar_Errado.txt"
df_raw = pd.read_csv(file,delimiter=" ")
#Obtener los primeros 5 datos del dataframe creado (df_raw)
df_raw.head()

#Crear los headers del dataframe


df_raw_headers=pd.DataFrame(data=df_raw.values,columns=['id','ingresos','egresos','activos
df_raw_headers.head()

id ingresos egresos activos pasivos vol_trans a_econ edad anos_afili ge

0 2 5593385 1185000 43000000 14000000 1678015 A2 26 1,8

1 3 NaN 730000 123000000 20000000 540000 A2 28 0,4

2 4 3474000 1300000 52000000 10000000 1042200 A2 24 NaN

3 5 5421293 825000 75000000 500000 1626387 A2 30 1,3

4 6 6426250 1500000 350000000 9000000 1927875 A2 60 21,9

#Profiling para el dataframe(df_raw_headers)


profile = ProfileReport(df_raw_headers)
profile.to_file("Report_Datos_Errados.html")

https://colab.research.google.com/drive/12SiAFFDJFCQUvPvl510oCrBfanUOUpzw?usp=sharing#scrollTo=wY_dQnJJwidq&printMode=true 1/5
4/12/2020 Limpieza_datos.ipynb - Colaboratory

Summarize dataset: 31/31 [00:16<00:00, 1.88it/s,

100% Completed]

#Visualizar
Generate el tipo
report de dato
structure: 100%que se encuentra en cada columna 1/1 [00:08<00:00, 8.58s/it]
df_raw_headers.info()

Render HTML:
<class 100%
'pandas.core.frame.DataFrame'> 1/1 [00:01<00:00, 1.80s/it]
RangeIndex: 6999 entries, 0 to 6998
Data columns (total 17 columns):
Export
# report to file: 100% Non-Null Count Dtype
Column 1/1 [00:00<00:00, 16.03it/s]
--- ------ -------------- -----
0 id 6999 non-null object
1 ingresos 6069 non-null object
2 egresos 6999 non-null object
3 activos 6082 non-null object
4 pasivos 6090 non-null object
5 vol_trans 6999 non-null object
6 a_econ 6074 non-null object
7 edad 6999 non-null object
8 anos_afili 6079 non-null object
9 genero 6348 non-null object
10 estado_civil 6999 non-null object
11 ocupacion 6999 non-null object
12 nivel_estudio 6999 non-null object
13 tipo_vivienda 6999 non-null object
14 estrato 6078 non-null object
15 num_hijos 6999 non-null object
16 personas_cargo 6999 non-null object
dtypes: object(17)
memory usage: 929.7+ KB

#Emplear transformación de dato a numerico


df_raw_headers['id']=pd.to_numeric(df_raw_headers['id'])
df_raw_headers['ingresos'] = df_raw_headers['ingresos'].str.replace(',', '').astype(int)
df_raw_headers['egresos']=pd.to_numeric(df_raw_headers['egresos'])
df_raw_headers['activos'] = df_raw_headers['activos'].str.replace(',', '').astype(int)
df_raw_headers['pasivos'] = df_raw_headers['pasivos'].str.replace(',', '').astype(int)
df_raw_headers['vol_trans']=pd.to_numeric(df_raw_headers['vol_trans'])
df_raw_headers['edad']=pd.to_numeric(df_raw_headers['edad'])
df_raw_headers['num_hijos']=pd.to_numeric(df_raw_headers['num_hijos'])
df_raw_headers['personas_cargo']=pd.to_numeric(df_raw_headers['personas_cargo'])

#Eliminar los NaN en el dataframe para variables numéricas


df_raw_headers['ingresos'].replace(np.nan, 0, inplace=True)
df_raw_headers['activos'].replace(np.nan, 0, inplace=True)
df_raw_headers['pasivos'].replace(np.nan, 0, inplace=True)
#Eliminar los NaN en el dataframe para variables categoricas
df_raw_headers['a_econ'].replace(np.nan, 'NINGUNO', inplace=True)
df_raw_headers['anos_afili'].replace(np.nan, 'NINGUNO', inplace=True)
df_raw_headers['genero'].replace(np.nan, 'NINGUNO', inplace=True)
df_raw_headers['estrato'].replace(np.nan, 'NINGUNO', inplace=True)
https://colab.research.google.com/drive/12SiAFFDJFCQUvPvl510oCrBfanUOUpzw?usp=sharing#scrollTo=wY_dQnJJwidq&printMode=true 2/5
4/12/2020 Limpieza_datos.ipynb - Colaboratory

df_raw_headers['genero'].value_counts(dropna=False)

#Dejar todos los strings en Mayúscula


df_raw_headers['genero']=df_raw_headers['genero'].str.upper()
df_raw_headers['estado_civil']=df_raw_headers['estado_civil'].str.upper()
df_raw_headers['ocupacion']=df_raw_headers['ocupacion'].str.upper()

#Profiling para el dataframe(df_raw_headers)


profile = ProfileReport(df_raw_headers)
profile.to_file("Report_Datos_Corregidos.html")

#Eliminar los datos menores de 16 años de edad


df_final = df_raw_headers.drop(df_raw_headers[df_raw_headers['edad']<=16].index)
df_final.head()

id ingresos egresos activos pasivos vol_trans a_econ edad anos_afili

0 2 5593385.0 1185000 43000000.0 14000000.0 1678015 A2 26 1,8

1 3 0.0 730000 123000000.0 20000000.0 540000 A2 28 0,4

2 4 3474000.0 1300000 52000000.0 10000000.0 1042200 A2 24 NINGUNO

3 5 5421293.0 825000 75000000.0 500000.0 1626387 A2 30 1,3

4 6 6426250.0 1500000 350000000.0 9000000.0 1927875 A2 60 21,9

df_final['genero'].value_counts()

F 2937
M 2591
NINGUNO 538
NO 1
Name: genero, dtype: int64

x=df_final['genero'].value_counts(dropna=False).keys()
y=df_final['genero'].value_counts(dropna=False).to_list()

x1=df_final['estado_civil'].value_counts(dropna=False).keys()
y1=df_final['estado_civil'].value_counts(dropna=False).to_list()
fig = plt.figure()
ax = fig.add_axes([0,0,1,1])
ax.bar(x,y)
ax.set_title('Datos de columna Genero')
plt.show()

https://colab.research.google.com/drive/12SiAFFDJFCQUvPvl510oCrBfanUOUpzw?usp=sharing#scrollTo=wY_dQnJJwidq&printMode=true 3/5
4/12/2020 Limpieza_datos.ipynb - Colaboratory

fig, (ax1,ax2) = plt.subplots(1, 2,figsize=(15,5))


ax1.bar(x,y)
ax1.set_title('Datos de columna Genero')

ax2.bar(x1,y1)
ax2.set_title('Datos de columna Estado Civil')
plt.show()

https://colab.research.google.com/drive/12SiAFFDJFCQUvPvl510oCrBfanUOUpzw?usp=sharing#scrollTo=wY_dQnJJwidq&printMode=true 4/5
4/12/2020 Limpieza_datos.ipynb - Colaboratory

https://colab.research.google.com/drive/12SiAFFDJFCQUvPvl510oCrBfanUOUpzw?usp=sharing#scrollTo=wY_dQnJJwidq&printMode=true 5/5

También podría gustarte