0% acharam este documento útil (0 voto)
0 visualizações12 páginas

ploty

O documento apresenta uma aula sobre a biblioteca Plotly Express, focando na criação de gráficos interativos para análise exploratória de dados de combustíveis. A aula utiliza dados do GOV.BR e inclui exemplos práticos de visualização, como gráficos de linha e barras, para analisar o preço médio da gasolina no estado de São Paulo. O conteúdo aborda desde a leitura e limpeza dos dados até a geração de gráficos, proporcionando uma compreensão prática do uso da biblioteca.

Enviado por

Liberth Seven
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
0 visualizações12 páginas

ploty

O documento apresenta uma aula sobre a biblioteca Plotly Express, focando na criação de gráficos interativos para análise exploratória de dados de combustíveis. A aula utiliza dados do GOV.BR e inclui exemplos práticos de visualização, como gráficos de linha e barras, para analisar o preço médio da gasolina no estado de São Paulo. O conteúdo aborda desde a leitura e limpeza dos dados até a geração de gráficos, proporcionando uma compreensão prática do uso da biblioteca.

Enviado por

Liberth Seven
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Se inscrever para assistir a aula:

[Link]

Aula 3 - Plotly PX

Nosso objetivo é entender como funciona o Plotly EXPRESS

Objetivo Final:
Fazer uma análise exploratória com dados de combustíveis.

O que é o Plotly Express?

O Plotly Express (px) é uma biblioteca de visualização de dados de alto nível, desenvolvida pelo Plotly, que facilita a criação de gráficos
interativos de forma rápida e simples. É uma camada de abstração sobre a biblioteca Plotly, que permite criar visualizações complexas com
menos código e menos detalhes técnicos.

O Plotly Express foi projetado para ser uma alternativa mais fácil e direta ao uso direto da biblioteca Plotly.
Ele oferece uma interface mais intuitiva e simplificada para a criação de gráficos, especialmente para usuários que desejam criar
visualizações de dados de maneira rápida e sem necessidade de conhecimentos avançados em plotagem de gráficos.

Nosso case

Vamos utlizar dados do [Link] para nosso case de uso.

Codando !

Vamos explorar:

[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
px.density_mapbox
update_traces
update_layout
add_annotation

# Libs
import pandas as pd
import numpy as np

# Modulos do Plotly
import [Link] as px

import warnings
[Link]('ignore')

# Configurar o número de casas decimais para 2


[Link].float_format = '{:.2f}'.format

# Lendo a base de dados


Base_Dados = pd.read_csv('[Link]', sep=';')

Base_Dados.head()
Regiao Estado
CNPJ da Nome da Numero
- - Municipio Revenda Complemento Bairro
Revenda Rua Rua
Sigla Sigla

SAO
FRANCISCO DE PRACA
08.519.545/0001- 29
0 SE ES COLATINA ASSIS FIDELIS 35 NaN LACE
10
COMERCIO DE FERRARI
# Analisa base de dados COMBUSTIVEI...
def Verificar_DataSet(Base_Dados ):
SAO
# Verificando dimensão FRANCISCO DE PRACA
08.519.545/0001- 29
1
Dimensao = SE ES COLATINA
Base_Dados.shape ASSIS FIDELIS 35 NaN LACE
10
COMERCIO}DE
print(f'Base de dados possui { Dimensao[0] Linhas e {Dimensao[1] FERRARI
} Colunas')
COMBUSTIVEI...
print('-' * 50 )
POSTO PRACA
# Tipo 04.814.652/0001- 29
2 das SE
Colunas ES COLATINA MOTOCAP ALMIRANTE 52 LETRA A LACE
10
Tipos_Colunas = Base_Dados.dtypes.value_counts()
LTDA BARROSO
print(f'Tipo das colunas')
POSTO
print( [Link]( Tipos_Colunas, columns=['Quantidade_Colunas'] ) PRACA
)
04.814.652/0001- 29
3 SE ES COLATINA MOTOCAP ALMIRANTE 52 LETRA A LACE
print('-' * 50 ) 10
LTDA BARROSO

# Campos únicos POSTO PRACA


Campos_Unicos = Base_Dados.nunique()
print(f'Campos únicos')
print( [Link]( Campos_Unicos, columns=['Quantidade_Campos'] ) )
print('-' * 50 )

