Geomarketing com Python

Onde abrir novas Escolas de Estudo de Línguas no estado de São Paulo?

Bruno Carloto
15 min readJan 25, 2024

1. Introdução

Geomarketing, inteligência geográfica ou ainda geoanalytics são termos que expressam basicamente a mesma ideia; é a aplicação do geoprocessamento com foco na inteligência de mercado, isso é, compreensão do pontencial mercadológico nas regiões.

Para ficar mais claro, por meio dos aparelhos celulares é possível compreender o trajeto principal dos consumidores de um dado município, em um determinado contexto como, horário comercial, fins de semana, período sazonais etc.

O que as operadoras de celulares poderiam/podem fazer com essas informações?

Será que um público que dura em torno de 2 horas em translado de casa para o trabalho, através de transporte público, de uma determinada região, não se interessaria por realizar esse translado assistindo séries e/ou vídeos de redes sociais por um determinado valor promocional de internet mobile para esse horário?

Quantos consumidores assinariam a esse plano?

Outro exemplo seria abertura de novas lojas em determinadas cidades.

Quais concorrentes uma nova farmácia teria na avenida Paulista, em São Paulo? Qual a distância média dos concorrentes? Qual o principal perfil de consumidor que translada por essa região ou mesmo rua? Faz sentido abrir um frigorífico em um bairro predominantemente indiano, onde não se consome carne de animal?

De certo, o geomarketing agrega às análises de dados e às tomadas de decisão mais rentáveis.

Conteúdo

  1. Introdução
  2. Questão de negócio
  3. Tratamento de dados e Descritivas
  4. Conclusão

2. Questão de negócio

Hoje, venho trazer um estudo de caso (fictício, porém com dados reais), demonstrando uma das possibilidades de uso do geomarketing.

Nesse estudo, suponhamos que o governo do estado de São Paulo, através da Secretaria da Educação, esteja interessado em abrir novos Centros de Estudo de Línguas (CEL) ao longo do estado.

Dessa forma, ficticiamente a Secretaria de Educação solicitou um estudo para apontar quais municípios poderiam ser apontados como novos pontos dos CEL’s.

Organização da demanda

A Secretaria, enquanto cliente, não apresentou uma lista de municípios prioritários tampouco tinha uma definição do perfil dos municípios. Não sabiam por onde começar.

A partir disso, montei uma proposta de entrega:

Apresentar quatro municípios que simplesmente estão à distância média entre os municípios que já possuem CEL’s, ou seja, calcularia a distância média entre esses municípios assistidos pelo CEL. A partir disso, apontaria os municípios que não estão assistidos, os quais estão à distância média calculada em relação a algum outro já assistido.

Além de apontar os municípios, eu traria algumas de suas informações demográficas.

3. Tratamentos de dados e Descritivas

3.1 Analisando e tratando as bases

Inicialmente, importei as possíveis bibliotecas de uso. À frente de cada importação há um comentário da utilidade da biblioteca ou da função:

# Importando bibliotecas de uso
import numpy as np # Manipulação de números e matemática
import pandas as pd # Manipulação de dataframes e series
import geopandas as gpd # Manipulação de geodataframes e geoseries
import folium # Biblioteca para criação de mapas
import matplotlib.pyplot as plt # Para criação de gráficos
import seaborn as sns # Para criação de gráficos
import geopy.distance # Cálculos georreferenciais
import statistics # Estatísticas

from unidecode import unidecode # Tratamento de textos
from pandasql import sqldf # Manipulação SQL
from shapely import Point # Aplicação de geopontos
from folium.plugins import HeatMap # Visualização mapa
from folium.plugins import FastMarkerCluster # Visualização mapa
from scipy.stats import mode # Cálculo da moda
from geopy.distance import geodesic # Manipulação georreferência
from folium.plugins import MarkerCluster # Detalhamento mapa

