Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
1
resposta

Erro: AttributeError: 'int' object has no attribute 'split'

No minuto 10:30 do video ao adicionar o gradient no código está ocorrendo o erro:

AttributeError: 'int' object has no attribute 'split'

Código:

mapa_rio = folium.Map(location = [imoveis['Latitude'].mean(), imoveis['Longitude'].mean()],
                      zoom_start = 10,
                      tiles = 'cartodbdark_matter',
                      name = 'Dark')

estilo = {'fillOpacity':0 ,'color' : '#ffffff', 'weight': 0.5}

HeatMap(data = imoveis[['Latitude', 'Longitude']], name = 'Mapa de Calor', radius = 20).add_to(mapa_rio)
folium.GeoJson(bairros_rio, name = 'Rio de Janeiro', style_function= lambda x: estilo).add_to(mapa_rio)

estilo_borda_preta = {'fillOpacity':0 ,'color' : '#000000', 'weight': 0.5}

HeatMap(data = imoveis[['Latitude', 'Longitude']], name = 'Mapa de Calor (vemelho)', radius = 20, gradient = {0:'grey', 1:'red'}, show = False).add_to(mapa_rio)
folium.GeoJson(bairros_rio, name = 'Rio de Janeiro (borda preta)', style_function= lambda x: estilo_borda_preta, show = False).add_to(mapa_rio)

folium.TileLayer('cartodbpositron', name = 'Positron').add_to(mapa_rio)

folium.LayerControl().add_to(mapa_rio)

mapa_rio
1 resposta
solução!

Oi, Raphael! Como vai?

O erro ocorre porque o uso de um dicionário no argumento gradient em um dos objetos HeatMap, pode não ser aceito no Folium como chaves do tipo inteiro nesse dicionário. Para resolver, as chaves do gradient devem ser do tipo float, com valores entre 0 e 1. Segue o código ajustado:

mapa_rio = folium.Map(location=[imoveis['Latitude'].mean(), imoveis['Longitude'].mean()],
                      zoom_start=10,
                      tiles='cartodbdark_matter',
                      name='Dark')

estilo = {'fillOpacity': 0, 'color': '#ffffff', 'weight': 0.5}

HeatMap(data=imoveis[['Latitude', 'Longitude']], name='Mapa de Calor', radius=20).add_to(mapa_rio)
folium.GeoJson(bairros_rio, name='Rio de Janeiro', style_function=lambda x: estilo).add_to(mapa_rio)

estilo_borda_preta = {'fillOpacity': 0, 'color': '#000000', 'weight': 0.5}

# Convertendo as chaves do gradient para strings
HeatMap(data=imoveis[['Latitude', 'Longitude']],
        name='Mapa de Calor (vermelho)',
        radius=20,
        gradient={"0.0": 'grey', "1.0": 'red'},
        show=False).add_to(mapa_rio)

folium.GeoJson(bairros_rio, name='Rio de Janeiro (borda preta)', style_function=lambda x: estilo_borda_preta, show=False).add_to(mapa_rio)

folium.TileLayer('cartodbpositron', name='Positron').add_to(mapa_rio)

folium.LayerControl().add_to(mapa_rio)

mapa_rio

Deixo abaixo o link do notebook usado para teste:

Espero ter ajudado, conte sempre conosco.

Bons estudos, Raphael!