# Campos nulos
Campos_Nulus = Base_Dados.isnull().sum()
print(f'Campos Nulos')
print( [Link]( Campos_Nulus, columns=['Quantidade_Campos'] ) )
print('-' * 50 )

Verificar_DataSet( Base_Dados )

Base de dados possui 378078 Linhas e 16 Colunas


--------------------------------------------------
Tipo das colunas
Quantidade_Colunas
object 15
float64 1
--------------------------------------------------
Campos únicos
Quantidade_Campos
Regiao - Sigla 5
Estado - Sigla 27
Municipio 460
Revenda 11640
CNPJ da Revenda 13467
Nome da Rua 8122
Numero Rua 4282
Complemento 2137
Bairro 5429
Cep 9902
Produto 6
Data da Coleta 126
Valor de Venda 1033
Valor de Compra 0
Unidade de Medida 2
Bandeira 59
--------------------------------------------------
Campos Nulos
Quantidade_Campos
Regiao - Sigla 0
Estado - Sigla 0
Municipio 0
Revenda 0
CNPJ da Revenda 0
Nome da Rua 0
Numero Rua 176
Complemento 296814
Bairro 901
Cep 0
Produto 0
Data da Coleta 0
Valor de Venda 0
Valor de Compra 378078
Unidade de Medida 0
Bandeira 0
--------------------------------------------------

# Verificando
Base_Dados.head()
Regiao Estado
CNPJ da Nome da Numero
- - Municipio Revenda Complemento B
Revenda Rua Rua
Sigla Sigla

SAO
FRANCISCO DE PRACA
08.519.545/0001-
0 SE ES COLATINA ASSIS FIDELIS 35 NaN
10
COMERCIO DE FERRARI
COMBUSTIVEI...

SAO
FRANCISCO DE PRACA
08.519.545/0001-
1 SE ES COLATINA ASSIS FIDELIS 35 NaN
10
COMERCIO DE FERRARI
COMBUSTIVEI...

POSTO PRACA
04.814.652/0001-
2 SE ES COLATINA MOTOCAP ALMIRANTE 52 LETRA A
10
LTDA BARROSO
# Ajuste Nome_Colunas
Base_Dados.columns = [ [Link]().replace('-',
POSTO '').replace(' ', '_') for Coluna in Base_Dados.columns ]
PRACA
04.814.652/0001-
3 SE ES COLATINA MOTOCAP ALMIRANTE 52 LETRA A
Base_Dados.columns 10
LTDA BARROSO

Index(['regiao__sigla', 'estado__sigla', 'municipio', 'revenda',


'cnpj_da_revenda', 'nome_da_rua', 'numero_rua', 'complemento', 'bairro',
'cep', 'produto', 'data_da_coleta', 'valor_de_venda', 'valor_de_compra',
'unidade_de_medida', 'bandeira'],
dtype='object')

# Ajuste coluna valor


Base_Dados.valor_de_venda = Base_Dados.valor_de_venda.apply( lambda valor: [Link](',' , '.') )
Base_Dados.valor_de_venda = pd.to_numeric( Base_Dados.valor_de_venda )
Base_Dados.valor_de_venda.dtypes

dtype('float64')

# Convertendo as datas
Base_Dados.data_da_coleta = pd.to_datetime( Base_Dados.data_da_coleta, format='%d/%m/%Y' )
Base_Dados['Mes'] = Base_Dados.data_da_coleta.[Link]
Base_Dados['Ano'] = Base_Dados.data_da_coleta.[Link]

Base_Dados.head()

regiao__sigla estado__sigla municipio revenda cnpj_da_revenda nome_da_rua numero

SAO
FRANCISCO DE PRACA
08.519.545/0001-
0 SE ES COLATINA ASSIS FIDELIS
10
COMERCIO DE FERRARI
COMBUSTIVEI...

SAO
FRANCISCO DE PRACA
08.519.545/0001-
1 SE ES COLATINA ASSIS FIDELIS
10
COMERCIO DE FERRARI
COMBUSTIVEI...

POSTO PRACA
04.814.652/0001-
2 SE ES COLATINA MOTOCAP ALMIRANTE
10
LTDA BARROSO