Para esse estudo, quatro bases foram utilizadas:

  • Alunos_Cel_2023: Informações acerca dos Centros de Estudos de Línguas, contendo principalmente os municípios em que situam as escolas;
  • divisoes_regionais_esp: Informações georreferenciais e demográficas dos municípios de São Paulo;
  • SP_Municipios_2022: Informações georreferenciais e de área;
  • info_sp_estado: Informações econômicas dos municípios do estado de São Paulo.

Você pode encontrar as bases no site da Secretaria de Educação do Governo de São Paulo, clicando aqui.

Iniciei com as importações da base.

# Importando base CEL
dados_cel = pd.read_csv(r'C:\Users\nayar\OneDrive\Documentos\GEOPROCESSAMENTO DADOS\Educação\Alunos_Cel_2023.csv',
sep = ';')

# Importando base com informações de latitude
geo_municipios_sp = pd.read_csv(r'C:\Users\nayar\OneDrive\Documentos\GEOPROCESSAMENTO DADOS\divisoes_regionais_esp.csv',
sep = ';', encoding = 'latin1')

# Buscando arquivo com georreferência do estado de São Paulo
mapa_sp = gpd.read_file(r'C:\Users\nayar\OneDrive\Data Science\Projetos\Geolocalização\SP_Municipios_2022\SP_Municipios_2022.shp')

# Base com informações de SP
dados_sp = pd.read_csv(r'C:\Users\nayar\OneDrive\Data Science\Projetos\Geolocalização\SP_Municipios_2022\info_sp_estado.csv', sep = ';', encoding = 'latin')

As duas primeiras bases possuem informações complementares entre si. A primeira base informa acerca das escolas e a segunda informa sobre a geolocalização.

Sendo assim realizei um tratamento nos nomes dos municípios, pois, através dos nomes, cruzei as duas bases a fim de agregar a informação de latitude e longitude às escolas, para destacar os municípios no mapa.

Esse tratamento se deu porquanto as bases estavam com os nomes dos municípios digitados diferentemente no tocante a estarem maiúsculas ou minúsculas.

A base das escolas estava com os nomes dos municípios sem acentos e maiúsculas. A segunda base estava com os nomes do municípios com acento e apenas inicial maiúscula, o que impossibilitaria um correto cruzamento.

Portanto, padronizei os nomes da segunda base com a seguinte função:

# Criando função para eliminar pontuações e colocar palavras como maiúsculas
def transformar_palavras(palavra):

# Retirando acentos e transformando em maiúsculas
palavra = unidecode(palavra).upper()

return palavra

Assim estavam os nomes:

  • Primeira base (coluna MUN)
  • Segunda base (coluna Município)

A aplicação da função que criei se deu da seguinte forma:

  • Primeiramente nos nomes das colunas
# Renomeando nomes das colunas
geo_municipios_sp.columns = geo_municipios_sp.columns.str.replace(' ', '').str.upper().map(transformar_palavras)

# Resultado
geo_municipios_sp.columns

Em seguida, na segunda base, nas informações de três colunas:

# Transformando nomes do município
geo_municipios_sp['MUNICIPIO'] = geo_municipios_sp['MUNICIPIO'].apply(transformar_palavras)

# Transformando nomes das regiões administrativas
geo_municipios_sp['REGIAOADMINISTRATIVA'] = geo_municipios_sp['REGIAOADMINISTRATIVA'].apply(transformar_palavras)

# Transformando nomes regiões metropolitanas
geo_municipios_sp['REGIAOMETROPOLITANA'] = geo_municipios_sp['REGIAOMETROPOLITANA'].apply(transformar_palavras)

Este é o resultado da transformação:

Por garantia, também apliquei na base das escolas (primeira base), mesmo que aparentemente as informações já estivessem conforme esperadas:

# Transformando nomes do município
dados_cel['MUN'] = dados_cel['MUN'].apply(transformar_palavras)

Realizei uma validação rápida acerca da qualidade das informações, observando as informações da capital São Paulo e do município de Osasco:

# Conferindo se a informação de população está coerente
geo_municipios_sp[geo_municipios_sp['MUNICIPIO'].isin(['OSASCO', 'SAO PAULO'])]

A informação de população, por exemplo, se aproxima da estimada oficialmente para ambos municípios.

A primeira base, acerca das informações das escolas de idioma do governo, possui 153 linhas e 56 colunas.

Para conhecimento, essas duas bases têm as seguintes dimensões:

  • Base de escolas de idioma: 153 linhas e 56 colunas
# Dimensão base
dados_cel.shape
  • Base de georreferência: 645 linhas e 10 colunas. Cada linha se trata de um município de São Paulo.
# Dimensão da base com informações georreferenciais dos municípios de SP
geo_municipios_sp.shape

3.2 Descritivas

Uma das primeiras descritivas que realizei foi observar o número de escolas por município:

# Há mais de uma escola por município??? Há municípios com mais de uma escola
dados_cel.MUN.value_counts().sort_values(ascending = False)

O município com o maior número de escolas de idioma é São Paulo, número muito superior à Franca, que vem em seguida no ranking.

Através da análise acima, soube que a base de escolas possui 117 municípios, nos quais se distribuem 156 escolas. Sendo assim, há duplicidade de municípios devido às escolas.

Em minha análise não importava o nome das escolas, mas quais municípios continham escola. Portanto elimitei as informações que causavam duplicidade.

# Eliminando colunas duplicadoras
dados_cel_para_consolidar = dados_cel.drop(['CDREDE', 'DE', 'COD_ESC', 'NOMESC'], axis = 1)

Além de eliminar essas colunas, consolido a base.

A consolidação é simplesmente realizar cálculos na base por uma ou mais dimensões. Vamos a um exemplo:

Observando as duas tabelas, saímos de uma com duplicidade para uma consolidada, sem duplicidade. Apenas somei a quantidade de compra total por CPF. O que antes era quantidade de itens comprados separadamente por CPF, passou a ser quantidade total de item comprado por CPF.

Em meu estudo, utilizei a linguagem SQL para consolidar a base:

# Criando base query para consolidar base com quantidade de alunos por idioma e município
consulta = '''

SELECT
DISTINCT

# Colunas dimensão

CODMUN,
MUN,
CATEG,
TIPOESC,

# Soma das colunas referentes a quantidade de alunos por disciplina

SUM(AL_ALEMAO_DU) AS SOMA_AL_ALEMAO_DU,
SUM(AL_ESPANHOL_DU) AS SOMA_AL_ESPANHOL_DU,
SUM(AL_FRANCES_DU) AS SOMA_AL_FRANCES_DU,
SUM(AL_INGLES_DU) AS SOMA_AL_INGLES_DU,
SUM(AL_ITALIANO_DU) AS SOMA_AL_ITALIANO_DU,
SUM(AL_JAPONES_DU) AS SOMA_AL_JAPONES_DU,
SUM(AL_MANDARIM_DU) AS SOMA_AL_MANDARIM_DU,

SUM(AL_ALEMAO_SAB_SEMANA) AS SOMA_AL_ALEMAO_SAB_SEMANA,
SUM(AL_ESPANHOL_SAB_SEMANA) AS SOMA_AL_ESPANHOL_SAB_SEMANA,
SUM(AL_FRANCES_SAB_SEMANA) AS SOMA_AL_FRANCES_SAB_SEMANA,
SUM(AL_INGLES_SAB_SEMANA) AS SOMA_AL_INGLES_SAB_SEMANA,
SUM(AL_ITALIANO_SAB_SEMANA) AS SOMA_AL_ITALIANO_SAB_SEMANA,
SUM(AL_JAPONES_SAB_SEMANA) AS SOMA_AL_JAPONES_SAB_SEMANA,
SUM(AL_MANDARIM_SAB_SEMANA) AS SOMA_AL_MANDARIM_SAB_SEMANA,

SUM(AL_ALEMAO_SAB) AS SOMA_AL_ALEMAO_SAB,
SUM(AL_ESPANHOL_SAB) AS SOMA_AL_ESPANHOL_SAB,
SUM(AL_FRANCES_SAB) AS SOMA_AL_FRANCES_SAB,
SUM(AL_INGLES_SAB) AS SOMA_AL_INGLES_SAB,
SUM(AL_ITALIANO_SAB) AS SOMA_AL_ITALIANO_SAB,
SUM(AL_JAPONES_SAB) AS SOMA_AL_JAPONES_SAB,

SUM(TOTAL_TOTAL_AL) AS SOMA_TOTAL_TOTAL_AL

FROM dados_cel_para_consolidar
GROUP BY
CODMUN,
MUN,
CATEG,
TIPOESC

'''

