<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Johny W. Alves</title>
    <description>The latest articles on DEV Community by Johny W. Alves (@johnywalves).</description>
    <link>https://dev.to/johnywalves</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F239338%2F3ad5c0f9-50a6-45bb-98c3-f7ffe9110942.jpg</url>
      <title>DEV Community: Johny W. Alves</title>
      <link>https://dev.to/johnywalves</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/johnywalves"/>
    <language>en</language>
    <item>
      <title>Rotas Apache - Como funciona o .htaccess</title>
      <dc:creator>Johny W. Alves</dc:creator>
      <pubDate>Fri, 06 Sep 2024 23:56:51 +0000</pubDate>
      <link>https://dev.to/johnywalves/rotas-apache-como-funciona-o-htaccess-kif</link>
      <guid>https://dev.to/johnywalves/rotas-apache-como-funciona-o-htaccess-kif</guid>
      <description>&lt;p&gt;Originalmente publicado em: &lt;a href="https://johnywalves.com.br/como-funciona-htaccess/" rel="noopener noreferrer"&gt;https://johnywalves.com.br/como-funciona-htaccess/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recentemente trabalhando em um projeto em PHP, tive a necessidade e entender como funciona o &lt;code&gt;.htaccess&lt;/code&gt; para configurar o Apache HTTP Server, mais conhecido como Apache 2&lt;/p&gt;

&lt;h2&gt;
  
  
  Redirecionamento de diretórios
&lt;/h2&gt;

&lt;p&gt;Ao buscar alguns endereços queremos informar para os navegadores, ou qualquer ferramenta que esteja consumindo o serviço, que alguns comportamentos devem se diferenciar do padrão&lt;/p&gt;

&lt;h3&gt;
  
  
  Habilitar o módulo
&lt;/h3&gt;

&lt;p&gt;Para realizar o redirecionamento devemos habilitar o módulo apropriado&lt;/p&gt;

&lt;p&gt;No Linux somente basta executar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;a2enmod rewrite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dentro do &lt;code&gt;.htaccess&lt;/code&gt; depois de conferir a disponibilidade do módulo devemos habilitar e adicionar as diretivas como no trecho abaixo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="no"&gt;IfModule&lt;/span&gt; &lt;span class="n"&gt;mod_rewrite&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;c&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="no"&gt;RewriteEngine&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;

   &lt;span class="c1"&gt;# onde moram os redirecionamentos&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/IfModule&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Exemplos de redirecionamentos
&lt;/h3&gt;