POSTO PRACA
04.814.652/0001-
3 SE ES COLATINA MOTOCAP ALMIRANTE
10
LTDA BARROSO

POSTO PRACA
04.814.652/0001-
4 SE ES COLATINA MOTOCAP ALMIRANTE
10
LTDA BARROSO

Base_Dados['regiao__sigla'].unique()

array(['SE', 'CO', 'NE', 'S', 'N'], dtype=object)

Base_Dados['estado__sigla'].unique()

array(['ES', 'GO', 'PI', 'RJ', 'SP', 'SC', 'PR', 'AL', 'AM', 'AP', 'BA',
'CE', 'MA', 'MG', 'MS', 'PA', 'PB', 'PE', 'RN', 'RO', 'RS', 'SE',
'TO', 'AC', 'MT', 'RR', 'DF'], dtype=object)

Base_Dados['produto'].unique()

array(['GASOLINA ADITIVADA', 'GASOLINA', 'DIESEL S10', 'ETANOL', 'DIESEL',


'GNV'], dtype=object)

# Filtrar o estado de SP
Filtro_SP = Base_Dados[
( Base_Dados['estado__sigla'] == 'SP' ) &
( Base_Dados['produto']=='GASOLINA' )
]

Filtro_SP.head()

regiao__sigla estado__sigla municipio revenda cnpj_da_revenda nome_da_rua nu

CENTRO
RODOVIA
AUTOMOTIVO 56.967.045/0001-
63 SE SP VALINHOS FLAVIO DE
DE VALINHOS 94
CARVALHO
LTDA

RODOVIA
AUTO POSTO 02.438.769/0001-
68 SE SP VALINHOS FLAVIO DE
APEX LTDA 11
CARVALHO

CENTRO AVENIDA
AUTOMOTIVO 03.203.934/0001- ENGENHEIRO
81 SE SP BARUERI
JOAO COTIA 19 OSCAR
LTDA KESSELRING

AUTO POSTO
RODOVIA
100% 13.917.317/0001-
89 SE SP VALINHOS FLAVIO DE
VALINHOS 39
CARVALHO
LTDA.

AUTO POSTO 07.060.206/0001- RUA CASTRO


1510 SE SP ARARAQUARA
RUA 16 LTDA 56 ALVES

# Analise da Média
Anl_Media = Filtro_SP.groupby( by=['Mes'] ).agg(
Media = ('valor_de_venda', 'mean'),
Mediana = ('valor_de_venda', 'median')
).reset_index()

# Gráfico de Linhas
Figura_Linhas = [Link](
Anl_Media, x='Mes', y='Media', title='Preço médio Gasolina estado de SP', text='Media',
markers=True, height=500, width=1000, labels={'Mes': '2º Semestre de 2022', 'Media': 'Preço médio de venda'}
)

# Definindo o formato dos valores ao pairar o mouse sobre os pontos do gráfico


Figura_Linhas.update_traces(
hovertemplate='Mes: %{x} <br>Preço Médio: R$ %{y:.2f}',
texttemplate='R$ %{y:.2f}', textposition='top center',
fill='tozeroy',
fillcolor='rgba(198, 213, 245, 0.5)',
textfont=dict(size=13, color='blue', family='Arial')
)

# Ajustando a cor de fundo do gráfico


Figura_Linhas.update_layout(
plot_bgcolor='#f2f5fa',
xaxis_range=[6.8, 12.2],
yaxis_range=[0, Anl_Media.[Link]() + ( Anl_Media.[Link]() * 0.25 ) ],
xaxis_showgrid=False,
)

Figura_Linhas.show()
Anl_Media.columns
Preço médio Gasolina estado de SP
Index(['Mes', 'Media', 'Mediana'], dtype='object')

7
# Gráfico de Barras
Figura_Barras = [Link]( Anl_Media, x='Mes', y='Mediana', title='Gráfico de Barras' )
Figura_Barras.show()
6 R$ 5.83
R$ 5.28
Preço médio de venda

R$ 4.88 R$ 4.79 R$ 4.91


5

Gráfico de Barras
4

6
3

2
5

1
4
0
7 8 9 10 11
Mediana

3 2º Semestre de 2022

0
7 8 9 10 11 12

Mes