# Consolidando base
dados_cel_consolidada = sqldf(consulta)

Ao fim, temos a base consolidada com 117 linhas e 25 colunas.

# Dimensão da base consolidada
dados_cel_consolidada.shape

Após esse tratamento, cruzei as duas bases analisadas até ao momento. Sendo assim, os municípios que possuem escola passaram a ter informação de latitude e longitude, o que possibilita geração de mapas e identificação de locais em mapas.

# Unificando as bases
bases_unificadas = pd.merge(dados_cel_consolidada, geo_municipios_sp, how = 'left', left_on = 'MUN', right_on = 'MUNICIPIO')

A base unificada ficou com 117 linhas e 35 colunas.

# Dimensão da base unificada
bases_unificadas.shape

As informações de latitude e longitude estavam no formato string, contudo, para geração do mapa, precisariam estar no formato float.

Sendo assim, realizei o tratamento.

# Convertendo string para float
bases_unificadas_tratada = bases_unificadas

bases_unificadas_tratada.LATITUDE = bases_unificadas_tratada.LATITUDE.str.replace(',', '.').astype(float).round(3)
bases_unificadas_tratada.LONGITUDE = bases_unificadas_tratada.LONGITUDE.str.replace(',', '.').astype(float).round(3)

Esse código permitiu sair disto:

Para isto:

Ou seja, retirei a vírgula, não reconhecida na língua inglesa como marcante do float/decimal, substituindo por ponto, além de alterar o tipo de dado object para float.

Tratadas as informações de latitude e longitude, a partir delas, criei o ponto georreferencial.

# Criando geometry
bases_unificadas_gdf = gpd.GeoDataFrame(bases_unificadas_tratada, geometry = gpd.points_from_xy(bases_unificadas.LONGITUDE, bases_unificadas.LATITUDE))

A partir do código acima transformei as latitudes e longitudes em geometry, conforme o exemplo abaixo:

Para gerar o mapa do estado de São Paulo, utilizo a terceira base importada.

# Resultado
mapa_sp.head()

A base possui informações de 645 municípios.

# Quantidade correta de município
len(mapa_sp.value_counts().index)

Através dessa tabela e da informação de geometry, temos o mapa de São Paulo:

# Visualizando estado de São Paulo
mapa_sp.plot(figsize = (12,7), color = 'white', edgecolor = 'black');

Por meio do código a seguir, podemos visualizar os municípios que possuem Escolas de Estudo de Línguas.

# Visualizando presença das escolas em SP

# Plotando mapa de SP
base = mapa_sp.plot(figsize = (12,7), color = 'white', edgecolor = 'grey')

# Destacando os municípios com presença de Escola de Estudo de Línguas
bases_unificadas_gdf.plot(ax = base, alpha = 0.7, color = 'orange');

O gráfico a seguir demonstra claramente em que região está a concentração de escolas.

# Criando a primeira camada do mapa
mapa_estado_sp = folium.Map(location = [bases_unificadas_gdf.LATITUDE.mean(), bases_unificadas_gdf.LONGITUDE.mean()],
zoom_start = 7, # Definindo o zoom padrão de partida
tiles = 'cartodbdark_matter', # Definindo o tipo de mapa
)