&lt;p&gt;Redirecionamento do protocolo HTTP para HTTPS, podemos adicionar a condição &lt;code&gt;RewriteCond %{HTTP_HOST} !localhost&lt;/code&gt; para facilitar teste locais&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{HTTPS}&lt;/span&gt; &lt;span class="n"&gt;off&lt;/span&gt;
&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{HTTP:X-Forwarded-Proto}&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="n"&gt;https&lt;/span&gt;
&lt;span class="no"&gt;RewriteRule&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="ss"&gt;:/&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="sx"&gt;%{HTTP_HOST}%{REQUEST_URI}&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;L&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;R&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Redirecionamento do subdomínio "www" para subdomínio vazio&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{HTTPS}&lt;/span&gt; &lt;span class="n"&gt;on&lt;/span&gt;
&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{HTTP_HOST}&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="n"&gt;www&lt;/span&gt;&lt;span class="p"&gt;\&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;NC&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="no"&gt;RewriteRule&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="n"&gt;https&lt;/span&gt;&lt;span class="ss"&gt;:/&lt;/span&gt;&lt;span class="o"&gt;/%&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="vg"&gt;$1&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;R&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;L&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Forçar a existência de &lt;code&gt;/&lt;/code&gt; no final dos endereços&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{REQUEST_URI}&lt;/span&gt; &lt;span class="sr"&gt;/+[^\.]+$
RewriteRule ^(.+[^/&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="no"&gt;REQUEST_URI&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;R&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;301&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="no"&gt;L&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Redirecionamento para projetos PHP trabalhando parâmetro de rotas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{REQUEST_FILENAME}&lt;/span&gt; &lt;span class="o"&gt;!-&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;
&lt;span class="no"&gt;RewriteCond&lt;/span&gt; &lt;span class="sx"&gt;%{REQUEST_FILENAME}&lt;/span&gt; &lt;span class="o"&gt;!-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;
&lt;span class="no"&gt;RewriteRule&lt;/span&gt; &lt;span class="o"&gt;^&lt;/span&gt;&lt;span class="p"&gt;(.&lt;/span&gt;&lt;span class="nf"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="err"&gt;$&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;index&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;php?&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="vg"&gt;$1&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;L&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Definições de caracteres
&lt;/h2&gt;

&lt;p&gt;Essa não é uma lista completa, sim um resumo para consulta&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Carácter/Flag&lt;/th&gt;
&lt;th&gt;Definição&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;#&lt;/td&gt;
&lt;td&gt;Instrui o servidor a ignorar a linha. Usado para incluir comentários.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[F]&lt;/td&gt;
&lt;td&gt;Proibido: instrui o servidor a retornar um erro 403 Proibido ao cliente.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[L]&lt;/td&gt;
&lt;td&gt;Última regra: instrui o servidor a parar de reescrever após a diretiva anterior ser processada.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[N]&lt;/td&gt;
&lt;td&gt;Próximo: instrui o Apache a executar novamente a regra de reescrita até que toda a reescrita esteja concluída.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[G]&lt;/td&gt;
&lt;td&gt;Perdido: instrui o servidor a entregar a mensagem de status Perdido (não existe mais).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[P]&lt;/td&gt;
&lt;td&gt;Proxy: instrui o servidor a lidar com solicitações usando o mod_proxy.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[C]&lt;/td&gt;
&lt;td&gt;Encadeamento: instrui o servidor a encadear a regra atual com a regra anterior.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[R]&lt;/td&gt;
&lt;td&gt;Redirecionar: instrui o Apache a redirecionar para a URL especificada. Observe que o código de status padrão para o sinalizador [R] é 302 (temporário); para permanentes, use [R=301].&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[NC]&lt;/td&gt;
&lt;td&gt;Sem diferenciação de maiúsculas e minúsculas: define qualquer argumento associado como insensível a maiúsculas e minúsculas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[PT]&lt;/td&gt;
&lt;td&gt;Passar adiante: instrui o mod_rewrite a passar a URL reescrita para processamento adicional.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[OR]&lt;/td&gt;
&lt;td&gt;Ou: especifica um "ou" lógico que vincula duas expressões, de modo que se qualquer uma for verdadeira, a regra associada será aplicada.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[NE]&lt;/td&gt;
&lt;td&gt;Sem escape: instrui o servidor a interpretar a saída sem escapar caracteres.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[NS]&lt;/td&gt;
&lt;td&gt;Sem sub-requisição: instrui o servidor a pular a diretiva se for uma sub-requisição interna.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[QSA]&lt;/td&gt;
&lt;td&gt;Anexar string de consulta: instrui o servidor a adicionar a string de consulta ao final da expressão.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[S=x]&lt;/td&gt;
&lt;td&gt;Pular: instrui o servidor a pular as próximas "x" regras se uma correspondência for detectada.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[E=var:value]&lt;/td&gt;
&lt;td&gt;Variável de ambiente: instrui o servidor a definir a variável "var" para "valor".&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[T=MIME-type]&lt;/td&gt;
&lt;td&gt;Tipo MIME: declara o tipo MIME do recurso alvo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[xyz]&lt;/td&gt;
&lt;td&gt;Classe de caracteres: qualquer caractere dentro dos colchetes será uma correspondência. Por exemplo, “[xyz]” corresponderá a qualquer um dos caracteres x, y ou z.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[xyz]+&lt;/td&gt;
&lt;td&gt;Classe de caracteres na qual qualquer combinação de itens dentro dos colchetes será uma correspondência. Por exemplo, “[xyz]+” corresponderá a qualquer número de x's, y's, z's ou qualquer combinação deles.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[^xyz]&lt;/td&gt;
&lt;td&gt;Não dentro de uma classe de caracteres. Por exemplo, [^xyz] corresponderá a qualquer caractere que não seja x, y ou z.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[a-z]&lt;/td&gt;
&lt;td&gt;Um hífen "-" entre dois caracteres dentro de uma classe de caracteres denota o intervalo de caracteres entre eles. Por exemplo, [a-zA-Z] corresponde a todas as letras minúsculas e maiúsculas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a{n}&lt;/td&gt;
&lt;td&gt;Número exato, n, do caractere anterior, a. Por exemplo, x{3} corresponde exatamente a três x's.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a{n,}&lt;/td&gt;
&lt;td&gt;Especifica n ou mais do caractere anterior. Por exemplo, x{3,} corresponde a três ou mais x's.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;a{n,m}&lt;/td&gt;
&lt;td&gt;Especifica um intervalo de números, entre n e m, do caractere anterior, a. Por exemplo, x{3,7} corresponde a três, quatro, cinco, seis ou sete x's.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;()&lt;/td&gt;
&lt;td&gt;Usado para agrupar caracteres juntos, considerando-os como uma única unidade. Por exemplo, (htaccess)?book corresponderá a "book", com ou sem o prefixo "htaccess".&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^&lt;/td&gt;
&lt;td&gt;Denota o início de uma expressão regular. Por exemplo, "^Hello" corresponderá a qualquer string que comece com "Hello". Sem o acento circunflexo "^", "Hello" corresponderia a qualquer parte da string.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;$&lt;/td&gt;
&lt;td&gt;Denota o final de uma expressão regular. Por exemplo, "world$" corresponderá a qualquer string que termine com "world". Sem o cifrão "$", "world" corresponderia a qualquer parte da string.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;?&lt;/td&gt;
&lt;td&gt;Declara como opcional o caractere anterior. Por exemplo, "monzas?" corresponderá a "monza" ou "monzas". Em outras palavras, "x?" corresponde a zero ou um "x".&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;!&lt;/td&gt;
&lt;td&gt;Declara negação. Por exemplo, "!string" corresponde a tudo, exceto "string".&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;Um ponto literal (ou período) indica qualquer caractere arbitrário único.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Instrui o Apache a NÃO reescrever a URL. Exemplo de sintaxe: "example.com - [F]"&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;td&gt;Corresponde a um ou mais do caractere anterior. Por exemplo, "G+" corresponde a um ou mais G's, enquanto "+" corresponderá a um ou mais caracteres de qualquer tipo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;Corresponde a zero ou mais do caractere anterior. Por exemplo, use "._" como um curinga.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;td&gt;Escape de caracteres especiais, como: ^ $ ! . _ ( ) [ ] { } \&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;.&lt;/td&gt;
&lt;td&gt;Indica um ponto literal (escapado).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;/_&lt;/td&gt;
&lt;td&gt;Zero ou mais barras.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;._&lt;/td&gt;
&lt;td&gt;Zero ou mais caracteres arbitrários.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^$&lt;/td&gt;
&lt;td&gt;Define uma string vazia.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^._$&lt;/td&gt;
&lt;td&gt;O padrão padrão para corresponder a tudo.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[^/.]&lt;/td&gt;
&lt;td&gt;Define um caractere que não seja uma barra nem um ponto.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;[^/.]+&lt;/td&gt;
&lt;td&gt;Define qualquer número de caracteres que não contenham barra nem ponto.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;http://&lt;/td&gt;
&lt;td&gt;Esta é uma declaração literal — neste caso, a string literal de caracteres, "http://".&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;^example.*&lt;/td&gt;
&lt;td&gt;Corresponde a uma string que começa com o termo "example", seguido de qualquer caractere(s).&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;^example.com$&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Define a string exata, "example.com".&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-d&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Testa se a string é um diretório existente.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-f&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Testa se a string é um arquivo existente.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;-s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Testa se o arquivo na string de teste tem um valor diferente de zero.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://htaccessbook.com/free/htaccess-character-definitions.pdf" rel="noopener noreferrer"&gt;.htaccess - made easy&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://github.com/phanan/htaccess" rel="noopener noreferrer"&gt;.htaccess Snippets&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Não seja motivado, seja disciplinado</title>
      <dc:creator>Johny W. Alves</dc:creator>
      <pubDate>Fri, 16 Oct 2020 01:23:39 +0000</pubDate>
      <link>https://dev.to/johnywalves/nao-seja-motivado-seja-disciplinado-56e2</link>
      <guid>https://dev.to/johnywalves/nao-seja-motivado-seja-disciplinado-56e2</guid>
      <description>&lt;p&gt;Originalmente publicado em: &lt;a href="https://johnywalves.com.br/seja-disciplicado/" rel="noopener noreferrer"&gt;https://johnywalves.com.br/seja-disciplicado/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na data publicação este artigo estamos passando pelo sexto mês de isolamento social por causa do Covid-19, com acadêmicas, restaurantes e cinemas fechados gerando uma certa ansiedade, nesse cenário quero compartilhar alguns pensamentos que tem mantido minha saúde mental em um nível aceitável&lt;/p&gt;

&lt;h2&gt;
  
  
  Motivação, motivo em ação
&lt;/h2&gt;

&lt;p&gt;Quando recebemos um novo projeto nosso cérebro se estimula com a novidade e com as possibilidades que se abrem, não podemos depender constantemente destes estímulos, eles são inconstantes e para alcançar objetivos a longo prazo constância é uma ferramenta essencial&lt;/p&gt;

&lt;p&gt;Para terminar uma faculdade, fortificar um músculo ou adquirir habilidade musical é fundamental trabalho constante, focado e consciente, um corredor acorda cedo todos os dias para fazer seus quilômetros, mesmo quando sua vontade era de dormir mais uma hora, isso é constância, o esforço também precisa ser focado e consciente, pois o corredor vai se lesionar se não fizer os procedimentos pré e pós-treino, assim como não realizar exercícios de fortificação e equilíbrio&lt;/p&gt;

&lt;p&gt;Na rotina ter a dedicação de fazer um pouco todo dia é melhor que fazer muito na primeira semana e abandonar, motivação nos dá um sentido e força para avançar, mas a disciplina nos faz escalar montanhas&lt;/p&gt;

&lt;h2&gt;
  
  
  Hábitos saudáveis
&lt;/h2&gt;

&lt;p&gt;Não é possível destruir um hábito, maus ou bons nosso cérebro gosta deles, funcionam e economiza  a energia gasta para pensar, é possível fazermos a mesma coisa por anos sem lembrar da motivação inicial, para destruir esse ciclo devemos reconhecer e pensar em como criar hábitos melhores&lt;/p&gt;

&lt;p&gt;Charles Duhigg no livro O Poder do Hábito diz “para mudar um hábito antigo, você precisa abordar um anseio antigo. Precisa manter as deixas e recompensas de antes, e alimentar o anseio inserindo uma nova rotina”, ou seja, para eliminar uma rotina devemos observar o que está a motivando e entender a necessidade que o gerou, que pode ser fome em determinada parte do dia, necessidade de contato social, tédio, ansiedade entre outros, quando esse sentimento aparecer devemos substituir nossa ação por algo mais saudável que também vai chegar à recompensa&lt;/p&gt;

&lt;p&gt;Toda manhã minha equipe tem uma reunião matinal que acontece em horário marcado, para focar na reunião e controlar a ansiedade, tinha o hábito de comer algo mesmo ela acontecendo pouco depois do café da manhã, pensando nesse comportamento, que estava ajudando a ganhar uns quilos, substitui esse lanchinho por um chá, algo rápido de fazer que realiza a mesma função, pensando no hábito e buscando alternativas para o mesmo, quando simplesmente tentei não comer algo me incomodou e não durou, mas quando outro hábito subscreve o antigo isso gera bons resultados&lt;/p&gt;

&lt;h2&gt;
  
  
  Você só tem um corpo
&lt;/h2&gt;

&lt;p&gt;Ao longo do dia nossa capacidade tomar boas decisões vai sumindo, vamos cansando e pensar é um trabalho intenso, vamos aceitando nossos desejos mais facilmente, seja má decisões de compra ou escolha de comidas menos saudáveis, embora seja uma atividade mental escolher gera um gasto físico&lt;/p&gt;

&lt;p&gt;Para ampliar nossa capacidade de tomar boas decisões devemos aumentar a tolerância a fadiga e liberar o estresse, a melhor maneira de alcançar isso é a praticar atividades físicas, nosso corpo é adaptativo e preguiçoso quanto mais uma tarefa é constante aos poucos vamos nos tornando mais capazes, atividades como correr, levantar peso, ficar sentado no sofá ou ser resiliente, por isso quando mais vezes ele ficar fadigado, menor a possibilidade se entrega a ela&lt;/p&gt;

&lt;p&gt;O seres humanos foram forjados para correr e caçar, nossos instintos de encarar os desafios é fugir ou lutar, mas na vida contemporânea resolvemos através de diálogo e atividades intelectuais, que gera um estresse do atrito na vontade do nosso corpo e a atividades de nossas mentes, para se livrar desse estresse devemos dar ao nosso corpo essa corrida e essa luta removendo os bloqueios para as nossas capacidades mentais, nada melhor para limpar a mente que uma corrida&lt;/p&gt;

&lt;h2&gt;
  
  
  Se permita e se cobre
&lt;/h2&gt;

&lt;p&gt;Saúde é um conjunto de vários aspectos entre eles o mental e o social, tempo para se divertir é essencial, sendo escasso e de qualidade melhor ainda&lt;/p&gt;

&lt;p&gt;O momento de ser produtivo, deve ser reservado para isso, evite distrações, quando for trabalhar se isole do que for possível, coloque o celular longe, por exemplo alguns escritores quando vão escrever usam uma máquina própria para isso, sem internet ou outras que podem desviar a atenção &lt;/p&gt;

&lt;p&gt;Da mesma maneira as atividades de lazer e contato pessoal devem ser escassas e reservadas para certos momentos do dia e da semana, como em algumas horas no final do dia, aos domingos, isso nos faz valorizar esses momentos buscando qualidade para eles, nesse caso o isolamento é importante também, o trabalho e outras atividades estressantes devem ficar o mais longe possível&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;Para produzir esse texto retornei a algumas fontes que me ajudaram a formular esses pensamentos, como o livro O Poder do Hábito do Charles Duhigg, a melhor fonte que já encontrei sobre como formar novos hábitos, recomendo 100%, e o vídeo do CGP Grey o &lt;a href="https://www.youtube.com/watch?v=snAhsXyO3Ck&amp;amp;t=2s" rel="noopener noreferrer"&gt;Lockdown Productivity: Spaceship You&lt;/a&gt; ótima reflexão sobre restrição de espaços e condições&lt;/p&gt;

&lt;p&gt;Espero por ajudar alguém como consegui me ajudar&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Análise da Felicidade com Pandas</title>
      <dc:creator>Johny W. Alves</dc:creator>
      <pubDate>Tue, 04 Aug 2020 11:51:15 +0000</pubDate>
      <link>https://dev.to/johnywalves/analise-da-felicidade-com-pandas-1pfk</link>
      <guid>https://dev.to/johnywalves/analise-da-felicidade-com-pandas-1pfk</guid>
      <description>&lt;p&gt;Originalmente publicado em: &lt;a href="https://johnywalves.com.br/happiness-radar/" rel="noopener noreferrer"&gt;https://johnywalves.com.br/happiness-radar/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Entre várias fontes de dados no Kaggle uma delas é a relação de felicidade com algumas estátisticas de uma país o &lt;a href="https://www.kaggle.com/unsdsn/world-happiness" rel="noopener noreferrer"&gt;World Happiness Report&lt;/a&gt; vamos gerar algumas visualizações&lt;/p&gt;

&lt;h2&gt;
  
  
  Correlação
&lt;/h2&gt;

&lt;p&gt;Instalação das bibliotecas utilizadas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;pandas matplotlib
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Importação com apelido para elas bibliotecas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;pandas&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;numpy&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;plt&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;matplotlib.pyplot&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;figure&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fazendo o download da base em &lt;a href="https://www.kaggle.com/unsdsn/world-happiness" rel="noopener noreferrer"&gt;World Happiness Report&lt;/a&gt; carregando para a memória e visualizando os primeiro registros&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./datasets_894_813759_2019.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Overall rank&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Country or region&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Score&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;GDP per capita&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Social support&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Healthy life expectancy&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Freedom to make life choices&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Generosity&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Perceptions of corruption&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Finland&lt;/td&gt;
&lt;td&gt;7.769&lt;/td&gt;
&lt;td&gt;1.340&lt;/td&gt;
&lt;td&gt;1.587&lt;/td&gt;
&lt;td&gt;0.986&lt;/td&gt;
&lt;td&gt;0.596&lt;/td&gt;
&lt;td&gt;0.153&lt;/td&gt;
&lt;td&gt;0.393&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Denmark&lt;/td&gt;
&lt;td&gt;7.600&lt;/td&gt;
&lt;td&gt;1.383&lt;/td&gt;
&lt;td&gt;1.573&lt;/td&gt;
&lt;td&gt;0.996&lt;/td&gt;
&lt;td&gt;0.592&lt;/td&gt;
&lt;td&gt;.252&lt;/td&gt;
&lt;td&gt;0.410&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Norway&lt;/td&gt;
&lt;td&gt;7.554&lt;/td&gt;
&lt;td&gt;1.488&lt;/td&gt;
&lt;td&gt;1.582&lt;/td&gt;
&lt;td&gt;1.028&lt;/td&gt;
&lt;td&gt;0.603&lt;/td&gt;
&lt;td&gt;0.271&lt;/td&gt;
&lt;td&gt;0.341&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Iceland&lt;/td&gt;
&lt;td&gt;7.494&lt;/td&gt;
&lt;td&gt;1.380&lt;/td&gt;
&lt;td&gt;1.624&lt;/td&gt;
&lt;td&gt;1.026&lt;/td&gt;
&lt;td&gt;0.591&lt;/td&gt;
&lt;td&gt;0.354&lt;/td&gt;
&lt;td&gt;0.118&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Netherlands&lt;/td&gt;
&lt;td&gt;7.488&lt;/td&gt;
&lt;td&gt;1.396&lt;/td&gt;
&lt;td&gt;1.522&lt;/td&gt;
&lt;td&gt;0.999&lt;/td&gt;
&lt;td&gt;0.557&lt;/td&gt;
&lt;td&gt;0.322&lt;/td&gt;
&lt;td&gt;0.298&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Trabalhar com esses nomes é muito chato, vamos simplificar um pouco, renomeando as colunas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Overall rank&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Rank&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Country or region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GDP per capita&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GDP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Social support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Social&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Healthy life expectancy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Healthy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                   &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Freedom to make life choices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Freedom&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Perceptions of corruption&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Corruption&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Visualizando as correlações entre os atributos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;values_columns&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GDP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Social&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Healthy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Freedom&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Generosity&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Corruption&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;corr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;values_columns&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;corr&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;corr&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A ideia da matrix de correlação é encontrar o resultado mais longe do zero ou seja mais perto de 1 ou -1&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Score&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;GDP&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Social&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Healthy&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Freedom&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Generosity&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Corruption&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Score&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.793883&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.777058&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.779883&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.566742&lt;/td&gt;
&lt;td&gt;0.075824&lt;/td&gt;
&lt;td&gt;0.385613&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;GDP&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.793883&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;td&gt;0.754906&lt;/td&gt;
&lt;td&gt;0.835462&lt;/td&gt;
&lt;td&gt;0.379079&lt;/td&gt;
&lt;td&gt;-0.079662&lt;/td&gt;
&lt;td&gt;0.298920&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Social&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.777058&lt;/td&gt;
&lt;td&gt;0.754906&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;td&gt;0.719009&lt;/td&gt;
&lt;td&gt;0.447333&lt;/td&gt;
&lt;td&gt;-0.048126&lt;/td&gt;
&lt;td&gt;0.181899&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Healthy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0.779883&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.835462&lt;/td&gt;
&lt;td&gt;0.719009&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;td&gt;0.390395&lt;/td&gt;
&lt;td&gt;-0.029511&lt;/td&gt;
&lt;td&gt;0.295283&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Freedom&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.566742&lt;/td&gt;
&lt;td&gt;0.379079&lt;/td&gt;
&lt;td&gt;0.447333&lt;/td&gt;
&lt;td&gt;0.390395&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;td&gt;0.269742&lt;/td&gt;
&lt;td&gt;0.438843&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Generosity&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.075824&lt;/td&gt;
&lt;td&gt;-0.079662&lt;/td&gt;
&lt;td&gt;-0.048126&lt;/td&gt;
&lt;td&gt;-0.029511&lt;/td&gt;
&lt;td&gt;0.269742&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;td&gt;0.326538&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Corruption&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.385613&lt;/td&gt;
&lt;td&gt;0.298920&lt;/td&gt;
&lt;td&gt;0.181899&lt;/td&gt;
&lt;td&gt;0.295283&lt;/td&gt;
&lt;td&gt;0.438843&lt;/td&gt;
&lt;td&gt;0.326538&lt;/td&gt;
&lt;td&gt;1.000000&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;O valor mais próximos &lt;strong&gt;Score&lt;/strong&gt; são os &lt;strong&gt;Gross Domestic Product (GDP) per capita&lt;/strong&gt; e &lt;strong&gt;Healthy life expectancy&lt;/strong&gt;, mas podemos visualizar isso em gráfico&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;plotting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scatter_matrix&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;values_columns&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;savefig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;radar_scatter_matrix_correlation.svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;formatstr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SRCuLhVX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_scatter_matrix_correlation.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRCuLhVX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_scatter_matrix_correlation.svg" alt="Scatter Happiness Correlation" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Informações geográficas
&lt;/h2&gt;

&lt;p&gt;Para a próxima visualização precisamos de mais informações no caso os continentes escolhi a base do &lt;a href="https://www.geonames.org/countries/" rel="noopener noreferrer"&gt;Lista de paises do Geonames&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Como a informação está na web precisamos fazer a leitura com Web Scraping, para iniciar vamos fazer a instalação das bibliotecas do BeautifulSoup, funções para lidar com requisições HTTP e o pacote de leitura de tags do pandas&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;beautifulsoup4 requests lxml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ler as informações da tabela do site e converter&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Importação das bibliotecas para Web Scraping e requisições HTTP
&lt;/span&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;bs4&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;BeautifulSoup&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;get&lt;/span&gt;

&lt;span class="c1"&gt;# Colher o conteúdo do geonames
&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://www.geonames.org/countries/&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;
&lt;span class="c1"&gt;# Converter o texto para elementos de tags do Beautiful Soup
&lt;/span&gt;&lt;span class="n"&gt;soup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;BeautifulSoup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Para visualizar de forma estruturada: print(soup.prettify())
&lt;/span&gt;
&lt;span class="c1"&gt;# Procurar a tag &amp;lt;table&amp;gt; com o id "countries"
&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;soup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;find&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;table&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attrs&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;countries&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="c1"&gt;# Para visualizar de forma estruturada: print(table.prettify())
&lt;/span&gt;
&lt;span class="c1"&gt;# Converter o conteúdo DataFrame do pandas
# Alterando valor NA para NT, para evitar a conversão para valores nulos
&lt;/span&gt;&lt;span class="n"&gt;table_countries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_html&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;td&amp;gt;NA&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;td&amp;gt;NT&amp;lt;/td&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Selecionar os campos que serão usados
&lt;/span&gt;&lt;span class="n"&gt;countries&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;table_countries&lt;/span&gt;&lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Area in km²&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Population&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="n"&gt;countries&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Country&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Area in km²&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Population&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Continent&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Andorra&lt;/td&gt;
&lt;td&gt;468.0&lt;/td&gt;
&lt;td&gt;77006&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;United Arab Emirates&lt;/td&gt;
&lt;td&gt;82880.0&lt;/td&gt;
&lt;td&gt;9630959&lt;/td&gt;
&lt;td&gt;AS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Afghanistan&lt;/td&gt;
&lt;td&gt;647500.0&lt;/td&gt;
&lt;td&gt;37172386&lt;/td&gt;
&lt;td&gt;AS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Antigua and Barbuda&lt;/td&gt;
&lt;td&gt;443.0&lt;/td&gt;
&lt;td&gt;96286&lt;/td&gt;
&lt;td&gt;NT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anguilla&lt;/td&gt;
&lt;td&gt;102.0&lt;/td&gt;
&lt;td&gt;13254&lt;/td&gt;
&lt;td&gt;NT&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Normalmente trabalhando com várias bases de dados é comum as informações não cruzam, no caso de países tem visões diferentes de mundo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;countries&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como vamos tem alguns países diferentes, por ausência ou concepção de nomenclaturas&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;{'Congo (Brazzaville)', 'Congo (Kinshasa)', 'Czech Republic', 'Northern Cyprus', 'Palestinian Territories', 'Swaziland', 'Trinidad &amp;amp; Tobago'}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Vamos unir os países existentes em ambas as bases&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;countries&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;left_on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;right_on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;drop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Area in km²&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Area&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Rank&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Region&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Score&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;GDP&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Social&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Healthy&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Freedom&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Generosity&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Corruption&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Area&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Population&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Continent&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Finland&lt;/td&gt;
&lt;td&gt;7.769&lt;/td&gt;
&lt;td&gt;1.340&lt;/td&gt;
&lt;td&gt;1.587&lt;/td&gt;
&lt;td&gt;0.986&lt;/td&gt;
&lt;td&gt;0.596&lt;/td&gt;
&lt;td&gt;0.153&lt;/td&gt;
&lt;td&gt;0.393&lt;/td&gt;
&lt;td&gt;337030.0&lt;/td&gt;
&lt;td&gt;5518050&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Denmark&lt;/td&gt;
&lt;td&gt;7.600&lt;/td&gt;
&lt;td&gt;1.383&lt;/td&gt;
&lt;td&gt;1.573&lt;/td&gt;
&lt;td&gt;0.996&lt;/td&gt;
&lt;td&gt;0.592&lt;/td&gt;
&lt;td&gt;0.252&lt;/td&gt;
&lt;td&gt;0.410&lt;/td&gt;
&lt;td&gt;43094.0&lt;/td&gt;
&lt;td&gt;5797446&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Norway&lt;/td&gt;
&lt;td&gt;7.554&lt;/td&gt;
&lt;td&gt;1.488&lt;/td&gt;
&lt;td&gt;1.582&lt;/td&gt;
&lt;td&gt;1.028&lt;/td&gt;
&lt;td&gt;0.603&lt;/td&gt;
&lt;td&gt;0.271&lt;/td&gt;
&lt;td&gt;0.341&lt;/td&gt;
&lt;td&gt;324220.0&lt;/td&gt;
&lt;td&gt;5314336&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Iceland&lt;/td&gt;
&lt;td&gt;7.494&lt;/td&gt;
&lt;td&gt;1.380&lt;/td&gt;
&lt;td&gt;1.624&lt;/td&gt;
&lt;td&gt;1.026&lt;/td&gt;
&lt;td&gt;0.591&lt;/td&gt;
&lt;td&gt;0.354&lt;/td&gt;
&lt;td&gt;0.118&lt;/td&gt;
&lt;td&gt;103000.0&lt;/td&gt;
&lt;td&gt;353574&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Netherlands&lt;/td&gt;
&lt;td&gt;7.488&lt;/td&gt;
&lt;td&gt;1.396&lt;/td&gt;
&lt;td&gt;1.522&lt;/td&gt;
&lt;td&gt;0.999&lt;/td&gt;
&lt;td&gt;0.557&lt;/td&gt;
&lt;td&gt;0.322&lt;/td&gt;
&lt;td&gt;0.298&lt;/td&gt;
&lt;td&gt;41526.0&lt;/td&gt;
&lt;td&gt;17231017&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;E finalmente gerar um gráfico com o Score de felicidade e as informações que são mais correlacionadas, com o tamanho dos circulos pela pontuação de estimativa de vida e separado por cores de continentes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Definição do tamanho do gráfico
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# Colher os continentes diferentes da base
&lt;/span&gt;&lt;span class="n"&gt;continents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# Geração dos ciclos
&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;continent&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;continents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;dc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;continent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GDP&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Healthy&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;label&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;continent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Adicionar título
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;title&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Scatter Happiness Radar&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Adicionar rótulos nos eixos
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;xlabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ylabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GDP per capita&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Adicionar legenda para os continentes
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;legend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;scatterpoints&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;frameon&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;labelspacing&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;title&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continents&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Salvar gráfico em arquivo
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;savefig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;radar_scatter_happiness_radar.svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;formatstr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# Apresentar o gráfico em tela
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iavFgwDg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_scatter_happiness_radar.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iavFgwDg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_scatter_happiness_radar.svg" alt="Scatter Happiness" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Coordenadas
&lt;/h2&gt;

&lt;p&gt;Agora vamos adicionar as coordendas para os países, para isso tem outra fonte de dados no Kaggle no &lt;a href="https://www.kaggle.com/eidanch/counties-geographic-coordinates" rel="noopener noreferrer"&gt;Counties geographic coordinates&lt;/a&gt;, vamos importar e visualizar essas informações&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;coods&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./datasets_2312_3908_countries.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;coods&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;country&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;latitude&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;longitude&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;AD&lt;/td&gt;
&lt;td&gt;42.546245&lt;/td&gt;
&lt;td&gt;1.601554&lt;/td&gt;
&lt;td&gt;Andorra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AE&lt;/td&gt;
&lt;td&gt;23.424076&lt;/td&gt;
&lt;td&gt;53.847818&lt;/td&gt;
&lt;td&gt;United Arab Emirates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AF&lt;/td&gt;
&lt;td&gt;33.939110&lt;/td&gt;
&lt;td&gt;67.709953&lt;/td&gt;
&lt;td&gt;Afghanistan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AG&lt;/td&gt;
&lt;td&gt;17.060816&lt;/td&gt;
&lt;td&gt;-61.796428&lt;/td&gt;
&lt;td&gt;Antigua and Barbuda&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AI&lt;/td&gt;
&lt;td&gt;18.220554&lt;/td&gt;
&lt;td&gt;-63.068615&lt;/td&gt;
&lt;td&gt;Anguilla&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Novamente vamos conferir as informações divergentes&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coods&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;{'Ivory Coast', 'Myanmar', 'North Macedonia', 'South Sudan'}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Novamente vamos unir essas informações e visualizar como fica após&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;cc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pd&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;merge&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;coods&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;left_on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Region&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;right_on&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;drop&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;country&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;axis&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;head&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Rank&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Region&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Score&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;GDP&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Social&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Healthy&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Freedom&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Generosity&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Corruption&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Area&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Population&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Continent&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;latitude&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;longitude&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Finland&lt;/td&gt;
&lt;td&gt;7.769&lt;/td&gt;
&lt;td&gt;1.340&lt;/td&gt;
&lt;td&gt;1.587&lt;/td&gt;
&lt;td&gt;0.986&lt;/td&gt;
&lt;td&gt;0.596&lt;/td&gt;
&lt;td&gt;0.153&lt;/td&gt;
&lt;td&gt;0.393&lt;/td&gt;
&lt;td&gt;337030.0&lt;/td&gt;
&lt;td&gt;5518050&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;td&gt;61.924110&lt;/td&gt;
&lt;td&gt;25.748151&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Denmark&lt;/td&gt;
&lt;td&gt;7.600&lt;/td&gt;
&lt;td&gt;1.383&lt;/td&gt;
&lt;td&gt;1.573&lt;/td&gt;
&lt;td&gt;0.996&lt;/td&gt;
&lt;td&gt;0.592&lt;/td&gt;
&lt;td&gt;0.252&lt;/td&gt;
&lt;td&gt;0.410&lt;/td&gt;
&lt;td&gt;43094.0&lt;/td&gt;
&lt;td&gt;5797446&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;td&gt;56.263920&lt;/td&gt;
&lt;td&gt;9.501785&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Norway&lt;/td&gt;
&lt;td&gt;7.554&lt;/td&gt;
&lt;td&gt;1.488&lt;/td&gt;
&lt;td&gt;1.582&lt;/td&gt;
&lt;td&gt;1.028&lt;/td&gt;
&lt;td&gt;0.603&lt;/td&gt;
&lt;td&gt;0.271&lt;/td&gt;
&lt;td&gt;0.341&lt;/td&gt;
&lt;td&gt;324220.0&lt;/td&gt;
&lt;td&gt;5314336&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;td&gt;60.472024&lt;/td&gt;
&lt;td&gt;8.468946&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Iceland&lt;/td&gt;
&lt;td&gt;7.494&lt;/td&gt;
&lt;td&gt;1.380&lt;/td&gt;
&lt;td&gt;1.624&lt;/td&gt;
&lt;td&gt;1.026&lt;/td&gt;
&lt;td&gt;0.591&lt;/td&gt;
&lt;td&gt;0.354&lt;/td&gt;
&lt;td&gt;0.118&lt;/td&gt;
&lt;td&gt;103000.0&lt;/td&gt;
&lt;td&gt;353574&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;td&gt;64.963051&lt;/td&gt;
&lt;td&gt;-19.020835&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Netherlands&lt;/td&gt;
&lt;td&gt;7.488&lt;/td&gt;
&lt;td&gt;1.396&lt;/td&gt;
&lt;td&gt;1.522&lt;/td&gt;
&lt;td&gt;0.999&lt;/td&gt;
&lt;td&gt;0.557&lt;/td&gt;
&lt;td&gt;0.322&lt;/td&gt;
&lt;td&gt;0.298&lt;/td&gt;
&lt;td&gt;41526.0&lt;/td&gt;
&lt;td&gt;17231017&lt;/td&gt;
&lt;td&gt;EU&lt;/td&gt;
&lt;td&gt;52.132633&lt;/td&gt;
&lt;td&gt;5.291266&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Gerar o gráfico de scatter com posicionamento do geográfico&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;continents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;continent&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;continents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;dc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;continent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;longitude&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;latitude&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;savefig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;radar_coods.svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;formatstr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dqF7sGkA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_coods.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dqF7sGkA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_coods.svg" alt="World Map Coords" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Agora adicionando a imagem de fundo do mapa mundi &lt;a href="https://clipart.me/objects/world-map-vector-free-28675" rel="noopener noreferrer"&gt;Clip Art Free - World Map&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;matplotlib.image&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;mpimg&lt;/span&gt;
&lt;span class="n"&gt;world_img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mpimg&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;imread&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./world-map.png&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# 2000 x 1202
&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;figure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;figsize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;continents&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;unique&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;continent&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;continents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;dc&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Continent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;continent&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scatter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;longitude&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;latitude&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;dc&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Score&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;pow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;#
&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;imshow&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;world_img&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;extent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;149&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;190&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;75&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;105&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;alpha&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;# left, right, bottom, top
&lt;/span&gt;&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;savefig&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;radar_world_map.svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;formatstr&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;svg&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;plt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;show&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--54H83Qku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_world_map.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--54H83Qku--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://johnywalves.com.br/figures/radar_world_map.svg" alt="World Map" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Salvando a fonte de dados tratada para futuros usos&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;cc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_csv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;./countries.csv&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;index&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;header&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você pode baixar aqui: &lt;a href="https://johnywalves.com.br/data/countries.csv" rel="noopener noreferrer"&gt;Countries with Coordenates&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jakevdp.github.io/PythonDataScienceHandbook/04.06-customizing-legends.html" rel="noopener noreferrer"&gt;Python Data Science Handbook - Customizing Plot Legends&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
