import matplotlib
import seaborn as sns
%matplotlib inline
%config InlineBackend.figure_format = 'svg'
import matplotlib.pyplot as plt
plt.style.use('ggplot')
import pandas as pd
import numpy as np
import geopandas as gpd
from tqdm import tqdm
from sklearn.cluster import KMeans, DBSCAN
from sklearn.metrics import silhouette_score
from sklearn.datasets import make_blobs
from sklearn.neighbors import KNeighborsClassifier
from ipywidgets import interactive
from collections import defaultdict
import folium
import re
cols = ['#e6194b', '#3cb44b', '#ffe119', '#4363d8', '#f58231', '#911eb4',
'#46f0f0', '#f032e6', '#bcf60c', '#fabebe', '#008080', '#e6beff',
'#9a6324', '#fffac8', '#800000', '#aaffc3', '#808000', '#ffd8b1',
'#000075', '#808080']*10
df = pd.read_csv('../CLUSTERIZACIÓN/datos/01_coordenadas_sii_cluster_0.csv')
df.head()
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 15348 entries, 0 to 15347
Data columns (total 46 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Unnamed: 0 15348 non-null int64
1 Vigencia 15348 non-null object
2 Tipo Direc 15348 non-null object
3 full_dir 15348 non-null object
4 geometry 15348 non-null object
5 rut_completo 15348 non-null object
6 lat 15348 non-null float64
7 long 15348 non-null float64
8 Fecha inicio de actividades vigente 15348 non-null object
9 Fecha término de giro 15348 non-null object
10 año_1993 15348 non-null float64
11 año_1994 15348 non-null float64
12 año_1995 15348 non-null float64
13 año_1996 15348 non-null float64
14 año_1997 15348 non-null float64
15 año_1998 15348 non-null float64
16 año_1999 15348 non-null float64
17 año_2000 15348 non-null float64
18 año_2001 15348 non-null float64
19 año_2002 15348 non-null float64
20 año_2003 15348 non-null float64
21 año_2004 15348 non-null float64
22 año_2005 15348 non-null float64
23 año_2006 15348 non-null float64
24 año_2007 15348 non-null float64
25 año_2008 15348 non-null float64
26 año_2009 15348 non-null float64
27 año_2010 15348 non-null float64
28 año_2011 15348 non-null float64
29 año_2012 15348 non-null float64
30 año_2013 15348 non-null float64
31 año_2014 15348 non-null float64
32 año_2015 15348 non-null float64
33 año_2016 15348 non-null float64
34 año_2017 15348 non-null float64
35 año_2018 15348 non-null float64
36 año_2019 15348 non-null float64
37 año_2020 15348 non-null float64
38 año_2021 15348 non-null float64
39 año_2022 15348 non-null float64
40 Comuna 15348 non-null object
41 Tramo según ventas 15348 non-null float64
42 Número de trabajadores dependientes informados 15348 non-null float64
43 Rubro económico 15348 non-null object
44 Subrubro económico 15348 non-null object
45 Actividad económica 15348 non-null object
dtypes: float64(34), int64(1), object(11)
memory usage: 6.0+ MB
print(f" Existen {df.duplicated(subset=['rut_completo']).sum()} Registros de Coordenadas Duplicadas, revisadas por RUT")
print(f" Existen {df.isnull().sum()} Valores perdidos o nulos")
Existen 0 Registros de Coordenadas Duplicadas, revisadas por RUT
Existen Unnamed: 0 0
Vigencia 0
Tipo Direc 0
full_dir 0
geometry 0
rut_completo 0
lat 0
long 0
Fecha inicio de actividades vigente 0
Fecha término de giro 0
año_1993 0
año_1994 0
año_1995 0
año_1996 0
año_1997 0
año_1998 0
año_1999 0
año_2000 0
año_2001 0
año_2002 0
año_2003 0
año_2004 0
año_2005 0
año_2006 0
año_2007 0
año_2008 0
año_2009 0
año_2010 0
año_2011 0
año_2012 0
año_2013 0
año_2014 0
año_2015 0
año_2016 0
año_2017 0
año_2018 0
año_2019 0
año_2020 0
año_2021 0
año_2022 0
Comuna 0
Tramo según ventas 0
Número de trabajadores dependientes informados 0
Rubro económico 0
Subrubro económico 0
Actividad económica 0
dtype: int64 Valores perdidos o nulos
print(f'Forma del conjunto de datos antes de duplicados y valores erróneos {df.shape}')
df.dropna(inplace=True)
df.drop_duplicates(subset=['rut_completo'],keep="first",inplace=True)
print(f'Forma del conjunto de datos después de duplicados y valores erróneos {df.shape}')
Forma del conjunto de datos antes de duplicados y valores erróneos (15348, 46)
Forma del conjunto de datos después de duplicados y valores erróneos (15348, 46)
Gráfico de coordenadas
df.plot(x="long",y="lat",kind="scatter",alpha=0.1 ,
figsize=(10,8), title=('Datos con Cluster: 0'), label ='Cluster: 0')
Tipos de Rubros Económico
sns.countplot(data=df,x='Rubro económico')
plt.title('Tipos de Rubros Económico')
plt.xlabel('Rubro económico')
plt.ylabel('Cantidad de Registros')
plt.xticks(rotation=90)
plt.show()
Tipos de Sub rubro económico
plt.figure(figsize=(30,8))
sns.countplot(data=df,x='Subrubro económico')
plt.title('Tipos de Subrubro económico')
plt.xlabel('Subrubro económico')
plt.ylabel('Cantidad de Registros')
plt.xticks(rotation=90)
plt.show()
Tipos de Actividad económica
plt.figure(figsize=(80,8))
sns.countplot(data=df,x='Actividad económica')
plt.title('Tipos de Actividad económica')
plt.xlabel('Actividad económica')
plt.ylabel('Cantidad de Registros')
plt.xticks(rotation=90)
plt.show()