# Configuração visual: opacidade, cor e peso para os limites municipais
estilo = {'fillOpacity':0, 'color':'#ffffff', 'weight':0.5}

# Definição do calor sobre o mapa principal
HeatMap(data = bases_unificadas_gdf[['LATITUDE', 'LONGITUDE']], name = 'Mapa de Calor', radius = 19).add_to(mapa_estado_sp)

# Aplicando a configuração visual referente aos limites municipais
folium.GeoJson(mapa_sp, name = 'São Paulo Branco', style_function = lambda x: estilo).add_to(mapa_estado_sp)

# Criando filtro para configuração manual do mapa
folium.LayerControl().add_to(mapa_estado_sp)

# Exibindo
mapa_estado_sp

Pelo mapa, podemos perceber que a concentração de escolas se situa em torno da capital São Paulo.

Realizei a contagem para evidenciar a quantidade de escolas no município de São Paulo, a qual revelou 24 escolas, conforme o resultado abaixo.

# Há mais de uma escola por município??? Há municípios com mais de uma escola
dados_cel.MUN.value_counts().sort_values(ascending = False)

Meu objetivo inicial seria responder qual a distância média entre os municípios que possuem escola, porquanto, a partir desse valor, conseguiria evidenciar municípios em similar distância, em relação a municípios assistidos pelo CEL.

Através do código a seguir, obtive a resposta:

# Lista que recebe a distância em Km entre os municípios
distancias = []

# Instrução para calcular a distância entre cada município
for i in range(len(bases_unificadas_gdf)):
for j in range(len(bases_unificadas_gdf)):

# Coordenadas do município X:
coords1 = (bases_unificadas_gdf['LATITUDE'][i], bases_unificadas_gdf['LONGITUDE'][i])
# Coordenadas do município Y:
coords2 = (bases_unificadas_gdf['LATITUDE'][j], bases_unificadas_gdf['LONGITUDE'][j])

# Calculando a distância quilométrica entre os municípios X e Y
distancia = geopy.distance.geodesic(coords1, coords2).kilometers

# Armazenando a distância
distancias.append(distancia)

# Calculos estatísticos
print('Média: ', np.round(np.mean(distancias), 0))
print('Mediana: ', np.round(np.median(distancias), 0))
print('Desv. Pad.: ', np.round(np.std(distancias), 0))
print('Moda: ', np.round(statistics.mode(distancias), 0))

Em média, os municípios estão em torno de 252 Km de distância entre si, sendo a mediana em torno de 240 Km. A média e a mediana estão relativamente próximas. E a distância 0 Km é a mais frequente. Isso ocorre por uma falha no código. Eu considerei calcular a distância, por exemplo, entre o município de São Paulo e ele mesmo. Para ficar mais claro, responda a esta pergunta: qual a distância entre a capital São Paulo e a própria capital São Paulo? O resultado é zero. Faz sentido calcular a distância nesses casos? Não!

Dessa forma, há 117 municípios na base de escola que passaram por esse cálculo sem sentido.

Ignorando esse erro, cada município entrou em cálculo com 116 municípios distintos entrer si. Nesse caso, houve um total de 13.572 cálculos, pois são 117 municípios que passaram pelo cálculo com 116 municípios diferentes.

Ao todo são (13.572 + 117 ) 13.689 cálculos/distâncias. Isso quer dizer que aproximadamente 1% dos valores de cálculo para média são sujeiras, as quais são referentes ao cálculo da distância de um dado município por ele mesmo.

Entretanto, pela irrelevância percentual, optei por deixar.

O códiogo abaixo evidencia a quantidade de cálculos/respostas que foram obtidas.

# Calculando quantidade de valores dentro da lista de distâncias
len(distancias)

Observei também a distribuição em densidade das distâncias para compreender melhormente a média e mediana.

# Definindo dimensão do gráfico
plt.figure(figsize = (12, 6))