'''Base_Dados[
(Base_Dados.produto == 'GASOLINA') &
(Base_Dados.estado__sigla == 'SP') &
(Base_Dados.Mes == 7) ]'''

'Base_Dados[\n (Base_Dados.produto == 'GASOLINA') &\n (Base_Dados.estado__sigla == 'SP') &\n (Base


[Link] == 7) ]'

Base_Dados.head(1)

regiao__sigla estado__sigla municipio revenda cnpj_da_revenda nome_da_rua numero_rua co

SAO
FRANCISCO DE PRACA
08.519.545/0001-
0 SE ES COLATINA ASSIS FIDELIS 35
10
COMERCIO DE FERRARI
COMBUSTIVEI...

# Analise produto
Anl_Produto = Base_Dados[ Base_Dados.estado__sigla == 'SP' ].pivot_table( index=['estado__sigla', 'municipio'], columns='produto', values='valor_de_vend

Anl_Produto.head()

produto estado__sigla municipio DIESEL DIESEL S10 ETANOL GASOLINA GASOLINA ADITIVADA GNV

0 SP ADAMANTINA 7.08 7.23 3.60 5.54 5.84 NaN

1 SP AMERICANA 6.83 6.98 3.65 5.05 5.42 5.39

2 SP AMPARO 7.02 7.13 4.01 5.37 5.67 NaN

3 SP ARACATUBA 6.90 7.10 3.52 5.27 5.40 5.89

4 SP ARARAQUARA 6.99 7.17 3.78 5.32 5.65 5.62

0# Gráfico de Dispersao
Figura_Scatter = [Link]( Anl_Produto, x='GASOLINA', y='ETANOL', title='Comparação Gasolina x Etanol',
trendline='ols', trendline_color_override='darkred',
height=600, width=1000 )
Figura_Scatter.show()
Comparação Gasolina x Etanol

4.3

4.2

4.1

3.9
ETANOL

3.8

3.7

3.6

3.5

Anl_Produto.corr()
3.4
4.8 5 5.2 5.4 5.6
produto DIESEL DIESEL S10 ETANOL GASOLINA GASOLINA ADITIVADA GNV
GASOLINA
produto

DIESEL 1.00 0.85 0.23 0.63 0.56 0.11

DIESEL S10 0.85 1.00 0.35 0.74 0.69 0.25

ETANOL 0.23 0.35 1.00 0.53 0.55 0.05

GASOLINA 0.63 0.74 0.53 1.00 0.92 0.27

GASOLINA ADITIVADA 0.56 0.69 0.55 0.92 1.00 0.13

GNV 0.11 0.25 0.05 0.27 0.13 1.00

Figura_Calor = [Link]( Anl_Produto.corr(), title='Correlação entre os combustíveis', text_auto=True, aspect="auto" )


Figura_Calor.update_xaxes(side="top")

produto

GA
Correlação entre os combustíveis SO
LIN
DI A
E GA AD
DI SE ET SO IT
ES LS AN LIN IV
10 OL AD GN
EL A A V
1
DIESEL 1 0.8533673 0.2299015 0.6309974 0.5551739 0.1138396

0.8
DIESEL S10 0.8533673 1 0.3476578 0.7378647 0.6938883 0.2529642

ETANOL 0.2299015 0.3476578 1 0.5342299 0.5505143 0.05376108


0.6
produto

GASOLINA 0.6309974 0.7378647 0.5342299 1 0.916396 0.265593


0.4

GASOLINA ADITIVADA 0.5551739 0.6938883 0.5505143 0.916396 1 0.1310431

0.2

GNV 0.1138396 0.2529642 0.05376108 0.265593 0.1310431 1

Base_Dados.columns

Index(['regiao__sigla', 'estado__sigla', 'municipio', 'revenda',


'cnpj_da_revenda', 'nome_da_rua', 'numero_rua', 'complemento', 'bairro',
'cep', 'produto', 'data_da_coleta', 'valor_de_venda', 'valor_de_compra',
'unidade_de_medida', 'bandeira', 'Mes', 'Ano'],
dtype='object')

# BoxPlot
[Link](Base_Dados,
x='regiao__sigla', y='valor_de_venda', color='produto',
title='Distribuição combustíveis por Região')
Distribuição combustíveis por Região

10

8
valor_de_venda

SE CO NE

regiao__sigla

Anl_Represetnacao = Base_Dados.produto.value_counts( normalize=True ).reset_index()

Figura_Pizza = [Link](
Anl_Represetnacao,
names='index', values='produto',
title='Gráfico de Pizza',
hole=0.6,
#color_discrete_sequence=[Link]
)

Figura_Pizza.update_traces(
hoverinfo='label+percent', textinfo='percent+label', textfont_size=12,
textposition='inside',
marker=dict( line=dict(color='#ffffff', width=2) ) )

Figura_Pizza.add_annotation(
x=0.5, y=0.5,
showarrow=False,
text=f'{ round(Base_Dados.shape[0] / 1000) } mi',
font=dict(
#family='Courier New, monospace',
size=22,
color='#000000'
),
)

Figura_Pizza.update( layout_showlegend=True )

Figura_Pizza

Gráfico de Pizza

GASOLINA
ETANOL
DIESEL S10
ETANOL
G
AS 5.5

22.4% GASOLINA ADITIVADA


O %
2

LI

DIESEL
N
A

GNV

378 mi GNV
2.05%
DI
ES 7%
19
EL

DIESEL
.

11%
S1
0

A
ADITIVAD
GASOLINA
19.3%
Anl_Produto.columns

Index(['estado__sigla', 'municipio', 'DIESEL', 'DIESEL S10', 'ETANOL',


'GASOLINA', 'GASOLINA ADITIVADA', 'GNV'],
dtype='object', name='produto')

Figura_Histograma = [Link]( Anl_Produto, x='GASOLINA', title='Gráfico de Histograma')


Figura_Histograma.show()

Gráfico de Histograma

25

20

15
count

10

0
4.8 5 5.2 5.4 5.6 5.8

GASOLINA

Base_Dados.head()

regiao__sigla estado__sigla municipio revenda cnpj_da_revenda nome_da_rua numero

SAO
FRANCISCO DE PRACA
08.519.545/0001-
0 SE ES COLATINA ASSIS FIDELIS
10
COMERCIO DE FERRARI
COMBUSTIVEI...

SAO
FRANCISCO DE PRACA
08.519.545/0001-
1 SE ES COLATINA ASSIS FIDELIS
10
COMERCIO DE FERRARI
COMBUSTIVEI...

POSTO PRACA
04.814.652/0001-
2 SE ES COLATINA MOTOCAP ALMIRANTE
10
LTDA BARROSO

POSTO PRACA
04.814.652/0001-
3 SE ES COLATINA MOTOCAP ALMIRANTE
10
LTDA BARROSO

POSTO PRACA
04.814.652/0001-
4 SE ES COLATINA MOTOCAP ALMIRANTE
10
LTDA BARROSO

# Analise dos estados


Anl_Estados = Base_Dados.groupby( by=['estado__sigla'] ).agg(
Media = ('valor_de_venda', 'mean')
).reset_index()

Anl_Estados.head()

estado__sigla Media

0 AC 6.69

1 AL 5.80

2 AM 5.89

3 AP 5.83

4 BA 6.00

# Adicionar as coordenadas geográficas (latitude e longitude) dos estados ao DataFrame

estados_coords = {
'Acre': (-9.0238, -70.8120),
'Alagoas': (-9.5713, -36.7819),
'Amazonas': (-3.4168, -65.8561),
'Amapá': (1.4315, -51.7717),
'Bahia': (-12.5797, -41.7007),
'Ceará': (-5.4984, -39.3206),
'Distrito Federal': (-15.7998, -47.8645),
'Espírito Santo': (-19.1834, -40.3089),
'Goiás': (-16.6410, -49.3659),
'Maranhão': (-4.9609, -45.2744),
'Mato Grosso': (-12.6819, -56.9211),
'Mato Grosso do Sul': (-20.7722, -54.7852),
'Minas Gerais': (-18.5122, -44.5550),
'Pará': (-3.4168, -52.1013),
'Paraíba': (-7.24, -36.7819),
'Paraná': (-24.89, -51.1557),
'Pernambuco': (-8.8137, -36.9541),
'Piaui': (-6.6033, -42.2796),
'Rio de Janeiro': (-22.9068, -43.1729),
'Rio Grande do Norte': (-5.4026, -36.9541),
'Rio Grande do Sul': (-30.0346, -51.2177),
'Rondonia': (-11.5057, -63.5806),
'Roraima': (2.7376, -62.0751),
'Santa Catarina': (-27.2423, -50.2189),
'São Paulo': (-23.5505, -46.6333),
'Sergipe': (-10.5741, -37.3857),
'Tocantins': (-10.1753, -48.2982)
}

# Criar um dicionário para mapear as siglas dos estados para os códigos


sigla_codigo_map = {
'AC': 'Acre',
'AL': 'Alagoas',
'AM': 'Amazonas',
'AP': 'Amapá',
'BA': 'Bahia',
'CE': 'Ceará',
'DF': 'Distrito Federal',
'ES': 'Espírito Santo',
'GO': 'Goiás',
'MA': 'Maranhão',
'MT': 'Mato Grosso',
'MS': 'Mato Grosso do Sul',
'MG': 'Minas Gerais',
'PA': 'Pará',
'PB': 'Paraíba',
'PR': 'Paraná',
'PE': 'Pernambuco',
'PI': 'Piaui',
'RJ': 'Rio de Janeiro',
'RN': 'Rio Grande do Norte',
'RS': 'Rio Grande do Sul',
'RO': 'Rondonia',
'RR': 'Roraima',
'SC': 'Santa Catarina',
'SP': 'São Paulo',
'SE': 'Sergipe',
'TO': 'Tocantins'
}

# Mapear as siglas dos estados para os códigos


Anl_Estados['Estado'] = Anl_Estados['estado__sigla'].map(sigla_codigo_map)

# Adicionar as coordenadas geográficas (latitude e longitude) dos estados ao DataFrame


Anl_Estados['Latitude'] = Anl_Estados['Estado'].map(lambda estado: estados_coords[estado][0])
Anl_Estados['Longitude'] = Anl_Estados['Estado'].map(lambda estado: estados_coords[estado][1])

# Verificando
Anl_Estados.head()

estado__sigla Media Estado Latitude Longitude

0 AC 6.69 Acre -9.02 -70.81

1 AL 5.80 Alagoas -9.57 -36.78

2 AM 5.89 Amazonas -3.42 -65.86

3 AP 5.83 Amapá 1.43 -51.77

4 BA 6.00 Bahia -12.58 -41.70

Grafico_Mapa = px.density_mapbox(
Anl_Estados, lat='Latitude', lon='Longitude', z='Media',
hover_data=['Estado', 'Media'],
radius=20, center=dict(lat=-15.80, lon=-47.86), zoom=3,
mapbox_style='open-street-map' )
Grafico_Mapa.update_layout(
margin={'r':0,'t':0,'l':0,'b':0},
coloraxis_showscale=False )

Desafio!

1. Escolha um estado e busque a Geo Localização de cada cidade


2. Faça um mapa de calor
3. Marque o Data Viking, Odemir Depieri e Ronisson Lucas

import requests

def get_coordinates(city, state):

'''
Função para buscar a Geo Localizacao
'''

# Site para buscar a Geo localização


Url = f'[Link]

# Parametros para enviar os dados na API


Parametros = {
'q': f'{city}, {state}',
'format': 'json',
}

# Fazendo a requisição
Resposta = [Link]( Url, params=Parametros )

# Retorno
Dados_Retorno = [Link]()

# Validando se há valor na resposta


if Dados_Retorno and len(Dados_Retorno) > 0:

# Extraindo os valores
latitude = float(Dados_Retorno[0]['lat'])
longitude = float(Dados_Retorno[0]['lon'])

# Retorno
return latitude, longitude

else:
return None

# Exemplo
Cidade = 'Curitiba'
Estado = 'Parana'

# Chamando a API
Coordenadas = get_coordinates(Cidade, Estado)

print('-' * 50 )
print('RETORNO')
print('-' * 50 )

print( f'Buscamos os dados da cidade {Cidade}/{Estado}:' )


print('Latitude:', Coordenadas[0] )
print('Latitude:', Coordenadas[1] )

--------------------------------------------------
RETORNO
--------------------------------------------------
Buscamos os dados da cidade Curitiba/Parana:
Latitude: -25.4295963
Latitude: -49.2712724

Você também pode gostar