# Plotando dados
sns.distplot(distancias)

# Configurações de contextualizadores
plt.title('Distribuição das distâncias', fontsize = 15)
plt.ylabel('Densidade')
plt.xlabel('Distância Km')

# Exibindo gráfico
plt.show();

Ocorre quase curva normal.

A seguir, a partir da distância quilométrica mediana entre os municípios, exibo quais municípios poderiam receber Centro de Estudos de Língua.

Os municípios estão marcados com um ícone vermelho e branco.

# Gerando camada de mapa principal
mapa_estado_sp = folium.Map(location = [bases_unificadas_gdf.LATITUDE.mean(), bases_unificadas_gdf.LONGITUDE.mean()],
zoom_start = 7,
tiles = 'cartodbpositron', # cartodbpositron
)

# Configurando estilo das demarcações dos municípios
estilo = {'fillOpacity':0, 'color':'#000000', 'weight':0.5}

# Instrução para adição do nome dos municípios para dinamismo
for _, linha in mapa_sp.iterrows():
municipio = gpd.GeoDataFrame(pd.DataFrame(linha).T, geometry = 'geometry', crs = 'EPSG:4674')

# Nomeando os municípios
folium.GeoJson(municipio,
name = municipio.NM_MUN.values[0],
style_function = lambda x: estilo,
tooltip = municipio.NM_MUN.values[0]).add_to(mapa_estado_sp) #Tooltip aplica o nome de forma dinâmica

# Criando cluster dinâmico
cluster = FastMarkerCluster(bases_unificadas_tratada[['LATITUDE', 'LONGITUDE']])

# Adicionando cluster ao mapa
cluster.add_to(mapa_estado_sp)

# Lista para receber novos pontos calculados
pontos = []

# Quantidade de escolas para a região Norte, Sul, Leste e Oeste
num_escolas = 2

# Instrução para buscar municípios na base
for i in range(num_escolas):

# Coordenadas do ponto de origem
latitude_origem = bases_unificadas_gdf.LATITUDE[i]
longitude_origem = bases_unificadas_gdf.LONGITUDE[i]

# Raio baseado na mediana da distância entre os municípios com escola
distancia_km = np.median(distancias)

# Calculando a posição concorrente para cada direção (norte, sul, leste e oeste) em relação ao município em loop
novo_ponto_norte = geodesic(kilometers=distancia_km).destination((latitude_origem, longitude_origem), 0) # 90 é a direção leste
novo_ponto_leste = geodesic(kilometers=distancia_km).destination((latitude_origem, longitude_origem), 90) # 90 é a direção leste
novo_ponto_sul = geodesic(kilometers=distancia_km).destination((latitude_origem, longitude_origem), 180) # 90 é a direção leste
novo_ponto_oeste = geodesic(kilometers=distancia_km).destination((latitude_origem, longitude_origem), 270) # 90 é a direção leste

# Adicionando as posições concorrentes
pontos.append(novo_ponto_norte)
pontos.append(novo_ponto_leste)
pontos.append(novo_ponto_sul)
pontos.append(novo_ponto_oeste)

# Criando lista para agregação somente das posições nos limites georreferencias do estado de São Paulo
pontos_limitados = []

# Validando se todos novos pontos estão nos limites georreferenciais de São Paulo
for i in range(len(pontos)):

# Regra para validação dos pontos que estão nos limites georreferenciais do estado de São Paulo
if pontos[i].latitude <= -20.7526 and pontos[i].latitude >= -25.2521 and pontos[i].longitude <= -45.0000 and pontos[i].longitude >= -53.1067:

# Salvando na lista somente as posições validadas
pontos_limitados.append(pontos[i])

# Instrução para plotar a posição dos pontos validados
for i in range(len(pontos_limitados)):

# Definindo as coordenadas
coordenadas = (pontos_limitados[i].latitude, pontos_limitados[i].longitude)

# Plotando ponto
folium.Marker(location=coordenadas, icon = folium.Icon(color = 'red')).add_to(mapa_estado_sp)

# Criando filtro de camada do gráfico
folium.LayerControl().add_to(mapa_estado_sp)

Os municípios são Itaí, Peruíbe, Pirajuí e Tapiratiba.

Para ajudar na tomada de decisão, eu trouxe informações (socio)econômicas dos municípios do estado de São Paulo e busquei somente as informações para os municípios com escola.

# Importando base com informações dos municípios do estado de São Paulo
dados_sp = pd.read_csv(r'C:\Users\nayar\OneDrive\Data Science\Projetos\Geolocalização\SP_Municipios_2022\info_sp_estado.csv', sep = ';', encoding = 'latin')

# Buscando informações econômicas dos municípios com escola
bases_unificadas_gdf_2 = pd.merge(bases_unificadas_gdf, dados_sp, how = 'left', left_on = 'MUN', right_on = 'MUNICIPIO')

Após a importação e tratamentos, visualizei a descrição estatístisca acerca da (socio)economia dos municípios com escola.

# Descrição estatística
base_demo_descritiva.describe().round(0)

Podemos ver o PIB por setor, o imposto arrecadado, o PIB geral e o PIB per Capta.

Em média, o PIB (multiplica por 1.000) dos municípios com escola é de R$ 16 bilhões, porém, com certeza a capital São Paulo e mais alguns outros municípios puxam a média para cima, pois podemos observar a discrepância entre a média e a mediana, além do desvio padrão. A mediana é de R$ 3 bilhões. O desvio padrão é de R$ 77 bilhões.

Dessa forma, opto por considerar o PIB mediano, que é de R$ 3 bilhões, em detrimento do PIB médio.

Outro ponto é que 75% do PIB dos municípios com CEL não passam de R$ 11 bilhões.

O PIB per Capta médio desses municípios com escola é de R$ 44 mil, sendo o mediano de R$ 40 mil.

Em relação aos municípios candidatos a receberem a escola, temos:

Os quatro municípios possuem PIB’s abaixo da mediana dos municípios com escola, com população relativamente em torno da mediana desses mesmos municípios.

Entretanto, 25% dos municípios com escola possuem PIB de até R$ 1,4 bilhão. Isso coloca os quatro municípios candidatos como PIB aceitável, porquanto o menor PIB dentre os 117 municípios com escola é de R$ 161 milhões.

O município com o PIB per Capta mais próximo da mediana dos municípios com escola é Itaí, entretanto, 25% dos municípios com escola possuem PIB per Capta entre R$ 580 e R$ 29 mil.

Olhando essas características dos quatro municípios selecionados, conclui que os quatro municípios candidatos a receberem o CEL são admitíveis para recebê-lo.

Seria interessante realizar um estudo sobre o impacto do CEL no PIB e no PIB per Capta. Sendo assim, ficaria mais evidente sobre abertura do CEL nos quatro municípios destacadados.

Fica a critério da Secretaria realizar mais análises ou demandas analíticas.

4. Conclusão

Através do geoanalytics/geomarketing, pude demonstrar uma das formas em que essa técnica pode auxiliar decisões de negócios ou de assistência governamental.

As análises georreferenciais podem beneficiar exponencialmente as análises de dados e as tomadas de decisão, pois reduzem o nível de abstração quando o assunto envolve localidade, possibilitam compreensão de fluxos demográficos nas cidades, posicionamento de concorrentes, regiões estratégicas etc.

Sobre nosso estudo acima, pude identificar quatro municípios candidatos a receberem CEL’s que se enquadram nas características dos municípios já atendidos pela escola do governo.

Ressalto que seria relevante compreender o impacto do CEL no PIB e no PIB per Capta dos quatro municípios candidatos.

--

--

Bruno Carloto

Bem-vindo ao Deep Analytics, um blog que aborda de forma técnica o mundo Analytics | LinkedIn: www.linkedin.com/in/bruno-rodrigues-carloto