<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[FEA.dev - Medium]]></title>
        <description><![CDATA[Somos uma entidade estudantil da Universidade de São Paulo. Temos como objetivo unir o mundo dos negócios com o universo da programação, criando conteúdo e conectando estudantes e parceiros em um aprendizado comum. - Medium]]></description>
        <link>https://medium.com/fea-dev?source=rss----cc94e06383b8---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>FEA.dev - Medium</title>
            <link>https://medium.com/fea-dev?source=rss----cc94e06383b8---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 19 May 2026 08:55:33 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/fea-dev" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Python | Fazendo Gráficos Candlestick com o Plotly]]></title>
            <link>https://medium.com/fea-dev/python-fazendo-gr%C3%A1ficos-candlestick-com-o-plotly-e7f0f951a6ef?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/e7f0f951a6ef</guid>
            <category><![CDATA[yahoo-finance]]></category>
            <category><![CDATA[plotly]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[candlesticks]]></category>
            <category><![CDATA[finance]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Sun, 01 Sep 2024 21:13:43 GMT</pubDate>
            <atom:updated>2024-09-01T21:23:26.383Z</atom:updated>
            <content:encoded><![CDATA[<h3>Por Felippe Bertollo</h3><p>O gráfico Candlestick é amplamente utilizado, por exemplo, pela indústria de <em>trading</em>, com enfoque a tendências geralmente de curto prazo, ditadas pela lei de oferta e demanda aplicada a títulos e valores mobiliários.</p><p>Em resumo, um gráfico como esse consiste em barras em cascata, com referenciais aos dados de abertura, fechamento, mínimo e máximo, no que se refere à cotação das ações ao longo dos dias, contando também com duas cores para compreender a movimentação da ação.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*xWeMn_CPteRa5It_" /><figcaption>Fonte: rc.xyz no Unsplash (<a href="https://unsplash.com/pt-br/@moneyphotos">https://unsplash.com/pt-br/@moneyphotos</a>)</figcaption></figure><p>Barras similares a <em>boxplots</em> indivíduais para cada unidade de tempo do período sendo analisado mostram, em “caixas”, os preços de abertura e fechamento do mercado. A “sombra”, ou seja, a linha vertical que rodeia a “caixa” se estende por toda a faixa de preço até atingir o máximo ou o mínimo da cotação.</p><p>Além disso, um outro elemento é fundamental nesse tipo de gráfico: a sua cor. Quando as “caixas” são vermelhas, tem-se preços de fechamento inferiores aos de abertura, e verdes quando do contrário, conforme a imagem abaixo:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/649/0*2o6iLvwJpOkDWmiH.png" /><figcaption>Fonte: Bússola do Investidor (<a href="https://www.bussoladoinvestidor.com.br/grafico-de-candlestick/">https://www.bussoladoinvestidor.com.br/grafico-de-candlestick/</a>)</figcaption></figure><p>Indo ao aspecto prático, como podemos elaborar esse tipo de gráfico, no Python, para aprimoramos nossas análises em determinadas classes de ativos?</p><p>O código fundamental para esse tipo de análise é bem simples, baseando-se, no exemplo deste artigo, em três bibliotecas-chave do Python:</p><pre>import yfinance as yf<br>import pandas as pd<br>import plotly.express as px</pre><p>Agora, podemos definir algumas ações para fundamentarmos nossa análise, determinando a janela de tempo da dela e utilizando o Yahoo Finance para obter os dados:</p><pre>acoes = [&quot;VALE3.SA&quot;, &quot;PETR4.SA&quot;, &quot;ITUB4.SA&quot;, &quot;BBDC4.SA&quot;, &quot;B3SA3.SA&quot;]<br><br>start_date = &#39;2020-01-01&#39;<br>end_date = &#39;2022-12-31&#39;<br><br>dados_acoes = yf.download(acoes, start_date, end_date, interval=&#39;1d&#39;)</pre><p>Utilizando o Pandas, podemos criar um DataFrame para armazenar os dados baixados. O resultado é uma tabela multi-index que contém, no primeiro nível das colunas, a informação sendo mostrada, e, no segundo, a ação em si:</p><pre>df = pd.DataFrame(dados_acoes)<br>display(df)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T56FTV0fnFXln9Gh85fC8w.png" /><figcaption>Output gerado pelo display(df)</figcaption></figure><p>O código abaixo retorna todos as informações baixadas, individualmente e para cada ação, pela API do Yahoo Finance:</p><pre>print(df.columns.levels[0])</pre><p>| Index([‘Adj Close’, ‘Close’, ‘High’, ‘Low’, ‘Open’, ‘Volume’], dtype=’object’)</p><p>Dentre eles, destacam-se “Close”, “High”, “Low” e “Open”, que fundamentam a base do Candlestick.</p><p>A análise abaixo focaliza o Itaú Unibanco (#ITUB4), e faz uma análise preliminar do fechamento ajustado dessa empresa, a ser comparado posteriormente ao Candlestick:</p><pre>df_adj_close = df[[&#39;Adj Close&#39;]].droplevel(level=0, axis=1)[[&#39;ITUB4.SA&#39;]]<br><br>fig = px.line(df_adj_close, x=df_adj_close.index, y=df_adj_close.columns, title=&quot;Gráfico de Linhas - 5 ações&quot;)<br>fig.update_layout(xaxis_title=&quot;Data&quot;, yaxis_title=&quot;Preço&quot;, template=&#39;plotly_dark&#39;)<br>fig.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wCIiA7teUVpNgWdkzQ5BLg.png" /><figcaption>Output para fig.show()</figcaption></figure><p>Agora, conforme informado anteriormente, podemos coletar os dados que fundamentam o Candlestick. O código abaixo faz exatamente isso, e separa cada tipo de informação em um DataFrame individual:</p><pre>df_open = df[[&#39;Open&#39;]].droplevel([0], axis=1)[[&#39;ITUB4.SA&#39;]].rename(columns={&quot;ITUB4.SA&quot;: &quot;Open&quot;})<br>df_high = df[[&#39;High&#39;]].droplevel([0], axis=1)[[&#39;ITUB4.SA&#39;]].rename(columns={&quot;ITUB4.SA&quot;: &quot;High&quot;})<br>df_low = df[[&#39;Low&#39;]].droplevel([0], axis=1)[[&#39;ITUB4.SA&#39;]].rename(columns={&quot;ITUB4.SA&quot;: &quot;Low&quot;})<br>df_close = df[[&#39;Close&#39;]].droplevel([0], axis=1)[[&#39;ITUB4.SA&#39;]].rename(columns={&quot;ITUB4.SA&quot;: &quot;Close&quot;})</pre><p>Podemos, então, unificar todas as informações baixadas na forma de um único DataFrame, utilizando o método .concat() do Pandas:</p><pre>df = pd.concat([df_open, df_high, df_low, df_close], axis=1)<br>display(df)</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*zQYDj9m3q_xqP6a4YPNofQ.png" /><figcaption>Output para display(df)</figcaption></figure><p>Agora, resta somente o gráfico do Candlestick em si. Para tal, usaremos a terceira e última biblioteca que importamos, o Plotly. Dentre as vantagens dessa biblioteca, destaca-se um método específico para esse tipo de gráfico. O código abaixo gera o resultado final que precisaremos analisar:</p><pre>fig = go.Figure(data=[go.Candlestick(x = df.index,<br>                                     open = df[&#39;Open&#39;],<br>                                     high = df[&#39;High&#39;],<br>                                     low = df[&#39;Low&#39;],<br>                                     close = df[&#39;Close&#39;],<br>                                     )])<br>fig.update_layout(template=&#39;plotly_dark&#39;, title=&#39;CandleStick - ITUB4&#39;)<br><br>fig.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YmgK5C1SSBB3QOoJOG9Dkg.png" /><figcaption>Output para fig.show()</figcaption></figure><p>Vale ressaltar que, em razão de o Plotly apresentar como outputs gráficos interativos, será sempre possível melhorar a visualização das informações à medida em que aplicamos zoom a um determinado período de análise, como no caso abaixo, no qual foi selecionado o primeiro semestre de 2021 para a observação:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*T-9-MiZCuspbq06T5L8bWQ.png" /><figcaption>Restringindo o período de análise via interação no Plotly</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e7f0f951a6ef" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/python-fazendo-gr%C3%A1ficos-candlestick-com-o-plotly-e7f0f951a6ef">Python | Fazendo Gráficos Candlestick com o Plotly</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Python Dentro do Excel: Uma Revolução para a Análise de Dados]]></title>
            <link>https://medium.com/fea-dev/python-dentro-do-excel-uma-revolu%C3%A7%C3%A3o-para-a-an%C3%A1lise-de-dados-698345eaaf71?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/698345eaaf71</guid>
            <category><![CDATA[excel]]></category>
            <category><![CDATA[dados]]></category>
            <category><![CDATA[planilha]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[programação]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Sun, 11 Aug 2024 21:38:43 GMT</pubDate>
            <atom:updated>2024-08-11T21:41:29.634Z</atom:updated>
            <content:encoded><![CDATA[<h3>Por Felippe Bertollo e Rodrigo Souza</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*DyE5F6WAT-w7sTPHdBRi-A.png" /></figure><p><strong>Introdução</strong></p><p>A Microsoft lançou uma novidade incrível para os usuários do Excel inscritos no programa do Office Insider: o =PY( ).</p><p>Essa função permite rodar códigos em Python diretamente dentro do Excel, permitindo uma maior integração entre a capacidade de processamento do Python e de suas bibliotecas (especificamente Pandas, Matplotlib, Numpy, Seaborn e Statsmodels) e a visibilidade didática dos dados, oferencendo um potencial enorme para análise de dados.</p><p>Neste artigo, será explorado como essa ferramenta pode ser utilizada na prática. Não deixe de <a href="https://youtu.be/SnWm3f_-WR4">conferir o vídeo que gravamos sobre este mesmo assunto em nosso canal do YouTube.</a></p><p><strong>A Ferramenta</strong></p><p>Ao digitar =PY() dentro do Excel, como qualquer outra fórmula, estando devidamente inscrito no programa do Office Insider, o Excel ativa uma espécie de IDE dentro da célula em foco. A barra de fórmulas converte-se em um sucinto editor de códigos no qual as bibliotecas mais essenciais do Python podem ser importadas, mas ainda sem acesso a internet.</p><p>No menu de fórmulas, o Excel apresenta algumas funcionalidades que permitem exibir amostras do funcionamento das bibliotecas, guias de utilização e até mesmo uma coletânea com todos os códigos em uso pelo arquivo.</p><p>As bibliotecas habilitadas até o presente momento são:</p><ul><li>Pandas, ou “pd”</li><li>Numpy, ou “np”</li><li>Matplotlib, ou “plt”</li><li>Seaborn, ou “sns”</li><li>Statsmodels, ou “sm”</li></ul><p>Por questões de segurança, a Microsoft informa, pelo menos até a data deste artigo, que ainda não é possível conectar-se a rede, inviabilizando, por ora, o uso de outras bibliotecas conhecidas, como o Yahoo Finance.</p><p><strong>1ª Aplicação: Portfólio com 8 Ativos</strong></p><p>Em um portfólio, pode ser útil analisar a correlação entre os ativos que o compõe, ou estabelecer seu desvio-padrão, com vista a aprimorar, respectivamente, os processos de diversificação do risco e de apuração da volatilidade.</p><p>Para cálculo do desvio-padrão, faz-se necessária a utilização da covariância, que, tal qual a correlação, consiste em uma métrica que busca avaliar a relação entre duas variáveis. Apesar de variarem quanto à utilização, para fins de interpretação direta dos <em>outputs</em>, a correlação é mais indicada, já que sempre apresentará valores entre -1 e 1.</p><p>Mais especificamente:</p><ul><li><strong>Covariância</strong>: indica a direção da relação entre as variáveis. Se positiva, as variáveis tendem a aumentar juntas; se negativa, uma tende a aumentar enquanto a outra diminui.</li><li><strong>Correlação (neste caso, linear de Pearson)</strong>: mede a força e a direção da relação linear entre duas variáveis, variando de -1 a 1. Um valor de 1 indica uma correlação perfeita positiva, -1 uma correlação perfeita negativa, e 0 nenhuma correlação.</li></ul><p>No Excel, partindo-se de uma tabela com os preços de fechamento dos ativos (nesse caso, apurados mês a mês), deve-se, primeiramente, calcular os retornos dos ativos. Há uma fórmula simples para tal, que é (W1-W0)/W0, ou simplesmente W1/W0 - 1, onde W1 é o valor do ativo no momento t1, e W0, no momento t0.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1023/1*OK0Lk07yMIld6xLM5hYLIA.png" /><figcaption>Início da tabela de retorno (W1/W0 -1)</figcaption></figure><p>Após essa primeira etapa, pode-se digitar as fórmulas =CORREL(), para o cálculo da correlação linear de Pearson, e =COVARIAÇÃO.S(), para cálculo da covariância amostral. Ambas as fórmulas solicitam duas séries de dados de igual tamanho como argumentos.</p><p>Para facilitar a montagem da matriz completa de correlação/covariância, que pode ser de difícil elaboração em se tratando de portfólios com mais ativos, pode-se utilizar uma combinação entre as fórmulas DESLOC() e CORRESP() para selecionar corretamente os intervalos de retornos dos ativos, e inseri-los como série de dados dentro da fórmula principal, à medida em que se arrasta a fórmula para o lado e para baixo.</p><blockquote>=CORREL(DESLOC($A$1:$A$1;0;CORRESP(A$1;$A$1:$A$4;0));DESLOC($A$1:$A$1;0;CORRESP($A1;$A$1:$A$1;0)))</blockquote><p>Obs.: note que, na fórmula acima, ambas as matrizes do primeiro argumento do DESLOC e do último argumento do CORRESP são sempre fixas. O primeiro argumento do CORRESP, no entanto, em uma das instâncias fixa a linha, enquanto na outra, a coluna.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1017/1*_j3nH1lrxi0k56l0sJaoGQ.png" /><figcaption>Com formatação condicional, pode-se preparar um breve mapa de calor</figcaption></figure><p>Com a adição de uma série com os pesos dos ativos no portfólio, pode-se inserir uma matriz “deitada” com esses pesos, além de uma matriz “em pé” com os mesmos valores. Utilizando a fórmula =MATRIZ.MULT(), pode-se calcular o desvio-padrão do portfólio:</p><blockquote>=RAIZ(MATRIZ.MULT(“pesos_deitados”;MATRIZ.MULT(“matriz_covariancia”;“pesos_em_pe”)))</blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/897/1*tDgZet87YdHusf61-Mx40Q.png" /><figcaption>Pesos dos ativos</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1017/1*bauLQDJiuWQrvOEoPfDrmw.png" /><figcaption>Matriz de covariância</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/156/1*Jwy48-lg6kuQI3mYiQznVQ.png" /><figcaption>Desvio-padrão pela fórmula do Excel mostrada acima (MATRIZ.MULT)</figcaption></figure><p>O Excel possui um suplemento que permite o cálculo da matriz de correlação com mais agilidade, mas que não preenche todos os dados da tabela. Basta ativá-lo através da aba de desenvolvedor, que pode ser ativada ao se personalizar a faixa de opções do Excel (basta clicar com o botão direito em cima das ferramentas).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1017/1*8rudgQmQHUJUxx4gLjSu-A.png" /><figcaption>Matriz gerada pelo suplemento</figcaption></figure><p>No Python, por sua vez, basta que se digite =PY() e se prossiga com o código abaixo para o cálculo dos retornos:</p><pre>df = xl(&quot;intervalo_precos&quot;, headers = True)<br>df.pct_change().dropna()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/934/1*pqeAW5vAn1kPtN2ymR8L5g.png" /><figcaption>Retornos no Python. Note que a coluna de data não deve ser incluída como argumento, já que não se é possível calcular a variação percentual entre duas datas, e a fórmula resulta em erro</figcaption></figure><p>Após isso, o Excel retornará algo do tipo “[PY] Dataframe”, e, na própria barra de fórmulas, pode-se alterar a saída para Excel, fazendo com que os dados do retorno sejam mostrados na planilha, completos, necessitando apenas de formatação.</p><p>Vale ressaltar que, à medida em que se selecionam as células na planilha, o Excel já insere tanto a função “xl” como o parâmetro “headers”, que pode vir incorreto ou não, dependendo do caso. Quando ativo, ele descarta a primeira linha para fim das séries de dados, mas utiliza os valores que nela constam para nomeá-las.</p><p>Similarmente, pode-se partir do código acima, selecionando, dessa vez, a tabela de retornos, para calcular as matrizes de correlação e covariância.</p><pre>df = xl(&quot;intervalo_retornos&quot;, headers=True)<br><br>df.corr() #ou, a depender da análise:<br>df.cov()</pre><p>Utilizando o Seaborn e o Matplotlib, pode-se elaborar um <em>heatmap </em>(mapa de calor, em tradução livre) com os valores das correlações entre os ativos. É exatamente o que o código abaixo faz:</p><pre>sns.heatmap(xl(&quot;matriz_correlacoes&quot;, headers=True),annot=True,linewidths=0.3)<br>plt.xticks(rotation=45)<br>plt.yticks()<br>plt.show()</pre><p>Como resultado do código acima, será retornada uma imagem, a qual pode ser ativada ao se clicar no pequeno botão que aparece sobre a célula após a execução do código.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/805/1*OM4f4DI1TuwOkUwm84bw_w.png" /><figcaption>Mapa de calor das correlações, gerado pelo Seaborn</figcaption></figure><p>Com a utilização do Numpy, por sua vez, pode-se calcular 8 pesos aleatórios através do código abaixo. Recomenda-se colar os valores resultantes como valor, para que não sejam sempre recalculados à medida em que avançamos as etapas da análise.</p><pre>aleatorio = np.random.random(8)<br>pesos = aleatorio/aleatorio.sum()</pre><p>Por último, o desvio-padrão do portfólio pode ser calculado pela função <em>np.sqrt()</em>, para a raiz quadrada, e pelo operador “@”, que multiplica intervalos de forma matricial no Python:</p><pre>np.sqrt(xl(&quot;pesos_deitados&quot;) @ xl(&quot;matriz_covariancia&quot;) @ xl(&quot;pesos_em_pe&quot;))</pre><p><strong>2ª Aplicação: Regressão Linear</strong></p><p>A regressão linear é uma técnica estatística utilizada para prever valores com base em uma relação linear entre uma variável dependente e uma ou mais variáveis independentes. É amplamente utilizada em diversas áreas, como finanças, economia e ciências sociais, para entender e quantificar relações entre variáveis.</p><p>Em finanças quantitativas, normalmente se utiliza um gráfico de dispersão com os retornos do mercado (normalmente, o iBovespa) representados pelo eixo x, e os da ação em análise, pelo eixo y.</p><p>Como resultado de uma regressão linear, tem-se uma equação de primeiro grau:</p><blockquote>y = α + β.x<em>, onde:</em></blockquote><ul><li><strong>Inclinação (coeficiente angular </strong>β): representa a inclinação da linha de regressão. É tido como uma medida de risco, já que indica o quanto a empresa oscilará apenas por conta da oscilação do mercado.</li><li><strong>Intercepto (coeficiente linear </strong>α): representa o ponto onde a linha de regressão cruza o eixo Y. Em determinadas análises, pode-se optar por “forçar” esse coeficiente a ser igual a zero, o que, matematicamente, está errado, já que a fórmula gerada pelo modelo com esse coeficiente sempre gerará menos resíduos, ou seja, se aproximando mais de todos os pontos no gráfico simultaneamente.</li><li><strong>R²: </strong>uma medida que, nesse caso, equivale ao quadrado da correlação entre os dados, e que explica a capacidade da regressão linear de explicar as variações dos dados, ou seja, ela varia de 0 a 100%. No exemplo a seguir, a ação do Itaú Unibanco (#ITUB4) tem R² de 68%, ou seja, cerca de 68% dos dados referentes ao retorno do Itaú poderiam ser mensurados pela reta proposta pelo modelo.</li></ul><p>Assim como antes, inicia-se a partir da tabela de fechamento de preços, desenvolvendo-se a tabela de variação/retorno da ação e do índice da bolsa brasileira, utilizando da mesma fórmula (W1/W0 -1).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/325/1*mdfgZRv4-pxr2cEwg6AZ4w.png" /><figcaption>Início da tabela de retornos</figcaption></figure><p>No Excel, o exercício de regressão linear para apuração dos coeficientes α e β pode ser feita de três formas:</p><ul><li>Pelas fórmulas =INCLINAÇÃO(“y’s”; “x’s”) e =INTERCEPÇÃO(“y’s”; “x’s”), deixando claro que y é a variável dependente, neste caso os retornos da ação do Itaú, e x, a independente, que são os retornos do Ibovespa. As fórmulas retornam, respectivamente, os coeficientes angular e linear da regressão:</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/299/1*bJdYBy5aJ5YBTAuiKnEWqg.png" /><figcaption>β = coeficiente angular do exercício; α = coeficiente linear do exercício</figcaption></figure><ul><li>Pela mesma ferramenta de análise de dados do Excel utilizada anteriormente para a correlação, dentro do menu propriamente dedicado à regressão. O padrão de intervalo de confiança é de 95%.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*yA0X4MerAHjS7Tu3WvMYyQ.png" /><figcaption><em>Output </em>da ferramenta de análise de dados do Excel</figcaption></figure><ul><li>Pelo gráfico de dispersão através da inserção de uma linha de tendência, de preferência com a opção de habilitar a equação no gráfico ativa. Esta forma é amais visual, mas também a mais complicada de se analisar numericamente.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/905/1*qvX2RyKNYEQZVTAHhAfY4g.png" /><figcaption>Gráfico de dispersão com reta de tendência no Excel</figcaption></figure><p>No Python, pode-se simplesmente inserir o código abaixo:</p><pre>df = xl(&quot;retornos&quot;, headers=True)<br>df = df.pct_change().dropna()<br>sns.regplot(data = df[[&quot;^BVSP&quot;, &quot;ITUB4.SA&quot;]], x = &quot;^BVSP&quot;, y = &quot;ITUB4.SA&quot;)</pre><p>Enquanto as duas últimas linhas performam o cálculo dos retornos, conforme já visto anteriormente, a terceira linha do código dedica-se a aplicar a biblioteca do Seaborn para <em>plotar</em> um gráfico de regressão linear, através da função <em>regplot</em>, qual requer, como argumentos, os dados-base e a relação de colunas (identificação das variáveis “x” e “y”).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*jnvS_kdUmYhhfxNFX6eUrw.png" /><figcaption>Output do código em Python inserido na fórmula =PY( ) do Excel</figcaption></figure><p><strong>Conclusão</strong></p><p>A integração do Python no Excel é uma ferramenta poderosa para análises estatísticas e financeiras. Ela permite:</p><ul><li><strong>Eficiência</strong>: combinar a facilidade de uso do Excel com a robustez do Python;</li><li><strong>Visualizações Avançadas</strong>: criar gráficos e visualizações personalizadas;</li><li><strong>Manipulação de Dados</strong>: usar o Pandas para organizar e analisar grandes conjuntos de dados de forma rápida;</li><li><strong>Cálculos Financeiros</strong>: realizar operações matemáticas complexas, essenciais para análises financeiras detalhadas.</li></ul><p>Essa ferramenta representa um avanço significativo, tornando o processo de análise de dados mais dinâmico e acessível. Prepare-se para elevar seu nível de produtividade!</p><p>Obrigado pela leitura e não deixe de <a href="https://youtu.be/SnWm3f_-WR4">conferir o vídeo que gravamos sobre este mesmo assunto em nosso canal do YouTube.</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=698345eaaf71" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/python-dentro-do-excel-uma-revolu%C3%A7%C3%A3o-para-a-an%C3%A1lise-de-dados-698345eaaf71">Python Dentro do Excel: Uma Revolução para a Análise de Dados</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Como criar um repositório de forma prática com o GitHub Desktop]]></title>
            <link>https://medium.com/fea-dev/como-criar-um-reposit%C3%B3rio-de-forma-pr%C3%A1tica-com-o-github-desktop-6faedc9ede30?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/6faedc9ede30</guid>
            <category><![CDATA[dev]]></category>
            <category><![CDATA[programação]]></category>
            <category><![CDATA[github]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Wed, 07 Aug 2024 02:10:12 GMT</pubDate>
            <atom:updated>2024-08-18T00:23:22.254Z</atom:updated>
            <content:encoded><![CDATA[<p>Por <a href="https://github.com/andreibonifacio">Andrei Bonifácio</a> e <a href="https://github.com/GabrielSBraz">Gabriel Braz</a>.<br>Edição de vídeo: <a href="https://github.com/EmmanuelitaEmmanuel">Emmanuelita Emmanuel</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*HeT8OJ3nWQ6PF_ri.jpeg" /></figure><p>Neste artigo, vamos <strong>aprender na prática como criar um repositório</strong> para seus códigos, arquivos e/ou projetos <strong>utilizando o GitHub Desktop</strong>. Dessa forma, você verá como é simples começar um <strong>portfólio</strong> na sua conta do GitHub. <br><strong>Acompanhe até o final</strong> para conhecer todos os <strong>pré-requisitos</strong> e o <strong>passo a passo</strong> para criar seus primeiros repositórios.<br><a href="https://www.youtube.com/watch?v=UvmgcBv9BtQ">Por aqui, você também pode acessar a versão desse tutorial em vídeo no nosso canal do YouTube.</a></p><h3>Git, GitHub e GitHub Desktop: o que são?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*F6v5cyawCGeahc2E" /></figure><h3>O que é Git?</h3><p>Segunda a própria <a href="https://docs.github.com/pt/get-started/using-git/about-git">documentação do GitHub sobre o Git</a>, ele é “um <strong>sistema de controle de versão</strong>, ou VCS, monitora o histórico de alterações à medida que as pessoas e equipes colaboram em projetos em conjunto”. Ou seja, com ele somos capazes de salvar arquivos e códigos de nossos projetos, assim como as alterações que fizermos, podendo até mesmo voltar no tempo, restaurar versões antigas, visualizar a(s) pessoa(s) responsável(eis) por tal mudança e quando ela foi feita.</p><h3>O que é GitHub?</h3><p>O GitHub é uma <strong>plataforma de hospedagem baseada em nuvem</strong>, atualmente da Microsoft, que gerencia arquivos (códigos, imagens etc) utilizando o sistema <strong>Git</strong> por trás. Além disso, ela é uma <strong>rede social</strong> para unir devs e pessoas interessadas em tecnologia num só lugar, proporcionando um ambiente de colaboração entre essas pessoas.</p><h3>O que é GitHub Desktop?</h3><p>Segunda a própria <a href="https://docs.github.com/pt/desktop/overview/about-github-desktop">documentação do GitHub sobre o GitHub Desktop</a> ele é “um <strong>aplicativo gratuito</strong> e de código aberto que <strong>ajuda você a trabalhar com arquivos hospedados no GitHub</strong> ou em outros serviços de hospedagem Git”. Ou seja, ele é um facilitador para você manipular seus arquivos hospedados na sua conta do GitHub de maneira prática e fácil.</p><h3>O que é um repositório?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*MM0OcsMwCOcwb8KR" /></figure><p>Segundo a <a href="https://docs.github.com/pt/get-started/using-git/about-git#about-repositories">documentação do GitHub</a> “um repositório ou um projeto Git, <strong>engloba toda a coleção de arquivos e pastas associados a um projeto, junto com o histórico de revisão de cada arquivo</strong>”. Ou seja, um repositório é um local onde você armazena seus projetos de código. Ele contém todos os arquivos do projeto e o histórico de revisões.</p><h3>Qual a diferença entre um repositório Local e Remoto?</h3><p>Um <strong>repositório local</strong> está <strong>armazenado no seu computador</strong>. É onde você pode fazer alterações antes de enviá-las para um repositório remoto.</p><p>Um <strong>repositório remoto</strong> está <strong>hospedado na nuvem</strong>, como no GitHub, e pode ser acessado de qualquer local físico desde que a pessoa tenha o devido acesso à sua própria conta ou a projetos de outras pessoas, por exemplo. Permite que as pessoas colaborem entre si.</p><p>Vamos mostrar como fazer com que um repositório local se torne remoto através do GitHub e modificá-lo a partir da máquina local ou do GitHub.</p><h3>Pré-requisitos necessários para criar um repositório com o GitHub Desktop</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*EGopcUcgx51WGsQk" /></figure><p>Abaixo estão os pré-requisitos necessários para você criar um repositório utilizando o GitHub Desktop. Caso seja preciso, estará junto a documentação oficial para ser seguida e implementada.</p><ol><li>Ter uma conta no GitHub com o perfil configurado:<br><a href="https://docs.github.com/pt/get-started/start-your-journey/creating-an-account-on-github">Acesse aqui a documentação para criar uma conta</a>;<br><a href="https://docs.github.com/pt/get-started/start-your-journey/setting-up-your-profile">acesse aqui a documentação para aprender a fazer as configurações básicas do seu perfil GitHub</a>;</li><li>Ter o Git instalado na sua máquina:<br><a href="https://git-scm.com/download/win">Acesse aqui a página de download do Git</a>;<br><a href="https://docs.github.com/pt/desktop/configuring-and-customizing-github-desktop/configuring-git-for-github-desktop">acesse aqui para aprender a configurar o Git para o GitHub Desktop</a>;</li><li>Ter o GitHub Desktop instalado na sua máquina:<br><a href="https://docs.github.com/pt/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop">Acesse aqui a página de download do GitHub Desktop</a>;</li><li>Faça login na sua conta do GitHub no GitHub Desktop.</li></ol><h3>Como criar um repositório com o GitHub</h3><p>No canto superior esquerdo da tela clique em “File” e em seguida em “New repository…” ou simplesmente aperte Ctrl + N ao mesmo tempo no teclado. Será aberta a tela abaixo:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/361/1*aIK9P-sO2BRWkmptHMZUfg.png" /></figure><h4>1) Nome / Descrição</h4><p>Para criar um repositório local no GitHub Desktop, primeiro dê um nome ao seu projeto e, se desejar, uma breve descrição.</p><h4>2) Caminho do arquivo</h4><p>Escolha o caminho do arquivo, ou seja, o local onde você quer salvar o repositório no seu computador.</p><h4>3) README</h4><p>Você pode optar por incluir um arquivo README, que deve descrever seu projeto e como usá-lo. Por boa prática, incluir esta opção é altamente recomendável para você documentar da melhor maneira possível seus projetos.</p><h4>4) Git ignore</h4><p>O arquivo .gitignore especifica quais arquivos ou pastas o Git deve ignorar. É útil para evitar enviar arquivos desnecessários.</p><h4>5) Licença</h4><p>Selecionar uma licença é importante para definir como outras pessoas podem usar o seu código. Escolha uma que se adapte às suas necessidades. <a href="https://muratkaragozgil.medium.com/software-licenses-on-github-which-one-should-you-choose-3d4cfbb6c2f9">Para mais informações sobre as licenças mais usadas no GitHub, acesse este link.</a></p><h4>6) Explorando sua tela do GitHub Desktop</h4><p>Ao abrir o GitHub Desktop, encontramos as seguintes opções na tela:</p><ol><li>Repositório atual;</li><li>Branch atual;</li><li>Publicar repositório (Publish repository) / Buscar na origem (Fetch origin);</li><li>Alterações e histórico.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/693/1*jX5VBAUMvHiLbflgrsSAxg.png" /></figure><h4>7) Publicar (Push) o repositório no GitHub Desktop</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/538/1*W94G-NyqAJPZ27-TBUdF4A.png" /></figure><p>Com o repositório local criado, vamos publicá-lo no GitHub. No GitHub Desktop, clique em ‘Publish repository’.</p><h4>8) Nome e Descrição</h4><p>Confirme o nome do repositório e a descrição.</p><h4>9) Público ou Privado</h4><p>Decida se quer que o repositório seja público, para todos verem, ou privado, apenas para convidados.</p><h4>10) Verificar as ações refletidas na conta do GitHub</h4><p>Clique no botão <em>“Exibir no GitHub”</em>.</p><h3>Editando arquivos localmente e atualizando o repositório remoto pelo GitHub Desktop</h3><h4>11) Integrar e utilizar o VS Code para edições no projeto</h4><p>Agora, vamos editar os arquivos no VS Code. Abra o repositório no VS Code e faça alterações no código ou no README.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/736/0*cAcDSltT9ZBr5QQ_" /></figure><h4>12) Histórico: commit to master</h4><p>No GitHub Desktop, navegue até a exibição Alterações. Na lista de arquivos, você verá o <a href="http://readme.md/">README.md</a>. A caixa de seleção à esquerda do arquivo <a href="http://readme.md/">README.md</a> indica que as alterações feitas no arquivo farão parte do commit que você fez.</p><p>Na parte inferior da lista Alterações, insira uma mensagem de commit. À direita da sua foto de perfil, digite uma breve descrição e faça o commit.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*uVDSpFzJ9cmvIFGI" /></figure><h4>13) Push origin — atualizando o repositório remoto com as novas edições</h4><p>Por fim, envie as alterações para o repositório remoto no GitHub clicando em <em>”Push origin”</em>.</p><h4>14) Verificação das ações refletidas na conta do GitHub</h4><p>Clique no botão <em>“Exibir no GitHub”</em>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/904/0*rXDJ7Hd9PaM0Ei4Q" /></figure><h3>Editando arquivos remotamente e atualizando o repositório local pelo GitHub Desktop</h3><p>Agora que você criou e publicou seu repositório, você está pronto para fazer alterações no seu projeto e começar a criar seu primeiro commit no seu repositório.</p><h4>15) Edições remotas pelo GitHub</h4><p>Você também pode editar arquivos diretamente no site do GitHub. Acesse seu repositório remoto, edite o arquivo desejado e salve as mudanças.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*7l9c3Dg_cnTDS_6n" /></figure><h4>16) Atualizando o repositório local com as novas edições</h4><p>Para atualizar seu repositório local com essas mudanças, volte ao GitHub Desktop, clique em ‘Fetch origin’ e depois em ‘Pull origin’ para sincronizar as alterações.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*5MPrlUqia-q_glLJ" /></figure><h3>Benefícios do GitHub Desktop</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*AcWpT1AWyeTaVioi" /></figure><ol><li><strong>É mais fácil de começar:</strong> sua interface gráfica é amigável, simplifica os comandos git que às vezes assustam à primeira vista e ajuda na visualização das alterações;</li><li><strong>Facilidade de encontrar os comandos Git:</strong> por conta da sua interface amigável é possível acessar facilmente quaisquer comandos do Git, desde os mais conhecidos aos menos usados, sem a obrigação de memorizar ou consultar a sintaxe desde o primeiro contato;</li><li><strong>Incentiva as boas práticas de versionamento de código:</strong> apoia na criação de histórico de commits, o que gera benefícios de longo prazo para o projeto;</li><li><strong>Integração com o GitHub:</strong> projetado para trabalhar com o GitHub, o acesso à sua conta é instantâneo a partir do login e as solicitações são feitas unicamente pela interface do GitHub Desktop refletindo diretamente na conta do GitHub online.</li></ol><h3>Por que o GitHub Desktop é importante para devs?</h3><p>Com os aprendizados contínuos sobre versionamento de código e boas práticas de projetos somados ao uso prático do GitHub Desktop, você será capaz de construir o hábito de documentar seus estudos, projetos pessoais e/ou colaborar com outras pessoas.</p><p>Com os aprendizados contínuos sobre versionamento de código e boas práticas de projetos somados ao uso prático do GitHub Desktop, você será capaz de construir o hábito de documentar seus estudos, projetos pessoais e/ou colaborar com outras pessoas.</p><h3>Conclusão</h3><p>Neste artigo, abordamos os conceitos básicos do Git, GitHub e GitHub Desktop, os benefícios de utilizar o GitHub Desktop, e os passos práticos para criar e gerenciar um repositório. Esperamos que este guia tenha te ajudado e seja um suporte para você se engajar na construção do seu próprio portfólio no GitHub.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6faedc9ede30" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/como-criar-um-reposit%C3%B3rio-de-forma-pr%C3%A1tica-com-o-github-desktop-6faedc9ede30">Como criar um repositório de forma prática com o GitHub Desktop</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Top 15 Extensões do Visual Studio Code para Programadores]]></title>
            <link>https://medium.com/fea-dev/top-15-extens%C3%B5es-do-visual-studio-code-para-programadores-f2aa1d5e3fa1?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/f2aa1d5e3fa1</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[vscode]]></category>
            <category><![CDATA[vscode-extension]]></category>
            <category><![CDATA[technology]]></category>
            <category><![CDATA[programming]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Sat, 13 Apr 2024 19:59:07 GMT</pubDate>
            <atom:updated>2024-04-13T20:03:44.515Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1012/0*1Tar2ORasBiYWUOh.png" /></figure><p>O <em>Visual Studio Code</em> é um dos ambientes de desenvolvimento integrado mais populares entre os programadores, graças à sua simplicidade e flexibilidade. Sua vasta gama de extensões é como uma série de pequenos complementos que podem ser adicionados ao VS Code para estender suas funcionalidades básicas e adaptá-lo às necessidades específicas de cada usuário. Desse modo, vamos recomendar neste artigo 15 extensões que podem facilitar e aprimorar a escrita e a edição de código, otimizando a sua produtividade.</p><h4><strong>1. </strong><a href="https://marketplace.visualstudio.com/items?itemName=GitHub.copilot"><strong>GitHub Copilot</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jDgxfrxa6FoWb5e0VAFt-w.gif" /></figure><p>O <em>GitHub Copilot</em> é uma IA que gera sugestões de preenchimento automático enquanto você codifica, contando ainda com o <em>Copilot Chat</em>, que pode dar suporte a uma variedade de tarefas, como solução de problemas de sintaxe ou dúvidas sobre conceitos gerais de lógica de programação.</p><p>Você pode desfrutar do uso contínuo da extensão por meio da realização de uma assinatura paga. Porém, há uma opção gratuita disponível através do <em>GitHub Student Developer Pack</em>. Para preencher o formulário de inscrição e garantir sua licença como estudante, oferecemos um tutorial detalhado no YouTube, <a href="https://www.youtube.com/watch?v=g3SQm9I3ZUc">cujo link pode ser acessado aqui</a>!</p><h4><strong>2. </strong><a href="https://marketplace.visualstudio.com/items?itemName=vscode-icons-team.vscode-icons"><strong>VSCode Icons</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*69vby7KoGBO5D6XDs2vdIg.gif" /></figure><p>O <em>VSCode Icons</em> auxilia na identificação visual dos arquivos ao atribuir ícones específicos e relevantes para cada tipo de arquivo, facilitando o reconhecimento rápido das linguagens de programação, dos formatos de arquivos e aprimorando o visual e a organização do explorador de arquivos dentro do programa.</p><h4><strong>3. </strong><a href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens"><strong>Error Lens</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/910/1*OcjSKpCmJhl9-1NOGBdhAQ.png" /></figure><p>O <em>Error Lens</em> facilita a identificação de erros enquanto você codifica, destacando-os na própria linha em que foi diagnosticado. Além disso, a extensão ainda fornece informações adicionais sobre o erro, como mensagens de erro, sugestões de correção ou até mesmo ações rápidas para resolver o problema.</p><h4><strong>4. </strong><a href="https://marketplace.visualstudio.com/items?itemName=aaron-bond.better-comments"><strong>Better Comments</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/790/1*_zf1OIj27gKu9Zjuh6ZiKA.png" /></figure><p>A extensão <em>Better Comments</em> é utilizada para categorizar os seus comentários ao longo do código, incluindo categoriais como alertas, tarefas a fazer, informações importantes e dúvidas. É importante pontuar que todas as categoriais podem ser personalizadas nas configurações da extensão e ela suporta uma série de linguagens de programação, como Python, R e SQL.</p><h4><strong>5. </strong><a href="https://marketplace.visualstudio.com/items?itemName=dracula-theme.theme-dracula"><strong>Dracula Official</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Vzz4jXEHOh_svvZTg3BY_Q.jpeg" /></figure><p>O <em>Dracula Theme</em> é um esquema de cores criado por um desenvolvedor brasileiro, <a href="https://github.com/zenorocha">Zeno Rocha</a>, para oferecer uma experiência visual mais agradável aos programadores. Como o tema combina um fundo escuro e com cores vibrantes, proporcionando um contraste nítido entre diferentes elementos do código, ele oferece um ambiente de fácil leitura que pode ajudar na redução do cansaço visual que costuma ocorrer ao ficar muito tempo utilizando o computador.</p><h4><strong>6. </strong><a href="https://marketplace.visualstudio.com/items?itemName=alefragnani.Bookmarks"><strong>Bookmarks</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/909/1*1oHfp2tWMwsr8kUHgrBytA.gif" /></figure><p><em>Bookmarks</em> é uma extensão valiosa, especialmente quando você escreve programas longos e precisa constantemente navegar por determinadas partes do código com agilidade. Com ela, é possível marcar linhas do código e acessá-las rapidamente, inclusive atribuindo títulos a cada uma delas para facilitar a sua identificação.</p><h4>7. <a href="https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode">Prettier</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/1*SuNRHA6Wez_8wxiZhRFy5Q.gif" /></figure><p><em>Prettier</em> é uma ferramenta criada para corrigir a formatação do seu código, tornando-o mais bonito e consistente ao seguir uma série de regras de estilo, como espaçamentos, vírgulas, identações e tamanho das linhas. Essa extensão é muito útil não apenas em projetos individuais, mas também em equipe, principalmente ao trabalhar com programas complexos. Além disso, ela pode ser utilizada com várias linguagens, como JavaScript, HTML e CSS.</p><h4>8. <a href="https://marketplace.visualstudio.com/items?itemName=christian-kohler.path-intellisense">Path Intellisense</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/715/1*ZnaT-CKyFoVawZJuntUlcw.gif" /></figure><p>O <em>Path Intellisense</em> auxilia a trabalhar com caminhos de arquivos, de modo que, ao digitar um caminho de arquivo (como um caminho para um arquivo CSS, JavaScript, imagem, etc.), ele oferece sugestões automáticas de preenchimento. Dessa forma, é possível evitar erros de digitação e agilizar o processo de referenciar arquivos.</p><h4>9. <a href="https://marketplace.visualstudio.com/items?itemName=James-Yu.latex-workshop">LaTeX Workshop</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*L610Eav42jrapoO3ct1tBw.jpeg" /></figure><p>LaTeX é sistema de preparação de documentos muito utilizado nos contextos acadêmico e científico para criar documentos de alta qualidade tipográfica. Nesse sentido, com <em>LaTeX Workshop</em>, os usuários podem editar e compilar esses documentos em diferentes formatos de modo eficiente diretamente no VS Code, contando ainda com recursos como realce de sintaxe, auto completar e verificação de erros.</p><h4>10. <a href="https://marketplace.visualstudio.com/items?itemName=mtxr.sqltools">SQLTools</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZwsWF3IYLTXNmGUwu5_CnA.jpeg" /></figure><p>O <em>SQL Tools</em> oferece conexões através do VS Code com os principais bancos de dados SQL, como MySQL, PostgreSQL, Microsoft SQL Server e SQLite. Além da conexão em si, a ferramenta permite ainda executar consultas e exibir seus resultados diretamente do ambientes de desenvolvimento.</p><h4>11. <a href="https://marketplace.visualstudio.com/items?itemName=ms-toolsai.jupyter">Jupyter</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*S9I2z4hubMK0N11CLQOXHw.png" /></figure><p>A extensão <em>Jupyter</em> permite que os usuários criem, editem e interajam com arquivos do tipo notebooks, possibilitando a execução de códigos em linguagens como Python, R e Julia. É importante pontuar que o uso desta extensão depende da prévia instalação dos kernels correspondentes na sua máquina.</p><h4><strong>12. </strong><a href="https://marketplace.visualstudio.com/items?itemName=mechatroner.rainbow-csv"><strong>Rainbow CSV</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*48jF_pR-BMDM0I7Aav0voA.png" /></figure><p>O <em>Rainbow CSV</em> foi criado para melhorar a visualização de dados em arquivos CSV, os quais são frequentemente utilizados para armazenar dados tabulares. Nesse sentido, ela colore cada coluna ou cada campo com cores distintas, o que facilita a identificação dos dados.</p><h4><strong>13. </strong><a href="https://marketplace.visualstudio.com/items?itemName=naumovs.color-highlight"><strong>Color Highlight</strong></a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Bu-nQqGxwD9DQzU7RYHxtg.png" /></figure><p>Com <em>Color Highlight</em>, sempre que você digitar um código de cor, seja em formato hexadecimal, RGB, HSL, ou até mesmo palavras-chave de cores em linguagens como CSS, a extensão irá automaticamente destacar essa cor com uma representação visual correspondente. Isso torna mais fácil para visualizar as cores que estão sendo usadas nos estilos de gráficos ou em elementos de design, por exemplo.</p><h4>14. <a href="https://marketplace.visualstudio.com/items?itemName=oderwat.indent-rainbow">Indent-Rainbow</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qU-gi80bqrYZBZ3L-WnM8w.jpeg" /></figure><p><em>Indent-Rainbow</em> é uma extensão que facilita a visualização da estrutura do código ao colorir cada nível de indentação com uma cor diferente. Desse modo, torna-se uma ferramenta útil para aprimorar a legibilidade e a compreensão do código, especialmente em linguagens que dependem fortemente de indentação em sua estrutura, como Python.</p><h4>15. <a href="https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer">Live Server</a></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/896/1*CfYU3dAoc-39eAJf2hgb3A.gif" /></figure><p>O <em>Live Server</em> é uma ferramenta muito útil para desenvolvedores web que trabalham com HTML, CSS ou JavaScript. Ele permite que você crie um servidor local diretamente a partir do VS Code e visualize as alterações em tempo real no navegador conforme você edita o código.</p><p>Essas foram as nossas recomendações por hoje! Mas e vocês, têm mais alguma sugestão além dessas? Compartilhem nos comentários se souberem de mais dicas! E não se esqueçam de nos seguir aqui no Medium e também <a href="https://www.instagram.com/fea.dev/">no Instagram</a> para ficarem por dentro dos nossos conteúdos em primeira mão.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f2aa1d5e3fa1" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/top-15-extens%C3%B5es-do-visual-studio-code-para-programadores-f2aa1d5e3fa1">Top 15 Extensões do Visual Studio Code para Programadores</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Análise de Dados: Bloquinhos de Carnaval de São Paulo]]></title>
            <link>https://medium.com/fea-dev/an%C3%A1lise-de-dados-bloquinhos-de-carnaval-de-s%C3%A3o-paulo-ba6c585fdce8?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/ba6c585fdce8</guid>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Mon, 11 Mar 2024 21:42:23 GMT</pubDate>
            <atom:updated>2024-03-11T21:35:34.648Z</atom:updated>
            <content:encoded><![CDATA[<p>Por <a href="https://medium.com/@cinthya_beneducci"><strong>Cinthya Beneducci</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/630/1*UaEEsBdlZ-LTI63D-q-Wkw.jpeg" /></figure><p>Esta análise irá trazer algumas estatísticas acerca de uma das datas mais esperadas do ano: o <strong>Carnaval</strong>! Nós da <a href="https://www.instagram.com/fea.dev/">FEA.dev</a> recebemos acesso a dados referentes aos <strong>bloquinhos oficiais de São Paulo em 2024 </strong>do <a href="https://www.buscabloco.com.br/"><strong>BuscaBloco</strong></a>, uma iniciativa que mapeou e disponibilizou informações sobre blocos e desfiles de Carnaval nas cidades de São Paulo e do Rio de Janeiro durante o Carnaval de 2024. Agradecemos ao BuscaBloco pelo fornecimento dos dados. Agora, vamos à análise! <strong>O código completo pode ser acessado no Github por </strong><a href="https://github.com/LaQuokka/Analise_BuscaBloco"><strong>aqui</strong></a><strong>.</strong></p><p>Os dados podem ser visualizados no <a href="https://app.powerbi.com/view?r=eyJrIjoiMzVjZjEzNDEtOGNhOC00ZTU3LWJjZTUtYmExODQ4ZDhlNThhIiwidCI6IjA4NzllN2Q3LTQ4ZWQtNDE2My1hM2M5LWRjNDJhMTUwZDE0YyJ9">Power BI do Busca Bloco</a>. Caso queira ter acesso a base de dados para a realização de projetos, entre em contato com as responsáveis pela iniciativa por meio de seu <a href="https://www.buscabloco.com.br/">site</a> ou de seu <a href="https://www.instagram.com/buscabloco?igsh=OG93ZW95dHk3cGVo">Instagram</a>.</p><p>A base de dado importada consiste em uma tabela de 720 linhas e 11 colunas com as seguintes variáveis, que permitem uma gama interessante de análises:</p><ul><li><strong>Nome do Bloco: </strong>coluna com dados do tipo object que corresponde ao nome do bloquinho;</li><li><strong>Zona:</strong> coluna com dados do tipo object que corresponde à zona da cidade de Sâo Paulo em que o bloquinho irá ocorrer;</li><li><strong>Itinerário:</strong> coluna com dados do tipo object que corresponde ao itinerário programadodo bloquinho;</li><li><strong>Estilo Musical:</strong> coluna com dados do tipo object que corresponde ao estilo musical predominante do bloquinho;</li><li><strong>Cidade:</strong> coluna com dados do tipo object que corresponde à cidade em que o bloquinho está localizado;</li><li><strong>Latitude: </strong>coluna com dados do tipo object que corresponde a latitude do local de início do bloquinho;</li><li><strong>Longitude:</strong> coluna com dados do tipo object que corresponde a longitude do local de início do bloquinho;</li><li><strong>Data</strong>: coluna com dados do tipo datetime64[ns] que corresponde ao dia para o qual o bloquinho estava programado no momento de registro;</li><li><strong>Dia</strong>: coluna com dados do tipo object que corresponde ao dia da semana para o qual o bloquinho estava programado;</li><li><strong>Hora</strong>: coluna com dados do tipo object que corresponde ao horário programado de início do bloquinho.</li></ul><p>Com os dados em mão, li a database como um dataframe utilizando a clássica biblioteca pandas. Após eliminar as observações com valores NaN e fazer alguns pré-tratamentos, obtive um dataframe final de 464 bloquinhos. Este é o resultado pós tratamentos iniciais:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hYPUFanU8KohPcjL0EpCEA.png" /></figure><p>Como sabemos que em época de carnaval os bloquinhos acontecem durante o mês inteiro, não só durante o feriado oficial, o primeiro passo foi adicionar uma colunacarnaval que permita analisar os bloquinhos em três períodos cronológicos distintos: o <strong>pré-carnaval</strong>, o <strong>carnaval</strong> e o<strong> pós-carnaval</strong>. Considerou-se como o período de carnaval os dias 10 a 14 de fevereiro, como pré-carnaval o período anterior ao dia 10/fev e como pós-carnaval o período posterior a 14/fev.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/22f58c43fee0bfa4fe4f0129b231dbb0/href">https://medium.com/media/22f58c43fee0bfa4fe4f0129b231dbb0/href</a></iframe><p>Agora, vamos ver como os bloquinhos estão distribuídos ao longo desses três períodos utilizando a coluna carnaval recém-criada e através do plot de um gráfico de barras. Para deixar os plots mais estilizados, ao longo das análises utilizei o método .annotate para adicionar rótulos nas imagens, formatações de % no eixo y e algumas outras funções e definições de estilo que podem ser vistas em detalhes no <a href="https://github.com/LaQuokka/Analise_BuscaBloco">código completo</a>.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e4ae206d549c65997806a1f1fc95ee3a/href">https://medium.com/media/e4ae206d549c65997806a1f1fc95ee3a/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/686/1*FUhn6QXQb5ghddimwf9nlg.png" /></figure><p>Vemos que <strong>mais de metade dos bloquinhos não são programados para acontecer durante o carnaval</strong>! Na realidade, <strong>apenas 34.9%</strong> dos bloquinhos estavam programados para o<strong> período de carnaval </strong>em si. Dos demais bloquinhos, 40.9% eram de pré-carnaval —<em> e o perigo de queimar largada?</em> — e a boa notícia é que <strong>24.1% dos bloquinhos estavam programados para após o feriado</strong>, o que significa que mesmo depois da quarta-feira de cinzas ainda tinha coisa pra curtir!</p><p>E qual é a zona da cidade de São Paulo onde acontecem mais bloquinhos? Essa é moleza! Vamos aplicar um .value_counts()na coluna Zona e plotar um gráfico de pizza.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c63fa1c48a7181923c13394a4e0452b8/href">https://medium.com/media/c63fa1c48a7181923c13394a4e0452b8/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/539/1*m-obPoAIBEFGBBtb6vXRDQ.png" /></figure><p>Descobrimos que as zonas que lideram o ranking de mais animadas para o carnaval são as <strong>oeste, centro e leste</strong>, respectivamente. Mas isso é verdade em <em>todos </em>os períodos do carnaval?</p><p>Para responder essa pergunta, vamos juntar as duas análises anteriores: <em>controlando por zona</em>, em qual período (pré, durante ou pós-carnaval) mais acontecem os bloquinhos? Os plots agora serão feitos em uma mesma figura, então vamos inicializar a figura com fig, axs = ... e plotar cada gráfico em um axs diferente. Note que isso muda um pouco os nomes dos métodos de estilização da figura.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cac006f8e6199dddbbc69bd12ab25a5e/href">https://medium.com/media/cac006f8e6199dddbbc69bd12ab25a5e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*peYcfLui9PYtK2tkbIf_4A.png" /></figure><p>De fato, a<strong>s zonas oeste e centro dominam o carnaval em todos os períodos</strong>, mas a posição de 3º lugar varia entre as zonas centro-sul, leste e norte.</p><p>O próximo passo é descobrir quais dias da semana mais tiveram bloquinhos programados. Para isso, novamente, iremos utilizar um .value_counts() , mas na coluna Dia .</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d73dab4b335b504b6d513de5173e628e/href">https://medium.com/media/d73dab4b335b504b6d513de5173e628e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/686/1*TJnP9U5k4TaSCixzNlnV2w.png" /></figure><p>Como a intuição aponta, <strong>81% dos bloquinhos que analisamos tem data marcada no final de semana</strong>. Mas será que essa distribuição muda muito quando nós controlamos pelo <em>período do carnaval</em>? Afinal, fora do carnaval “oficial”, é difícil sair para a folia durante semana. Vamos usar um for loop e fazer um subplot para cada período do caranval.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/2ed2aeee30b2879f28bfc887bdda4e72/href">https://medium.com/media/2ed2aeee30b2879f28bfc887bdda4e72/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PSEZ9HJJ1vnW3Ymwb1DOQA.png" /></figure><p>Aha! De fato, <strong>bloquinhos programados durante semana estão concentrados no feriado oficial</strong>. Há registros de alguns bloquinhos pontuais durante semana no pré-carnaval, mas, <strong>no pré e no pós</strong>, praticamente todos <strong>os bloquinhos estão marcados em finais de semana</strong>.</p><p>E será que o horário médio de início dos bloquinhos varia muito a depender do dia da semana? Para fazer essa análise, vamos criar uma coluna chamada Horário em segundosa partir da conversão dos dados datetime64[ns]da coluna Hora para um número total de segundos. Assim, podemos calcular o horário médio e posteriormente reconvertê-lo para o formato usual, de hh:mm:ss.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b51d4f1be82e24bf63df16cd118fa574/href">https://medium.com/media/b51d4f1be82e24bf63df16cd118fa574/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/790/1*6nY-gI_U5OjPqGyaDipntA.png" /></figure><p>O horário médio de início dos bloquinhos ao longo dos dias da semana fica concentrado entre <strong>12h30 e 13h</strong> de <strong>domingo à terça-feira</strong> e <strong>a partir das 17h</strong> nas <strong>quartas e sextas-feiras</strong>. Entretanto, o horário médio para quartas e sextas-feiras <em>não é muito representativo</em>, pois, como visto no primeiro gráfico, só há 5 observações nestes dois dias da semana. A caráter de curiosidade, podemos verificar que essas 5 observações aconteceram no pré-carnaval.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/9cc700524d0e47704f8faad77c18548e/href">https://medium.com/media/9cc700524d0e47704f8faad77c18548e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/399/1*ipeAtBINIST8RoB4LxN1Lw.png" /></figure><p>Apesar de já sabermos o horário médio de início dos bloquinhos, vamos ver como fica é distribuição por horário de início com um plot de barras:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7df0d4084aad2f856031128ed231373c/href">https://medium.com/media/7df0d4084aad2f856031128ed231373c/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/789/1*m4o_TwdZ5ZRRolehPoX3KA.png" /></figure><p>A maior parte dos bloquinhos começa às <strong>13h, 14h e 12h</strong>, respectivamente. Haja protetor solar 😱. Será que essa distribuição muda muito em diferentes períodos do carnaval?</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/d952c515c3829627b5817af6bf0d5492/href">https://medium.com/media/d952c515c3829627b5817af6bf0d5492/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HmjNqYqEKGmHcuWJBBTkXw.png" /></figure><p>A <strong>distribuição de bloquinhos por horário não muda muito ao controlarmos por um período do carnaval.</strong> Entretanto, é interessante que o intervalo de horários de início diminui substancialmente no pós-carnaval. Para facilitar a análise, vamos visualizar os mesmos dados, mas agora controlados pelas categorias “manhã”, “início da tarde” e “fim de tarde”. Vamos definir “manhã” como os horários até 11h, “início da tarde” como 12h a 15h e “fim de tarde” como 16h+.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4ef009e3fc80ef35ba6d49ab2a89d3f4/href">https://medium.com/media/4ef009e3fc80ef35ba6d49ab2a89d3f4/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fNDfvQqIeLokgkuPqVALRw.png" /></figure><p>Também podemos avaliar quais foram os estilos musicais predominantes nesse Carnaval de 2024 a partir da coluna Estilo Musical .</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ed525be828c51f6a3339cd108b486479/href">https://medium.com/media/ed525be828c51f6a3339cd108b486479/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/790/1*BmbK-evFMXjjbqdmdZ0Sgw.png" /></figure><p>Pelo visto, o samba, “brasilidades” e a fanfarra foram o top 3, disparado! Vamos analisar se esse foi o caso na cidade inteira, controlando por região de São Paulo.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/6ab6d02dd6117f618ad6175c1e1c5c99/href">https://medium.com/media/6ab6d02dd6117f618ad6175c1e1c5c99/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CazhoCxyiOFuaxrhVeoDGQ.png" /></figure><p>De fato, <strong>não parece haver heterogeneidade significativa e</strong>m termos de preferências por<strong> estilo musical</strong>.</p><p>Por fim, vamos aproveitar que temos as coordenadas geográficas do ponto de partida dos bloquinhos para usar a biblioteca folium, que permite criar mapas interativos para visualizar dados geoespaciais. Para isso, usamos como base um arquivo .json disponível na internet com a delimitação dos municípios do estado de São Paulo, e plotamos sobre esse mapa pontos referentes a cada um dos bloquinhos na nossa database.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/45fbc66e910b6d39afd9841c7ef0adae/href">https://medium.com/media/45fbc66e910b6d39afd9841c7ef0adae/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/749/1*yReCzmZDHhYqGPF4q5BAxA.png" /></figure><p>Chegamos ao fim da análise! Espero que tenha gostado dos insights! Se você curtiu, imagino que irá gostar ainda mais do perfil do <a href="https://www.instagram.com/fea.dev/">FEA.dev no Instagram</a>! Estamos sempre disponíveis para contato. Novamente, o código completo pode ser acessado pelo <a href="https://github.com/LaQuokka/Analise_BuscaBloco">Github</a>. Obrigada pela sua leitura e bom coding!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ba6c585fdce8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/an%C3%A1lise-de-dados-bloquinhos-de-carnaval-de-s%C3%A3o-paulo-ba6c585fdce8">Análise de Dados: Bloquinhos de Carnaval de São Paulo</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mudanças no Uso do Solo e Emissão de Gases de Efeito Estufa no Brasil]]></title>
            <link>https://medium.com/fea-dev/mudan%C3%A7as-no-uso-do-solo-e-emiss%C3%A3o-de-gases-de-efeito-estufa-no-brasil-72a71e36fe4c?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/72a71e36fe4c</guid>
            <category><![CDATA[solo]]></category>
            <category><![CDATA[meio-ambiente]]></category>
            <category><![CDATA[desmatamento]]></category>
            <category><![CDATA[brasil]]></category>
            <category><![CDATA[efeito-estufa]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Wed, 10 Jan 2024 09:40:52 GMT</pubDate>
            <atom:updated>2024-01-10T08:39:11.063Z</atom:updated>
            <content:encoded><![CDATA[<p>Por Rafael Vieira e Lucas Zupolini</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*blxkzYCdKyPjwYBY4yI34A.jpeg" /></figure><p><strong>Introdução</strong></p><p>Nos últimos anos, têm recebido crescente destaque na mídia questões como desmatamento, incêndios florestais e mudanças climáticas. Esses assuntos vêm passando a ocupar o centro de debates políticos e, até mesmo, as discussões corporativas. Segundo estudo do Fórum Econômico Mundial acerca dos maiores riscos globais para os próximos anos, a degradação ambiental, mudanças climáticas e perda de biodiversidade podem impactar de forma crítica a economia mundial e a continuidade dos negócios.</p><p>O Brasil, em particular, tem testemunhado uma retomada de elevadas taxas de desmatamento e do avanço da fronteira agrícola. Isso é acompanhado de uma ausência de políticas ambientais efetivas, assim como maior inércia dos órgãos públicos responsáveis pela fiscalização e aplicação da legislação existente.</p><p>A conversão de vegetação nativa em pastagens e áreas de cultivo, especialmente através de queimadas, é uma prática comum no Brasil. Além da perda das florestas, outros processos também são responsáveis pela liberação de gases de efeito estufa (GEE) no país, como uso de combustíveis fósseis para geração de energia, emprego de agrotóxicos e fertilizantes, criação de gado e cultivo de lavouras. O retrocesso institucional observado no país, particularmente nos últimos anos, deve exacerbar a relação entre os processos de desmatamento e emissão de gases-estufa.</p><p>Diversos estados brasileiros assumem posturas distintas em relação a esses problemas, através de políticas que, direta ou indiretamente, fomentam o desmatamento em detrimento de um desenvolvimento sustentável e consciente das questões climáticas. Dessa forma, é interessante se analisar a evolução histórica de ambos os parâmetros, desmatamento e emissão de GEE, ao longo do território brasileiro.</p><p><em>Atenção: esse texto foi escrito para um público amplo, não requerendo qualificações prévias dos leitores. Caso esteja interessado em informações adicionais ou na metodologia, por favor leia o código comentado, cujo link está disponível no fim do artigo.</em></p><p><strong>Extração de Dados</strong></p><p>A fim de se fazer um comparativo entre emissões de GEE e mudanças no uso do solo, foram utilizadas duas fontes de dados, ambas disponibilizadas pela Base dos Dados. A primeira foi derivada do mapeamento de cobertura e uso do solo do MapBiomas. O banco de dados traz um conjunto bastante detalhado de informações acerca da transição de biomas por estado. Para simplificação, focamos apenas nas transições de ‘nível 0’, ou seja, entre natural e antrópico, configurando uma área de desmatamento, e entre antrópico e natural, isto é, uma área de regeneração. Os dados foram extraídos a partir de arquivos .csv (“c<em>omma separated values</em>”), explorados e manipulados com a biblioteca Pandas.</p><p>Em seguida, os dados foram simplificados para manter apenas as informações de “nível 0” (de natural para antrópico e de antrópico para natural) usando a função .<em>groupby</em> seguida de .<em>sum</em>(), conforme o código:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/58b8d078cdccc04665bce1d5a9de6143/href">https://medium.com/media/58b8d078cdccc04665bce1d5a9de6143/href</a></iframe><p>A segunda base de dados é composta pelas emissões de gases do efeito estufa (GEE), de modo que esses dados foram extraídos no Sistema de Estimativas de Emissões e Remoções de Gases de Efeito Estufa (SEEG), utilizando-se novamente a biblioteca Pandas para a análise dos dados.</p><p>Como é possível verificar abaixo, observam-se os dados sobre emissão e transição de biomas a partir de 1970 e 1986, respectivamente.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6lqiDnqxd0fWplrq0W4e3g.png" /></figure><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/058a981de3798bde7da33d4fd416a8e0/href">https://medium.com/media/058a981de3798bde7da33d4fd416a8e0/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ZSPOWgSDhOwMboDTeNKDVg.png" /></figure><p><strong>Análise dos Dados</strong></p><p>O uso de ferramentas do Pandas como <em>DataFrame.head()</em>, .<em>columns</em>, <em>pandas</em>.<em>index</em> e .<em>unique</em>() foram primordiais para a compreensão da estruturação dos dados e de como trabalhá-los.</p><p>Numa análise inicial da base de dados de emissões, nota-se uma frequência elevada de células nulas. A própria base de dados alerta para a incomparabilidade entre os períodos de 1986 a 1990 e os anos restantes. Dessa forma, quantificamos a proporção de dados nulos no período e encontramos 44,5% das células com valores nulos na coluna.</p><pre>#Verficando número de valores nulos para emissões entre 1986 a 1990<br>n_cel_nulo = (gases_est.loc[(gases_est[&#39;ano&#39;] &gt; 1985)&amp;(gases_est[&#39;ano&#39;] &lt; 1991)][&#39;emissao&#39;] == 0).sum()<br>print(f&#39;{n_cel_nulo} células possuem valores nulos para emissões entre 1986 e 1990&#39;)<br>n_cel_total = len(gases_est.loc[(gases_est[&#39;ano&#39;] &gt; 1985)&amp;(gases_est[&#39;ano&#39;] &lt; 1991)][&#39;emissao&#39;].index)<br>print(f&#39;O número total de dados no período é {n_cel_total}&#39;)<br>print(f&#39;Ou seja, no período, {n_cel_nulo/n_cel_total:.1%} dos dados são nulos&#39;)</pre><p>145967 células possuem valores nulos para emissões entre 1986 e 1990</p><p>O número total de dados no período é 327675</p><p>Ou seja, no período, 44.5% dos dados são nulos</p><p>Dessa forma, optamos por analisar o recorte histórico entre 1990 e 2019 para ambas as bases de dados.</p><p>Além disso, para simplificar o entendimento e visualização das informações, optou-se por trabalhar apenas com parte do conjunto de dados. Para a transição de biomas, analisamos o “desmatamento líquido”, ou seja, áreas desmatadas subtraídas de áreas regeneradas. A base de dados apresenta-as como áreas de transição de uso “natural para antrópico” e de “antrópico para natural”, respectivamente.</p><p>Já para as emissões, inicialmente, desconsideramos informações como emissões por atividades e diferentes tipos de gases de efeito estufa (GEE). Dessa forma, trabalhamos com as emissões totais.</p><p>Para respondermos à pergunta “quais estados brasileiros mais desmataram no período?”, uma questão mostra-se de grande relevância. Existem unidades federativas (UF) com áreas e históricos de cobertura de vegetação bastante discrepantes. A conversão de uma dada área para uso antrópico em um estado muito grande pode ser pouco relevante quando comparada a uma perda anual de vegetação de mesma magnitude em um estado pequeno. Para ilustrar o problema, vamos analisar as diferenças entre desmatamento líquido absoluto, em hectares, e relativo, em porcentagem de área total da UF.</p><p>O primeiro passo foi criar uma coluna adicional no <em>dataframe </em>com as áreas percentuais de transição de bioma. Para isso, fez-se a divisão das áreas convertidas absolutas pela área total de cada estado. Isso foi facilitado pela criação prévia de um dicionário e um <em>dataframe</em> derivado deste com as siglas e as extensões territoriais de cada UF.</p><pre>#Essa alça faz uso da lista com áreas dos estados<br>for x in estados:<br>  df_bioma_n0.loc[x, &#39;area_%&#39;] = df_bioma_n0.loc[x,&#39;area_ha&#39;]/area_estados.loc[x][0]<br><br>#Segregando dados por de_nivel_0 = antropico -&gt; natural<br>df_annt = df_bioma_n0.loc[(df_bioma_n0[&#39;de_nivel_0&#39;] == &#39;antropico&#39;) &amp; (df_bioma_n0[&#39;para_nivel_0&#39;] == &#39;natural&#39;)]<br><br>#Segregando dados por de_nivel_0 = natural -&gt; antropico<br>df_ntan = df_bioma_n0.loc[(df_bioma_n0[&#39;de_nivel_0&#39;] == &#39;natural&#39;) &amp; (df_bioma_n0[&#39;para_nivel_0&#39;] == &#39;antropico&#39;)]<br><br>#Calculando desmatamento (natural -&gt; antrópico) líquido da regeneração (antrópico -&gt; natural)<br>df_desm_liq = df_ntan.copy(deep=True)<br><br>df_desm_liq[&#39;area_liq&#39;] = df_ntan[&#39;area_ha&#39;] - df_annt[&#39;area_ha&#39;]<br>df_desm_liq[&#39;area_liq_perc&#39;] = df_ntan[&#39;area_%&#39;] - df_annt[&#39;area_%&#39;]<br>df_desm_liq.drop(columns= {&#39;area_ha&#39;, &#39;area_%&#39;, &#39;de_nivel_0&#39;, &#39;para_nivel_0&#39;}, inplace=True)</pre><p>Analisamos o efeito do tamanho do estado sobre as taxas de desmatamento líquido comparando UFs selecionadas de proporções e históricos de desmatamento variados. Podemos notar que grandes estados na fronteira agrícola, como Pará (PA) e Mato Grosso (MT), possuem taxas anuais de perda de floresta líquida notoriamente elevadas.</p><p>Por outro lado, corrigindo-se o desmatamento pela área da UF, Rondônia (RO) e Mato Grosso (MT) destacam-se como exibindo taxas persistentes de perda de vegetação entre 1 e 2% de seus territórios por ano.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/799/1*a3KJFfjC-9bLXGz0eeN4vg.png" /></figure><p>Para compreendermos quais estados possuem perdas acumuladas de vegetação elevadas ao longo do período analisado, agrupamos os dados por conjuntos de anos (décadas de 1990 e 2000, 2011–2016 e 2016–2019). Em seguida, criamos um algoritmo para verificar os estados com as cinco maiores perdas relativas de cobertura vegetal em cada um desses grupos e destacar, em uma tabela, aquelas UFs que aparecem três ou quatro vezes associadas aos maiores desmatamentos.</p><p><em>Perdas de vegetação, em porcentagem do território estadual, em conjuntos selecionados de anos. Em vermelho, Rondônia (RO) e Maranhão (MA) aparecem nos quatro conjuntos, enquanto Mato Grosso (MT) e Tocantins (TO), em laranja, aparecem três vezes.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/622/1*rmiay7kmRNIE7QuuJeXzSw.png" /></figure><p>Num primeiro momento, nota-se que, mesmo entre os estados com maiores perdas percentuais de vegetação, há uma tendência de redução na intensidade do desmatamento. Todavia, há, no geral, grande persistência entre os estados que mais desmataram ao longo das diversas décadas, com destaque para RO e MA.</p><p>Simultaneamente, analisamos as tendências históricas de desmatamento líquido e emissões totais de GEE no Brasil. Os dados são apresentados como linhas contínuas, porém queremos destacar alguns anos em particular, em que são observados picos (máximos e mínimos) tanto de desmatamento quanto de emissões totais. Para isso, usando <em>Axes.scatter()</em>, plotamos os dados destes anos no mesmo gráfico de linha contínua, gerado por <em>Axes.plot</em>, e inserimos uma caixa de texto com o ano em questão. Um extrato deste código seria:</p><pre>fig, ax = plt.subplots(1,2, figsize=(14,7)) # Focaremos apenas no ax[0] relativo a linha contínua<br>ax[0].plot(df_desm_BR.ano, df_desm_BR.area_liq, linewidth=2.5, color=&#39;firebrick&#39;)<br>ax[0].scatter(dest_desm.ano, dest_desm.area_liq, marker=&#39;o&#39;, color=&#39;darkred&#39;)<br>for i in range(len(dest_desm)):<br>  ax[0].text(dest_desm[&#39;ano&#39;].iloc[i]*1.0002, dest_desm[&#39;area_liq&#39;].iloc[i]*1.011, str(dest_desm[&#39;ano&#39;].iloc[i]))<br>ax[0].set_xlabel(&#39;Anos&#39;, fontsize=16)<br>ax[0].set_ylabel(&#39;Área desmatada líquida anual (ha)&#39;, fontsize=16)<br>ax[0].set_title(&#39;Desmatamento líquido nacional&#39;, fontsize=17)</pre><p>Uma análise inicial sugere comportamentos próximos entre as duas variáveis. Embora representadas em escalas distintas, ambas exibiram máximos evidentes em 2003. Em seguida, o desmatamento atingiu seu menor valor em 2009, acompanhado da mínima de emissões em 2010. Em 2016, ambos voltaram a apresentar valores elevados, para reduzirem novamente em 2017, para desmatamento, e 2018, para emissões totais.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/893/1*6qxl9EUDUCDMjkkVVyyzFw.png" /></figure><p>Para um melhor entendimento do padrão de emissões e sua relação com o desmatamento líquido, analisamos as emissões por atividade, destacando anos em que parece haver dessincronização entre as duas variáveis, como 2009–2010 e 2017–2018. As atividades “Energia” e “Mudança e Uso da Terra e Floresta” destacam-se como principais responsáveis pelas emissões, enquanto as demais atividades possuem valores de menores proporções.</p><p>De acordo com os dados analisados, a atividade de mudança no uso do solo assume valores negativos a partir de 2008, indicando uma captura líquida de GEE. Entretanto, mesmo no início do período, de acordo com a base de dados de transição de biomas, observa-se um desmatamento líquido, apontando para uma liberação de carbono superior à sua absorção. Tal divergência entre as bases de dados pode ser decorrente das metodologias de estimativas, particularmente para emissões de GEE.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/779/1*bA6vLqQ6xASjTluYvFB1NA.png" /></figure><p>Em seguida, fizemos uma análise visual dos padrões de desmatamento líquido absoluto e emissão de GEE por estado em diferentes décadas. Retomamos a análise para os intervalos de anos de 1990–2000, 2001–2010, 2011–2015 e 2016–2019. Para associar as informações espaciais de desmatamento e emissões a cada estado, utilizamos o pacote Geopandas e os limites estaduais georreferenciados do IBGE, contidos em um arquivo <em>shapefile</em>.</p><p>Podemos notar que nos períodos iniciais, o desmatamento líquido concentrava-se em alguns poucos estados, principalmente MT e PA. A partir do período entre 2011–2015, todavia, valores elevados encontram-se em diversos estados, como PA, MT, TO, MA, RO e RS. Em comparação, o padrão dos principais estados emissores de GEE se assemelha bastante ao de desmatamento, notoriamente, nos anos iniciais (1991–2000). A partir do período 2001–2010, UFs como SP, RJ e MG somam-se aos principais emissores, que abarcam também MT e RO.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/836/1*qkaVtvF85NTdeoWMn1Iebw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/930/1*r3KuNx5imatyBCJaH1GxiQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/883/1*M3yL4dK3JeeIEh0a0QS3YA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/887/1*U34420L3VXEgSQinXV4N6Q.png" /></figure><p>A divergência entre estados “campeões” de desmatamento e maiores emissores de GEE requer uma melhor investigação. Por isso, examinamos a evolução das emissões por atividade em estados selecionados.</p><p>No geral, estados na fronteira agrícola, incluindo PA, RO e MT, têm como principal atividade geradora de emissões a transição de uso do solo. O PA, como exemplo, exibe um máximo de emissão decorrente dessas atividades em 2007, decrescendo em seguida e mantendo valores negativos, ou seja, de absorção líquida de GEE, entre 2009 e 2018.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/771/1*oks1ujL79ERnu5vzsyKBYg.png" /></figure><p>Por outro lado, alguns estados, como RJ e SP, têm suas maiores emissões provenientes da geração de energia. Neste caso, em particular, os maiores valores ocorreram nos anos de 2012, 2013 e 2014. Já as emissões por mudança de uso do solo, nestas UFs, são consideravelmente menores, assumindo valores negativos em algumas situações, como SP a partir de 2004.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/850/1*BCTr8XNC9CofSsKvZeL3Jw.png" /></figure><p><strong>Conclusão</strong></p><p>A partir dessa análise exploratória, podemos tirar uma série de conclusões sobre o cenário brasileiro. Primeiramente, apesar dos níveis atuais tanto de emissões totais quanto de desmatamento líquido serem inferiores a décadas anteriores, os valores encontram-se bastante elevados e representam entraves aos acordos climáticos assumidos pelo país.</p><p>O cenário brasileiro é marcado por estados mais industrializados e com níveis elevados de emissões, assim como UFs de menor industrialização, porém com níveis de geração de GEE igualmente preocupantes. No geral, no primeiro caso, estes territórios exibem maior participação de fontes energéticas nas emissões e menores taxas de desmatamento, embora alguns possam ainda configurar entre os estados com as maiores conversões de vegetação. Já no segundo grupo, comumente encontram-se estados na fronteira agrícola, cuja principal atividade emissora é a mudança no uso do solo, e detentores de taxas de desmatamento bastante elevadas.</p><p>Apesar desse cenário diverso, o volume de emissões brasileiro é historicamente marcado pela conversão de cobertura vegetal, associada a um modelo de desenvolvimento insustentável. Dessa forma, tanto a partir de uma análise histórica quanto de uma investigação espacial, é possível apontar uma relação entre o desmatamento e as emissões ao longo do território nacional.</p><p><strong><em>link para o acesso ao código do artigo:</em></strong></p><p><a href="https://colab.research.google.com/github/lzupolini/dev_projeto_final/blob/main/ProjFinal_Dev16FEB23.ipynb">https://colab.research.google.com/github/lzupolini/dev_projeto_final/blob/main/ProjFinal_Dev16FEB23.ipynb</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=72a71e36fe4c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/mudan%C3%A7as-no-uso-do-solo-e-emiss%C3%A3o-de-gases-de-efeito-estufa-no-brasil-72a71e36fe4c">Mudanças no Uso do Solo e Emissão de Gases de Efeito Estufa no Brasil</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Análise de dados: Aluguel de Imóveis em São Paulo]]></title>
            <link>https://medium.com/fea-dev/aluguel-de-im%C3%B3veis-em-sp-10dce21381ad?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/10dce21381ad</guid>
            <category><![CDATA[são-paulo]]></category>
            <category><![CDATA[análise-de-dados]]></category>
            <category><![CDATA[aluguel-de-imóveis]]></category>
            <category><![CDATA[programming-languages]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Wed, 10 Jan 2024 09:40:32 GMT</pubDate>
            <atom:updated>2024-01-10T10:23:59.673Z</atom:updated>
            <content:encoded><![CDATA[<p>Por Ana Werneck, Felipe de Souza, Kim Ju Hyang e Mateus Pamio</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/1*Ze6YFhl1qH7w7A8SDwjzMw.png" /></figure><h3><strong>Introdução:</strong></h3><p>Em nosso projeto final da capacitação em Python realizamos a análise de uma base de dados sobre aluguéis de imóveis em São Paulo. O tema aluguel de casas é um tema de extrema relevância em qualquer lugar do mundo, mas especialmente em uma metrópole como São Paulo, que é habitada por mais de 12 milhões de pessoas. O assunto é bastante complexo e amplo e, por isso, é pauta constante de discussões públicas e acadêmicas. Por essa razão, nosso grupo se interessou por compreender melhor as dinâmicas e nuances do mercado imobiliário na cidade de São Paulo. Consideramos que, dada a relevância e recorrência do assunto para todos nós, seria interessante explorá-lo em nosso projeto final.</p><p>O dataset a ser analisado está disponível em: <a href="https://www.kaggle.com/datasets/renatosn/sao-paulo-housing-prices">https://www.kaggle.com/datasets/renatosn/sao-paulo-housing-prices</a>.</p><p>A base de dados contém informações sobre aluguéis na cidade de São Paulo extraídas da plataforma QuintoAndar.</p><p>A partir dos dados de mais de 11 mil propriedades incluídas no dataset, é possível analisar diversos aspectos e estabelecer relações entre as diferentes variáveis, de modo a fornecer interessantes conclusões acerca do cenário de aluguéis imobiliários na cidade de São Paulo e dentro de cada zona.</p><h3><strong>Hipóteses:</strong></h3><p>A nossa análise foi pautada de acordo com três hipóteses elaboradas pelo grupo. Elas tinham como objetivo analisar diferentes aspectos da base de dados que poderiam fornecer bons insights sobre o cenário imobiliário de São Paulo.</p><ol><li>A localização do imóvel em SP impacta o valor do aluguel por m² e o valor total a m². Os imóveis localizados na região do Centro Ampliado possuem os valores mais altos.</li><li>O tipo de imóvel influencia no aluguel e valor total por m². O tipo mais caro de imóvel é casa em condomínio e o mais barato, studio e kitnet.</li><li>Diferentes tipos de imóveis se concentram em diferentes localizações de SP. Por exemplo, o Centro Ampliado possui mais apartamentos.</li></ol><h3><strong>Tratamento de dados:</strong></h3><p>Para começar nosso projeto, primeiro importamos algumas bibliotecas cruciais para a realização da análise.</p><p><strong>Input</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/502b03744c11ac39035cd8142f08dfb9/href">https://medium.com/media/502b03744c11ac39035cd8142f08dfb9/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/987/1*_nBDThck81wUKZI3D1TvhQ.png" /></figure><p><strong>Padronização e categorização dos nomes de bairros pela zona</strong></p><p>Ao importar nosso dataset, inicialmente identificamos 1199 nomes de bairros distintos. No entanto, notamos que havia variações nos nomes de bairros que se referiam ao mesmo local, como “Vila Ré” e “Vila Re”.</p><p>Assim, foi necessário uniformizar as nomenclaturas de cada um. Para isso, usamos a biblioteca “Unicode” com o objetivo de remover os acentos e algumas funções da biblioteca “Pandas” como “str.lower()” que serve para deixar todas as palavras em minúscula.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/02b9e6a405c49156b04271390f571401/href">https://medium.com/media/02b9e6a405c49156b04271390f571401/href</a></iframe><p>Depois desse procedimento, vimos que 150 observações foram uniformizadas, resultando 1049 bairros diferentes. Ainda assim, para viabilizar nossas análises, optamos por categorizar em diferentes zonas.</p><p>Em princípio, planejávamos utilizar as cinco regiões clássicas do município de São Paulo (Norte, Sul, Leste, Oeste e Centro). Porém, pensando em nossas hipóteses, buscamos encontrar subdivisões que levassem em conta critérios não só geográficos, mas também socio-econômicos. Dessa forma, estaríamos evitando que bairros com características drasticamente diferentes fossem tratados da mesma forma, como Jardim Paulista e Jardim Ângela. Em nossas pesquisas, nos contentamos com uma divisão elaborada pela Fundação Seade. A partir dela, adicionamos à nossa base de dados uma nova coluna denomindada “Zona” , na qual classificamos os bairros em cinco zonas (Centro Ampliado, Leste 1, Leste 2, Sul, Norte), de acordo com o mapa abaixo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wRZk4jsqz-4_gxlTE89bmg.png" /><figcaption>Subdivisão em zonas do município de São Paulo utilizada em nossas análises.</figcaption></figure><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c983e0f7c48d04b84e269db51b6d1a78/href">https://medium.com/media/c983e0f7c48d04b84e269db51b6d1a78/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/991/1*3scFQc6mslCOr5HEbZLpFQ.png" /><figcaption>Primeiras 10 linhas do DataFrame após primeira etapa do tratamento de dados.</figcaption></figure><p><strong>Tratamento de Dados - parte II</strong></p><p>Em seguida, tratamos o resto dos dados, tomando os seguintes passos:</p><ol><li>Verificar se existe algum dado vazio nas observações</li><li>Verificar se existem as duplicatas</li><li>Eliminar outliers de cada variável, usando box-plot para as colunas de interesse (nesse caso, coluna “área”, “aluguel” e “total”</li><li>Eliminar outliers no caso de multivariáveis com a biblioteca “PyOD”</li></ol><p>Com esses procedimentos feitos, podemos agora entrar na parte de análise das nossas hipóteses.</p><h3>Hipótese 1</h3><p><em>A localização do imóvel em SP impacta o valor do aluguel por m² e o valor total(incluindo condomínio e IPTU) por m². Os imóveis localizados no Centro Ampliado devem possuir valores mais altos.</em></p><p>Com o objetivo de testar a veracidade da primeira hipótese, buscamos construír alguns gráficos que pudessem fornecer conclusões ao seu respeito.</p><p><strong>GRÁFICO 1:</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/955a4874a51df9f3028646c4a52456a8/href">https://medium.com/media/955a4874a51df9f3028646c4a52456a8/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/807/1*wFBzCIBH9JpattnaxqqG7g.png" /></figure><p>O primeiro gráfico estabelece os valores correspondente ao aluguel por m² em cada uma das regiões analisadas. Traçamos as linhas de aluguel e valor total (que inclui taxas de serviço e impostos), mas como previsto, elas progridem de forma semelhante.</p><p><strong>GRÁFICO 2:</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f6d93bf9a1885d9afd0a4140f65cfee9/href">https://medium.com/media/f6d93bf9a1885d9afd0a4140f65cfee9/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/824/1*WdJcD1tbQsDDu8aq__d3og.png" /></figure><p>O segundo gráfico, por sua vez, compara os bloxpot&#39;s dos valores totais por m². A partir dele pudemos analisar a dispersão desses valores, assim, além das informações sobre valores médios obtidas no primeiro gráfico, pudemos notar como se concentram os valores totais por região. Por exemplo, percebemos que os valores no centro variam mais, ao passo de que os da zona Leste 2 se concentram mais ao redor do valor da mediana.</p><h4>Conclusão da hipótese 1</h4><p>A partir dos resultados, a hipótese 1 se confirma. Os valores do preço por médio por metro quadrado varia de acordo com a localidade e o centro no geral é mais caro.</p><p>Das 5 regiões, observamos que o Centro Ampliado apresenta o maior valor médio de aluguel por metro quadrado, enquanto o valor mais baixo é encontrado em Leste 2. A zona norte também tem uma média por metro quadrado mais baixa. Já a leste 1 e a zona sul têm uma média no meio termo, sendo ambas aproximadamente.</p><p>É possível que essa grande variação ocorra devido ao Centro Ampliado abrigar bairros nobres e boêmios, além de ser o centro tecnológico e financeiro da cidade, o que confere uma vantagem competitiva ao Centro Ampliado, tornando-o ainda mais atrativo para empresas e profissionais que buscam estar no coração da atividade comercial e empresarial.</p><p>Por outro lado, Leste 2 e Zona Norte, como zonas mais extremas da cidade, podem não oferecer o mesmo nível de infraestrutura e comodidades encontradas no Centro Ampliado. Essa distância em relação ao centro financeiro e tecnológico, aliada a uma possível menor oferta de serviços e conveniências, contribui para que os valores de aluguel por metro quadrado sejam mais baixos nessas regiões.</p><p>Apesar de tudo isso, deve-se mencionar que um imóvel no Centro não será necessariamente mais caro do que algum de outra região, pois há variações nos preços da região, de forma que no Centro há algumas moradias mais baratas do que em outras regiões. Assim, o preço médio mais alto é apenas no geral, mas não significa que por estar no Centro Ampliado um imóvel será necessariamente mais caro.</p><h3>Hipótese 2:</h3><p><em>O tipo de imóvel influencia o valor do aluguel e o valor total por m². O mais caro deve ser casa em condomínio, e o mais barato, studio e kitnet.</em></p><p>Para começar, tiramos a média dos valores do aluguel e totais por metro quadrado dos diferentes tipos de imóveis e montar um dataframe.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cb6065cf520439175adde78d6385e225/href">https://medium.com/media/cb6065cf520439175adde78d6385e225/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/281/1*GUwN9ManMTKJmSgp1hwCEA.png" /></figure><p>Para visualizar, plotamos um gráfico com os valores médios por m² para cada região.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/770/1*Qex5maW-lwTDkklxpVgFyA.png" /></figure><p>Após analisarmos o gráfico, surgiu uma questão: essa diferença de preço é causado pelas regiões, ou seja, por haver uma concentração diferente de tipos de imóveis por região, ou é decorrência do tipo de imóvel, que influencia no preço?</p><p>Para saná-la, plotamos um gráfico com os valores dos tipos de imóveis para cada região, isolando esse fator.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f3ec3a5eafab768dd84b4d5d0baf3fcd/href">https://medium.com/media/f3ec3a5eafab768dd84b4d5d0baf3fcd/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H4D3Iy0lOdXygqclC_AayQ.png" /></figure><h4>Conclusão da Hipótese 2:</h4><p>Observa-se que, na verdade, os Studios e Kitnets são os imóveis com o maior valor por metro quadrado em todas as zonas analisadas, enquanto as casas apresentam o menor valor por metro quadrado.</p><p>Portanto, ao avaliar o valor total por metro quadrado em diferentes zonas, é essencial considerar não apenas a localização, mas também o tipo de imóvel em questão, pois esse fator também desempenha um papel significativo nas flutuações dos preços. Isso auxiliará compradores, vendedores e investidores a tomarem decisões mais embasadas e assertivas no mercado imobiliário.</p><h3>Hipótese 3:</h3><p><em>O Centro Ampliado apresenta uma concentração significativamente maior de apartamentos em relação a outros tipos de imóveis.</em></p><p>O código a seguir foi criado para podemos entender como os diferentes tipos de propriedades estão distribuídos nas diferentes áreas da cidade.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5f91a4972e01eb7bdd97a6f59566e8d0/href">https://medium.com/media/5f91a4972e01eb7bdd97a6f59566e8d0/href</a></iframe><p>Podemos ver a seguir um gráfico que ajuda na visualização da concentração dos tipos de imóveis por região:</p><figure><img alt="" src="https://cdn-images-1.medium.com/proxy/1*vSQrXZRGq9Pa269hF5q4wA.png" /></figure><h4>Conclusão da Hipótese 3:</h4><p>Cerca de 63.9% das unidades na região são apartamentos, mas essa tendência é comum em todas as áreas da cidade. Em geral, apartamentos são a opção mais comum, seguidos por casas, studios, kitnets e casas em condomínio, com pequenas variações nas proporções entre as regiões. Isso ocorre porque São Paulo possui uma grande quantidade de apartamentos disponíveis, o que se reflete nos registros do Quinto Andar.</p><p>Além disso, devido à alta demanda, há uma oferta significativa de apartamentos pequenos nas plataformas de aluguel de imóveis, tornando o aluguel de apartamentos uma escolha atraente para os proprietários.</p><h3>Conclusão: Tendências do Mercado Imobiliário em São Paulo</h3><p>A predominância de apartamentos no mercado imobiliário de São Paulo é impulsionada pela demanda por unidades compactas e acessíveis, especialmente em áreas urbanas movimentadas. A praticidade e eficiência no uso do espaço tornam os apartamentos, principalmente studios e kitnets, populares entre uma população que valoriza a mobilidade e a proximidade com centros urbanos. Além disso, os custos mais baixos atraem tanto compradores em busca de moradia quanto investidores interessados em aluguéis. No entanto, casas em condomínio continuam a ser uma opção para aqueles que desejam mais espaço, privacidade e segurança, sendo procuradas por famílias maiores.</p><p>Essa tendência de predominância de apartamentos está em linha com esforços para tornar as unidades mais sustentáveis e adaptadas às necessidades dos moradores urbanos, com a integração de tecnologias inteligentes e espaços compartilhados. Em resumo, São Paulo continuará a oferecer uma variedade de imóveis, mas os apartamentos devem permanecer como a opção mais proeminente, atendendo às necessidades de uma população em crescimento e em busca de habitações práticas e acessíveis.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=10dce21381ad" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/aluguel-de-im%C3%B3veis-em-sp-10dce21381ad">Análise de dados: Aluguel de Imóveis em São Paulo</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Preço dos Carros no Brasil: Análise de Dados com Python]]></title>
            <link>https://medium.com/fea-dev/pre%C3%A7o-dos-carros-no-brasil-an%C3%A1lise-de-dados-com-python-3f74b6c9915e?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/3f74b6c9915e</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[análise-de-dados]]></category>
            <category><![CDATA[precificação]]></category>
            <category><![CDATA[cars]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Wed, 10 Jan 2024 09:40:12 GMT</pubDate>
            <atom:updated>2023-11-07T01:28:24.170Z</atom:updated>
            <content:encoded><![CDATA[<p>Por <a href="https://github.com/GvFreitas1"><strong>Guilherme Freitas</strong></a><strong>, </strong><a href="https://github.com/Osodnil"><strong>Henrique Lindoso</strong></a><strong> e </strong><a href="https://github.com/mi-ramos"><strong>Milena Ramos</strong></a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*qPX-CyP2IamokXTH" /></figure><h3><strong>Contextualização:</strong></h3><p>Com a crescente demanda por veículos automotores, torna-se imprescindível compreender as tendências e os fatores que afetam o preço dos carros em território brasileiro, fato que nos motivou a desenvolver este trabalho e sua publicação.</p><p>Neste estudo, dedicaremos nossa atenção ao exame dos preços dos carros no Brasil, utilizando Python como nossa ferramenta de análise. Exploraremos uma série de variáveis, como marcas, tamanho do motor, combustível utilizado, entre outras, a fim de entender melhor como os valores dos veículos se comportaram ao longo do tempo e porque.</p><p>Ao longo do artigo, planejamos responder as seguinte perguntas:</p><ul><li>O preço médio dos carros aumenta com o tempo?</li><li>O combustível tem impacto no tamanho do motor?</li><li>Como as relações implícitas entre as marcas de luxo e populares mostram-se nos dados?</li></ul><h3>Data set:</h3><p><strong>Fonte: </strong>FIPE <br><strong>Período:</strong> 2021– 2023<br><strong>Localização:</strong> Brasil</p><p>No data set utilizado, disponível no <a href="https://www.kaggle.com/datasets/vagnerbessa/average-car-prices-bazil/data">Kaggle</a>, temos informações sobre 600 mil carros do ano de 2021 até 2023, com diversas variáveis, expostas a seguir:</p><ul><li><em>year_of_reference: </em>ano correspondente à data que o dado foi coletado;</li><li><em>month_of_reference</em>: mês referente à data que o dado foi coletado;</li><li><em>fipe_code</em>: identificação utilizada para cada modelo de carro no site da FIPE;</li><li><em>authentication</em>: código que autentica a consulta no site da FIPE;</li><li><em>brand</em>: marca de cada carro nos dados;</li><li><em>model</em>: modelo de cada carro nos dados;</li><li><em>fuel</em>: tipo de combustível que o carro comporta (diesel, gasolina ou alcóol);</li><li><em>gear</em>: tipo do câmbio de cada carro (automático ou manual);</li><li><em>engine_size</em>: tamanho do motor em centímetros cúbicos;</li><li><em>year_model</em>: corresponde à versão do modelo de cada carro analisado;</li><li><em>avg_price_brl</em>: média do preço do carro em reais, de acordo com a FIPE;</li></ul><h3>Importando bibliotecas e carregando os dados:</h3><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e04250c785e0d857999461445ec811a4/href">https://medium.com/media/e04250c785e0d857999461445ec811a4/href</a></iframe><p>Após o carregamento dos dados, fizemos o <strong><em>tratamento dos dados</em></strong><em>, </em>desde sua limpeza até a criação de uma coluna para as datas:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/173ce43ff8f5576a85233f59a9a0e4be/href">https://medium.com/media/173ce43ff8f5576a85233f59a9a0e4be/href</a></iframe><h3>Tempo X Preço Médio:</h3><p>Utilizando um gráfico do preço médio pelo tempo, objetivamos ver o crescimento dos preços conforme os meses. Utilizamos um gráfico de dispersão, que compara asduas variáveis de interesse, agrupando o dataframe por data, calculando a média dos preços para cada período analisado, e calculada uma reta de regressão linear simples.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/f33552d9f066a330dbe99c378324831f/href">https://medium.com/media/f33552d9f066a330dbe99c378324831f/href</a></iframe><p>Output:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RjTUqcCKoBc8TFbHCSzKug.png" /></figure><p>Vemos o crescimento dos preços ao longo dos anos, confirmando nossa primeira hipótese.</p><p>Observa-se que, embora haja uma tendência de crescimento conforme os meses, entre 2022/05 e 2022/10 houveram algumas oscilações, em que preços tiveram menores em datas posteriores do que em datas anteriores.</p><p>Para verificar a dimensão do crescimento dos preços, comparamos com o IPCA e com o preço médio do barril de petróleo, procurando associação entre as variáveis:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/02e20eca4f3f44aa7d1705613637b227/href">https://medium.com/media/02e20eca4f3f44aa7d1705613637b227/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*sKNjEUHIICo9eYuS_GrjMw.png" /></figure><p>Vemos que a taxa de crescimento do preço médio dos carros foi bem superior ao IPCA, com mais de 47% de aumento no fim do período.</p><p>Além disso, apesar das altas e baixas do preço do petróleo, não se vê ondulação parecidas na curva de preços médios, levando a acreditar que a preferência por carros econômicos nesses períodos não foram o suficiente para impactar nos preços médios.</p><h3>Combustível X Tamanho do Motor:</h3><p>Inicialmente, buscamos entender como era a distribuição de combustível nos dados, para isso criamos um gráfico de setor:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/772a2b4af9f33e61a9342d46febd0bc5/href">https://medium.com/media/772a2b4af9f33e61a9342d46febd0bc5/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*Xpwhqo4st0Qq-oThQQP7yw.png" /></figure><p>Observamos a prevalência absoluta da gasolina sobre as alternativas, não obstante, praticamente não houve variação na proporção de combustíveis usados ao longo do tempo. Entendemos que, como não surgiram novas marcas no dataset, e as marcas analisadas, mesmo com novos modelos, sempre mantém a proporção de combustível, a proporção total também não se alterou.</p><p>Dando enfoque na pergunta citada, temos as relações entre o combustível e o tamanho do motor, assim como um histograma mostrando sua distribuição para cada combustível:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/a1513ff526c1b6fc12daa12d9e2dd67e/href">https://medium.com/media/a1513ff526c1b6fc12daa12d9e2dd67e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*JqpvmSA6X2H1bSncgIMGvg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*z5EcJmGYwZVpYa2IDoWzTA.png" /></figure><p>Concluímos que existe uma relação entre o tipo de combustível utilizado e o tamanho do motor, sendo os motores a diesel os maiores e os a álcool menores. Pesquisando sobre, associamos isso a 3 motivos principais:</p><ul><li><em>Eficiência térmica:</em> Motores a diesel possuem maior eficiência térmica em comparação com motores a álcool, ou seja, esses motores convertem uma maior proporção de energia térmica do combustível em trabalho mecânico, resultando em maior potência e torque para um dado tamanho de motor, quando comparado com o a álcool.</li><li><em>Torque:</em> Os motores a diesel geralmente produzem mais torque em baixas rotações do que os motores a álcool. Isso é importante para aplicações que requerem força de tração em baixas velocidades, como veículos utilitários e caminhões.</li><li><em>Combustão:</em> A combustão nos motores a diesel é controlada por compressão, enquanto nos motores a álcool é controlada por ignição por faísca. A combustão por compressão nos motores a diesel permite taxas de compressão mais altas, o que resulta em maior eficiência, maior potência e, portanto, necessidade de mais volume.</li></ul><h3>Marcas Famosas X Preço Médio:</h3><p>Escolhendo as 10 marcas mais conhecidas, decidimos fazer uma comparação de seus preços e quantidade de modelos, em busca de disparidades.</p><p>A escolha levou em conta além da marca ser conhecida, incluir na selação tanto marcas de luxo quanto populares, para que pudéssemos perceber caso houvesseem diferenças significativas.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/b183194090ec034bf1151e5ae36bc427/href">https://medium.com/media/b183194090ec034bf1151e5ae36bc427/href</a></iframe><p>Com isso, o resultado foi:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K02e_Fk4WyqK3jB6XvuX2w.png" /></figure><p>Como esperado, as marcas de luxo possuem um preço médio muito elevado comparado com as demais. Além disso, observamos através do gráfico de quantidade de modelos que parece ter uma correlação negativa com os preços, ou seja, marcas com maior variedade de modelos tendem a ter preços mais baixos, possivelmente porque as marcas com mais modelos são justamente aquelas que produzem carros “populares”.</p><p>Também comparamos a proporção de combustíveis e o tamanho médio dos motores de cada marca:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/cd4f89da9ff4e3f23a8a1695b19bce0e/href">https://medium.com/media/cd4f89da9ff4e3f23a8a1695b19bce0e/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PjURe3wZzbqp47fItvW2EQ.png" /></figure><p>Percebemos que as 2 marcas com os maiores motores utilizam somente gasolina como combustível, possivelmente pela potência dos motores, que exige mais pesquisa, consequentemente, gera a preferência pelo combustível com mais estudos.</p><h3>Modelos mais Caros X Modelos mais Baratos:</h3><p>Aprofundando a análise, optamos também por comparar os 5 modelos mais baratos e mais caros de cada data, procurando dispariedades entre a evolução dos preços.<br>A seguir temos as marcas que mais apareceram nas seleções de mais baratos e mais caros respectivamente, juntamente com sua participação em porcentagem e números de modelos:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/250/1*9VqBjgwJmeVWs60rFhyjsg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/292/1*Okqa-5Yb1GQ_Hr7y2nbHEA.png" /></figure><p>Como esperado, as marcas com os modelos mais caros são as marcas de luxo, em especial a <em>Ferrari</em>, uma das mais conhecidas do mundo, que fabrica mais da metade dos modelos mais caros do data set.</p><p>Finalmente, criando um gráfico que mostra a evolução, padronizada, do preço desses modelos, temos:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3c70bcb22994bd1eabc79823035bfad6/href">https://medium.com/media/3c70bcb22994bd1eabc79823035bfad6/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*pxE86EAlFD_Pf2OvU-2mcA.png" /></figure><p>Observamos que o preço médio dos carros mais baratos praticamente acompanhou a inflação, se mantendo como carros populares, enquanto o dos carros mais caros teve um grande salto com um aumento de mais de 100% em 2 anos.</p><h3>Conclusão geral:</h3><p>Todas as hipóteses escolhidas foram apontadas como verdadeiras. Em suma, o preço médio dos carros aumentou conforme a variação do IPCA conforme os meses. Motores maiores utilizam diesel de preferência, porém maior parte das marcas do DataSet tinham gasolina como principal, além da distribuição de combustíveis não variar conforme o tempo. Marcas de luxo possuem carros mais caros e menos modelos, o contrário também ocorre. O crescimento percentual de preço dos carros mais baratos cresce acompanhando o IPCA, em contrapartida, carros mais caros duplicaram seus preços no período.</p><p>A partir da análise mostrada anteriormente, abre-se uma gama de possibilidade de análises futuras, como criar novos tipos de filtragem para selecionar outras 10 marcas para serem utilizadas na terceira hipótese, afetando na correlação observada entre preço médio e quantidade de modelos.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3f74b6c9915e" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/pre%C3%A7o-dos-carros-no-brasil-an%C3%A1lise-de-dados-com-python-3f74b6c9915e">Preço dos Carros no Brasil: Análise de Dados com Python</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Uma Análise dos Crimes na Cidade de São Paulo Utilizando Python]]></title>
            <link>https://medium.com/fea-dev/crimes-em-s%C3%A3o-paulo-41f790cb4281?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/41f790cb4281</guid>
            <category><![CDATA[programming]]></category>
            <category><![CDATA[são-paulo]]></category>
            <category><![CDATA[crime]]></category>
            <category><![CDATA[brasil]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[FEA.dev]]></dc:creator>
            <pubDate>Wed, 10 Jan 2024 09:39:26 GMT</pubDate>
            <atom:updated>2024-01-10T10:24:44.040Z</atom:updated>
            <content:encoded><![CDATA[<p>Por Adriel Faustino, André Pennini, Fernanda Mees e Vitor Tatiama</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/0*BgKe9hjE4rC38MDM.jpg" /></figure><p>A cidade de São Paulo é uma grande metrópole extremamente populosa e cosmopolita, um dos grandes centros culturais e de riquezas mundiais. Contudo, como muitas outros grandes centros urbanos, a cidade é a décadas acometida por uma série de crimes que infelizmente se tornaram para muitos característicos à capital.</p><p>Dado este grave fenômeno persistente, foi elaborado este projeto que busca analisar e reconhecer padrões e tendências gerais que descrevem a natureza do crime na capital paulista.</p><p>O grupo centrou sua análise especificamente em homicídios a partir de 4 hipóteses que foram verificadas:</p><ol><li>Bairros com menor renda em São Paulo tem um maior número de homicídios consumados;</li><li>Os homicídios ocorrem om maior frequência a noite e em locais abertos;</li><li>Os homicídios aumentaram ao longo do tempo em todas as zonas de São Paulo de uniformemente;</li><li>Homens entre 21 a 30 anos tem uma maior taxa de homicídios.</li></ol><p>As hipóteses foram testadas a partir do exame dos dados disponibilizados pela Secretaria de Segurança Pública de São Paulo (SSP) compilados em um DataFrame disponível em: <a href="https://www.kaggle.com/datasets/markfinn1/crime-data-in-so-paulosp-brazil">https://www.kaggle.com/datasets/markfinn1/crime-data-in-so-paulosp-brazil</a>.</p><p>Este artigo apresentará as informações obtidas ao longo da análise além de explorar o processo de produção do projeto e alguns desafios encontrados em seu desenvolvimento.</p><p><strong>Início do código</strong></p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e783a9d02d4962f444a1e802e47b58ce/href">https://medium.com/media/e783a9d02d4962f444a1e802e47b58ce/href</a></iframe><p><strong>Manipulação e tratamento de dados</strong></p><pre># Vendo o tamanho e as informações do dataset<br>print(homicidio_doloso.shape)<br>homicidio_doloso.info()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/614/1*q-MQ7O4Y6SHxXqKRuljmGw.png" /></figure><p>O DataSet apresenta um BO de homicídio doloso por linha, e cada coluna contém uma informação (como ano, número do BO, data, hora, bairro, cidade, etc.), totalizando 54 colunas. Para melhor visualização, foi feito um tratamento por meio da criação de 3 DataFrames diferentes: um com os dados gerais mais importantes; outro com os dados para a análise do sexo; e outro com os dados para a análise de idade (já que sexo e idade tinham muitas informações faltando).</p><pre># Selecionando as colunas que eu desejo para fazer as análises<br>homicidio = homicidio_doloso[[&quot;ANO_BO&quot;, &quot;NUM_BO&quot;, &quot;HORAOCORRENCIA&quot;, &quot;PERIDOOCORRENCIA&quot;, &quot;BAIRRO&quot;, &quot;CIDADE&quot;, &quot;UF&quot;, &quot;DESCRICAOLOCAL&quot;, &quot;STATUS&quot;]]<br>homicidio = homicidio.rename(columns={<br>    &quot;ANO_BO&quot;: &quot;ANO&quot;,<br>    &quot;HORAOCORRENCIA&quot;: &quot;HORA&quot;,<br>    &quot;PERIDOOCORRENCIA&quot;: &quot;PERIODO&quot;,<br>    &quot;BAIRRO&quot;: &quot;BAIRRO&quot;,<br>    &quot;DESCRICAOLOCAL&quot;: &quot;LOCAL&quot;,<br>    })<br># Dataframes diferentes para sexo e idade já que possuem poucos dados neles<br>sexo = homicidio_doloso[[&quot;ANO_BO&quot;, &quot;NUM_BO&quot;, &quot;SEXO&quot;, &quot;BAIRRO&quot;]]</pre><pre>idade = homicidio_doloso[[&quot;ANO_BO&quot;, &quot;NUM_BO&quot;, &quot;IDADE&quot;, &quot;BAIRRO&quot;]]</pre><p>Ademais, foram apagadas as linhas com dados nulos e duplicados nos 3 dataframes. Foi necessário remover também os homicídios que não ocorreram no estado de São Paulo, resultando no dataset maior com tamanho (22.036, 9), anteriormente com tamanho (147.033, 54).</p><p><strong>Primeira Hipótese</strong></p><p>Bairros com menor renda em SP tem maior número de homicídios consumados. A partir da pesquisa foram definidos os bairros de maior e menor renda na região. Acredita-se em uma correlação entre o nível de renda de certas regiões com a frequência de crimes. Entende-se que a desigualdade entre regiões paulistanas tem como uma de suas expressões materiais a ocorrência de crimes violentos .</p><p>A comprovação da hipótese indicaria uma relação de dependência entre as condições materiais entre regiões e a taxa de crimes violentos.</p><p>*<a href="http://produtos.seade.gov.br/produtos/msp/ren/ren2_001.htm">http://produtos.seade.gov.br/produtos/msp/ren/ren2_001.htm</a></p><pre># Função que seleciona os bairros de uma lista dentro de um dataframe e devolve eles agrupados por bairro e também por ano e bairro<br>def maiuscula(lista):<br>    # Torna a lista em máiusculo<br>    i = 0<br>    for bairro in lista:<br>        lista[i] = bairro.upper()<br>        i += 1<br>    # Verifica os dados do dataframe que estão na lista<br>    zona = cidade_sp[cidade_sp[&quot;BAIRRO&quot;].isin(lista)]<br>    # Agrupa os dados por bairro e devolve quantas vezes apareceu(Número de homicídios) em ordem decrescente, apenas o top 10<br>    zona_hom = zona.groupby(&quot;BAIRRO&quot;).count().sort_values(by=&quot;ANO&quot;, ascending=False).reset_index().iloc[0:5]<br>    # Agrupa por ano e depois por bairro e devolve o número de homicídios em ordem decrescente<br>    zona = zona.groupby([&quot;ANO&quot;, &quot;BAIRRO&quot;]).count().sort_values(by=[&quot;ANO&quot;, &quot;NUM_BO&quot;], ascending=[True, False]).reset_index()<br>    # Junta os dois dataframes e pega só o que tem em comum pela coluna &quot;BAIRRO&quot;<br>    zona_unificado = zona.merge(zona_hom[&quot;BAIRRO&quot;], how=&#39;inner&#39;)<br>    return zona_unificado, zona_hom</pre><p>A função acima foi utilizada para manipular o DataFrame conforme desejado, ao comparar uma lista com o nome dos bairros selecionados com os bairros já listados no DataFrame.</p><pre># Lista com os bairros de menor renda / informações tiradas da internet<br>bairros_menor_renda_sp = [<br>    &quot;Heliopolis&quot;,<br>    &quot;Paraisopolis&quot;,<br>    &quot;Cidade Tiradentes&quot;,<br>    &quot;Jardim São Luís&quot;,<br>    &quot;Grajau&quot;,<br>    &quot;Capão Redondo&quot;,<br>    &quot;Brasilandia&quot;,<br>    &quot;JARDIM ANGELA&quot;,<br>    &quot;Jd Peri&quot;,<br>    &quot;Parelheiros&quot;<br>]<br># Usando as funções formuladas anteriormente<br>menor_renda, homicidios_menor = maiuscula(bairros_menor_renda_sp)</pre><pre># Lista com os bairros de maior renda / informações tiradas da internet<br>bairros_maior_renda_sp = [<br>    &quot;Jd Europa&quot;,<br>    &quot;Jd Paulistano&quot;,<br>    &quot;Vila Nova Conceição&quot;,<br>    &quot;Itaim Bibi&quot;,<br>    &quot;Moema&quot;,<br>    &quot;Morumbi&quot;,<br>    &quot;Brooklin&quot;,<br>    &quot;Alto de Pinheiros&quot;,<br>    &quot;Perdizes&quot;,<br>    &quot;Jardins&quot;<br>]<br>maior_renda, homicidios_maior = maiuscula(bairros_maior_renda_sp)</pre><p>Os bairros selecionados foram então utilizados para filtrar e organizar o banco de dados de forma compreensível para comparação e teste da hipótese.</p><pre># Criando os gráficos lado a lado<br>plt.figure(figsize=(15, 6))</pre><pre># Encontrando a escala máxima para ambos os DataFrames<br>max_scale = max(homicidios_menor[&quot;NUM_BO&quot;].max(), homicidios_maior[&quot;ANO&quot;].max())<br># Gráfico 1 - Lado esquerdo<br>plt.subplot(1, 2, 1)<br>sns.barplot(x=homicidios_menor[&quot;BAIRRO&quot;], y=homicidios_menor[&quot;NUM_BO&quot;], data=homicidios_menor, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)<br>plt.title(&quot;Homicídios em bairro de menor renda em SP&quot;)<br>plt.ylim(0, max_scale)  # Definindo limite superior do eixo y igual para ambos os gráficos<br>plt.tight_layout()<br># Gráfico 2 - Lado direito<br>plt.subplot(1, 2, 2)<br>sns.barplot(x=homicidios_maior[&quot;BAIRRO&quot;], y=homicidios_maior[&quot;ANO&quot;], data=homicidios_maior, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Ano&quot;)  <br>plt.title(&quot;Homicídios em bairro de maior renda em SP&quot;)<br>plt.ylim(0, max_scale)<br>plt.tight_layout()<br>plt.show()</pre><p>As informações coletadas foram utilizadas para a construção de gráficos para facilitar a visualização das disparidades existentes.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*2mTnB_FNPFXhB57u.png" /></figure><p>Os dados apresentam uma frequência significativamente maior de homicídios em bairros de menor renda, como esperado pela hipótese.</p><p><strong>Segunda Hipótese</strong></p><p>Acredita-se que homicídios ocorrem com maior frequência a noite em locais abertos. Esta hipótese busca entender aonde e quando manifestam-se a maior parte os homicídios na cidade de São Paulo.</p><p>Para este teste os dados disponíveis foram segmentados e ordenados em dois agrupamentos correspondentes às variáveis determinadas: local e período.</p><pre># Agrupando Dataframe por local e mostrando a quantidade de homicícios em ordem decrescente por local, apenas o top 10<br>local = homicidio_consumado.groupby(&quot;LOCAL&quot;).count().sort_values(by=&quot;ANO&quot;, ascending=False).iloc[0:11]</pre><pre># Agrupando Dataframe por periodo e mostrando a quantidade de homicícios em ordem decrescente por por periodo<br>periodo = homicidio_consumado.groupby(&quot;PERIODO&quot;).count().sort_values(by=&quot;ANO&quot;, ascending=False)</pre><pre># Gráfico de barras para os períodos<br>plt.figure(figsize=(10, 6))<br>sns.barplot(x=periodo.index, y=periodo[&quot;BAIRRO&quot;], data=periodo, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Períodos&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)<br>plt.title(&quot;Homicídios por período&quot;)<br>plt.tight_layout()<br>plt.show()</pre><p>As informações obtidas quanto ao número de homicídios por período foram representadas por meio de um gráfico de barras.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*LLRc3gp-BrLBUGgo.png" /></figure><p>Como esperado pelo senso comum a maior parte dos homicídios são realizados durante a noite.</p><pre># Gráfico de barras para os locais<br>plt.figure(figsize=(10, 6))<br>sns.barplot(x=local[&quot;BAIRRO&quot;], y=local.index, data=local, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Locais&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)<br>plt.title(&quot;Homicídios por locais&quot;)<br>plt.tight_layout()<br>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*ShGt-B6h14iRIHOP.png" /></figure><p>Os dados indicam que de fato a maior parte dos homicídios ocorre em via pública. É também possível observar um representatividade quase absoluta da via pública e residências como locais onde ocorrem homicídios.</p><pre># Separando em dois DataFrames diferentes os homicídios em via pública e residência<br>df_hom_via = homicidio_consumado[homicidio_consumado[&quot;LOCAL&quot;] == &quot;Via pública&quot;]<br>df_hom_res = homicidio_consumado[homicidio_consumado[&#39;LOCAL&#39;] == &quot;Residência&quot;]</pre><pre># Agrupando por local e depois por período e somando as quantidades de homicídios em ordem decrescente para cada local/período<br>df_hom_via = df_hom_via.groupby([ &quot;LOCAL&quot;, &quot;PERIODO&quot;]).count().sort_values(by=[&quot;ANO&quot;, &quot;ANO&quot;], ascending=[False, True]).reset_index()<br># Agrupando por local e depois por período e somando as quantidades de homicídios em ordem decrescente para cada local/período<br>df_hom_res = df_hom_res.groupby([ &quot;LOCAL&quot;, &quot;PERIODO&quot;]).count().sort_values(by=[&quot;ANO&quot;, &quot;ANO&quot;], ascending=[False, True]).reset_index()<br># Criando o gráfico de pirâmide<br>plt.figure(figsize=(8, 6))<br># Gráfico de barras para a Via Pública<br>plt.barh(df_hom_via[&quot;PERIODO&quot;], df_hom_via[&quot;NUM_BO&quot;], color=&quot;red&quot;, label=&quot;Via Pública&quot;)<br># Gráfico de barras para a Residência<br>plt.barh(df_hom_res[&quot;PERIODO&quot;], -df_hom_res[&quot;NUM_BO&quot;], color=&quot;green&quot;, label=&quot;Residência&quot;)<br># Configurações do gráfico<br>plt.xlabel(&quot;Homicídios&quot;)<br>plt.ylabel(&quot;Períodos&quot;)<br>plt.title(&quot;Gráfico de Pirâmide de Homicídios por Período e Local&quot;)<br>plt.legend()<br># Inverte o eixo y para que os períodos fiquem na ordem correta<br>plt.gca().invert_yaxis()<br>plt.show()</pre><p>Por fim colocamos em comparação a ocorrência de homicídios para todos os períodos em apenas as duas localidades mais frequentes para comparar como o número de homicídios se distribui conforme os dois fatores analisados.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*z7aSqMaDaw4Xo3wn.png" /></figure><p><strong>Terceira Hipótese</strong></p><p>“Os homicídios aumentaram ao longo do tempo em todas as zonas de São Paulo de uniformemente” .Existe a percepção de que ao longo dos anos São Paulo tem se tornado um local mais perigoso e violento. Nossa hipótese busca testar a validade desta percepção além de entender como homicícios variam entre regiões.</p><p>Para este teste os bairros de São Paulo foram agrupados em suas respectivas zonas.</p><pre># Lista com bairros do centro<br>centro_bairros = [&quot;Sé Bela Vista&quot;, &quot;Bom Retiro&quot;, &quot;Cambuci&quot;, &quot;Consolação&quot;, &quot;Liberdade&quot;, &quot;República&quot;, &quot;Santa Cecília&quot;, &quot;Sé&quot;, &quot;Centro&quot;]</pre><pre>centro, centro_hom = maiuscula(centro_bairros)</pre><pre># Lista com bairros do sul<br>sul_bairros = [&quot;Campo Limpo&quot;, &quot;Capão Redondo&quot;, &quot;Vila Andrade&quot;, &quot;Capela do Socorro Cidade Dutra&quot;, &quot;Grajau&quot;, &quot;Socorro&quot;, &quot;Cidade Ademar&quot;, &quot;Pedreira&quot;, &quot;Ipiranga&quot;, &quot;Sacomã&quot;, &quot;Jabaquara&quot;, &quot;M&#39;Boi Mirim&quot;, &quot;Jardim Ângela&quot;, &quot;Jardim São Luís&quot;, &quot;Parelheiros&quot;, &quot;Marsilac&quot;, &quot;Santo Amaro&quot;, &quot;Campo Belo&quot;, &quot;Campo Grande&quot;, &quot;Santo Amaro&quot;, &quot;Moema&quot;, &quot;Saúde&quot;, &quot;Vila Mariana&quot;]</pre><pre>sul, sul_hom = maiuscula(sul_bairros)</pre><pre># Lista com bairros do leste<br>leste_bairros = [&quot;Aricanduva&quot;, &quot;Carrão&quot;, &quot;Vila Formosa&quot;, &quot;Cidade Tiradentes&quot;, &quot;Ermelino Matarazzo&quot;, &quot;Ponte Rasa&quot;, &quot;Guaianases&quot;, &quot;Lajeado&quot;, &quot;Itaim Paulista&quot;, &quot;Vila Curuçá&quot;, &quot;Itaquera&quot;, &quot;Cidade Líder&quot;, &quot;José Bonifácio&quot;, &quot;Parque do Carmo&quot;, &quot;Mooca Água Rasa&quot;, &quot;Belém&quot;, &quot;Brás&quot;, &quot;Moóca&quot;, &quot;Pari&quot;, &quot;Tatuapé&quot;, &quot;Penha&quot;, &quot;Artur Alvim&quot;, &quot;Cangaíba&quot;, &quot;Penha&quot;, &quot;Vila Matilde&quot;, &quot;São Mateus&quot;, &quot;São Rafael&quot;, &quot;São Miguel&quot;, &quot;Jardim Helena&quot;, &quot;Vila Jacuí&quot;, &quot;Sapopemba&quot;, &quot;Vila Prudente&quot;, &quot;São Lucas&quot;]</pre><pre>leste, leste_hom = maiuscula(leste_bairros)</pre><pre># Lista com bairros do norte<br>norte_bairros = [&quot;Casa Verde&quot;, &quot;Cachoeirinha&quot;, &quot;Limão&quot;, &quot;Brasilândia&quot;, &quot;Freguesia do Ó&quot;, &quot;Jaçanã&quot;, &quot;Tremembé&quot;, &quot;Perus&quot;, &quot;Anhanguera&quot;, &quot;Pirituba&quot;, &quot;Jaraguá&quot;, &quot;São Domingos&quot;, &quot;Santana&quot;, &quot;Tucuruvi&quot;, &quot;Mandaqui&quot;, &quot;Vila Maria&quot;, &quot;Vila Guilherme&quot;, &quot;Vila Medeiros&quot;]</pre><pre>norte, norte_hom = maiuscula(norte_bairros)</pre><pre># Lista com bairros do oeste<br>oeste_bairros = [&quot;Butantã&quot;, &quot;Morumbi&quot;, &quot;Raposo Tavares&quot;, &quot;Rio Pequeno&quot;, &quot;Vila Sônia&quot;, &quot;Lapa&quot;, &quot;Barra Funda&quot;, &quot;Jaguara&quot;, &quot;Jaguaré&quot;, &quot;Perdizes&quot;, &quot;Vila Leopoldina&quot;, &quot;Pinheiros&quot;, &quot;Alto de Pinheiros&quot;, &quot;Itaim Bibi&quot;, &quot;Jardim Paulista&quot;, &quot;Pinheiros&quot;]</pre><pre>oeste, oeste_hom = maiuscula(oeste_bairros)</pre><pre># Criando os gráficos lado a lado</pre><pre>plt.figure(figsize=(35, 10))<br># Encontrando a escala máxima para todos os DataFrames<br>max_scale = max(oeste_hom[&quot;NUM_BO&quot;].max(), <br>                sul_hom[&quot;ANO&quot;].max(),<br>                norte_hom[&quot;NUM_BO&quot;].max(),<br>                leste_hom[&quot;ANO&quot;].max(),<br>                centro_hom[&quot;NUM_BO&quot;].max())<br># Gráfico 1 - Lado esquerdo<br>plt.subplot(1, 5, 1)<br>sns.barplot(x=sul_hom[&quot;BAIRRO&quot;], y=sul_hom[&quot;NUM_BO&quot;], data=sul_hom, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)<br>plt.title(&quot;Homicídios em bairros da zona Sul de SP&quot;)<br>plt.ylim(0, max_scale)  # Definindo limite superior do eixo y igual para todos os gráficos<br>plt.tight_layout()<br># Gráfico 2 - Lado central esquerdo<br>plt.subplot(1, 5, 2)<br>sns.barplot(x=oeste_hom[&quot;BAIRRO&quot;], y=oeste_hom[&quot;ANO&quot;], data=oeste_hom, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Ano&quot;)  <br>plt.title(&quot;Homicídios em bairros da zona Oeste de SP&quot;)<br>plt.ylim(0, max_scale)<br>plt.tight_layout()<br># Gráfico 3 - Lado central<br>plt.subplot(1, 5, 3)<br>sns.barplot(x=centro_hom[&quot;BAIRRO&quot;], y=centro_hom[&quot;NUM_BO&quot;], data=centro_hom, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)<br>plt.title(&quot;Homicídios em bairros do Centro de SP&quot;)<br>plt.ylim(0, max_scale)<br>plt.tight_layout()<br># Gráfico 4 - Lado central direito<br>plt.subplot(1, 5, 4)<br>sns.barplot(x=leste_hom[&quot;BAIRRO&quot;], y=leste_hom[&quot;ANO&quot;], data=leste_hom, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)  <br>plt.title(&quot;Homicídios em bairros da zona Leste de SP&quot;)<br>plt.ylim(0, max_scale)<br>plt.tight_layout()<br># Gráfico 5 - Lado direito<br>plt.subplot(1, 5, 5)<br>sns.barplot(x=norte_hom[&quot;BAIRRO&quot;], y=norte_hom[&quot;NUM_BO&quot;], data=norte_hom, palette=&quot;viridis&quot;)<br>plt.xlabel(&quot;Bairros&quot;)<br>plt.ylabel(&quot;Número de Homicídios&quot;)<br>plt.title(&quot;Homicídios em bairros da zona Norte de SP&quot;)<br>plt.ylim(0, max_scale)<br>plt.tight_layout()<br>plt.show()</pre><p>Os dados indicam uma distribuição desigual das ocorrências de homicídios pela capital paulista. A zona oeste e o centro possuem números absolutos de homicídios menores. A razão pela qual o centro, notório ser uma região mais perigosa da cidade, ter número de homicídios baixos em relação às outras regiões pode estar relacionada a seu tamanho e população relativos a outras regiões da cidade.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1000/0*ajxcGkIy3slmphtO.png" /></figure><pre># Adicionando a coluna &quot;ZONA&quot; em cada DataFrame<br>sul[&#39;ZONA&#39;] = &quot;Zona Sul&quot;<br>oeste[&#39;ZONA&#39;] = &quot;Zona Oeste&quot;<br>centro[&#39;ZONA&#39;] = &quot;Centro&quot;<br>leste[&#39;ZONA&#39;] = &quot;Zona Leste&quot;<br>norte[&#39;ZONA&#39;] = &quot;Zona Norte&quot;</pre><pre># Concatenando os DataFrames em um único DataFrame<br>df_zonas = pd.concat([sul, oeste, centro, leste, norte], ignore_index=True)<br># Convertendo as colunas &quot;ANO&quot; e &quot;NUM_BO&quot; para formato numérico<br>df_zonas[&#39;ANO&#39;] = pd.to_numeric(df_zonas[&#39;ANO&#39;])<br>df_zonas[&#39;NUM_BO&#39;] = pd.to_numeric(df_zonas[&#39;NUM_BO&#39;])<br># Agrupando os dados por zona e bairro, somando o número de homicídios<br>df_grouped = df_zonas.groupby([&#39;ANO&#39;, &#39;ZONA&#39;]).sum().reset_index()<br># Plotando o gráfico de linha<br>fig = px.line(df_grouped, x=&#39;ANO&#39;, y=&#39;NUM_BO&#39;, color=&#39;ZONA&#39;, line_group=&#39;ZONA&#39;, title=&#39;Progressão dos Homicídios por Zona em SP&#39;)<br>fig.update_layout(xaxis_title=&#39;Ano&#39;, yaxis_title=&#39;Número de Homicídios&#39;, legend_title=&#39;Zona&#39;)<br>fig.show()</pre><p>A evolução do número de homicídios por região ao longo do anos também indica uma desigualdade na distribuição de crimes na cidade. A Região Sul apresentou durante o mesmo período um aumento muito maior de homicídios do que outras regiões de São Paulo.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*mnkSBUrhnHSFmlfM.png" /></figure><p>A hipótese foi recusada, visto que a progressão foi diferente em cada zona. Nos últimos 10 anos, a quantidade de homicídio aumentou principalmente na Zona Sul e na Zona Leste, seguidos pela Zona Norte. Já o Centro e a Zona Oeste tiveram um aumento pouco significativo.</p><p><strong>Quarta Hipótese</strong></p><p>“Homens entre 21 e 30 anos tem uma maior taxa de homicídios.” Há uma impressão de que homens com este intervalo etário são os mais envolvidos nesse tipo de crime, principalmente conta de representações midiáticas em relação a casos de homicídio nos meios de comunicação: jornais, TV, internet — em que a maioria das notícias de homicídios estão vinculadas a homens jovens.</p><p>Para esse teste foi feita uma contagem e comparação de homicídios por idade e sexo — ao juntar esses dois dataframes e depois agrupar por idade e por sexo para a contagem.</p><pre># Contando os homicídios por sexo<br>contagem_sexo = sexo[&quot;SEXO&quot;].value_counts()</pre><pre># Juntando os dataframes de idade e sexo e agrupando por sexo de depois idade para mostrar a quantidade em ordem decrescente de homicídios<br>correlacao_idade_sexo = idade.merge(sexo, how=&#39;inner&#39;).groupby([&quot;SEXO&quot;,&quot;IDADE&quot;]).count().sort_values(by=[&quot;NUM_BO&quot;,&quot;NUM_BO&quot;], ascending=[False, True]).reset_index()<br># Juntando os dataframes de idade e sexo e removendo outliers<br>correlacao = idade.merge(sexo, how=&#39;inner&#39;).set_index(&#39;IDADE&#39;).drop(&#39;150,0&#39;).reset_index()</pre><pre># Gráfico de pizza<br>contagem_sexo.plot(kind=&quot;pie&quot;, autopct=&#39;%1.1f%%&#39;, startangle=90)<br>plt.title(&quot;Distribuição dos Homicídios por sexo&quot;)<br>plt.ylabel(&quot;Sexos&quot;)<br>plt.axis(&#39;equal&#39;) <br>plt.show()</pre><p>Os dados indicam uma grande predominância masculina a execução de homicídios.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/535/0*B3UbUt2Xk036eWjt.png" /></figure><pre># Tornando a coluna &#39;IDADE&#39; em integer<br>correlacao_idade_sexo[&#39;IDADE&#39;] = correlacao_idade_sexo[&#39;IDADE&#39;].str.replace(&#39;,&#39;, &#39;.&#39;).astype(float).astype(int)</pre><pre># Plotando um boxplot para verificar outliers<br>plt.figure(figsize=(8, 6))<br>sns.boxplot(x=correlacao_idade_sexo[&#39;IDADE&#39;])<br>plt.title(&#39;Boxplot das idades&#39;)<br>plt.xlabel(&#39;IDADE&#39;)<br>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/644/0*M0F9w73A7awIBt59.png" /></figure><p>Além de um único outlier correspondente a uma pessoa de 150 anos, os dados possuem uma distribuição natural.</p><pre># Tornando a coluna &#39;IDADE&#39; em integer  <br>correlacao[&#39;IDADE&#39;] = correlacao[&#39;IDADE&#39;].str.replace(&#39;,&#39;, &#39;.&#39;).astype(float).astype(int)</pre><pre># Definindo as faixas etárias<br>faixas_etarias = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100]<br># Criando coluna &#39;Faixa Etária&#39;<br>correlacao[&#39;Faixa Etária&#39;] = pd.cut(correlacao[&#39;IDADE&#39;], bins=faixas_etarias, labels=[&quot;0-10&quot;, &quot;11-20&quot;, &quot;21-30&quot;, &quot;31-40&quot;, &quot;41-50&quot;, &quot;51-60&quot;, &quot;61-70&quot;, &quot;71-80&quot;, &quot;81-90&quot;, &quot;91-100&quot;])<br># Agrupando os dados por sexo e faixa etária e mostrando as quantidades de homicídios para cada faixa etária<br>correlacao_agrupado = correlacao.groupby([&#39;SEXO&#39;, &#39;Faixa Etária&#39;])[&#39;ANO_BO&#39;].count().reset_index()<br># Renomeando coluna<br>correlacao_agrupado = correlacao_agrupado.rename(columns={&quot;ANO_BO&quot;: &quot;Homicídios&quot;})<br>correlacao_agrupado</pre><pre># Iterando pelos sexos únicos no DataFrame<br>for sexo in correlacao_agrupado[&#39;SEXO&#39;].unique():<br>    # Selecionando apenas os dados para o sexo atual<br>    df_sexo = correlacao_agrupado[correlacao_agrupado[&#39;SEXO&#39;] == sexo]<br>    # Adicionando a barra no gráfico<br>    fig.add_trace(go.Bar(x=df_sexo[&#39;Faixa Etária&#39;], y=df_sexo[&#39;Homicídios&#39;], name=sexo))<br># Personalizando o layout do gráfico<br>fig.update_layout(title=&#39;Número de homicídios por Faixa Etária e Sexo&#39;,<br>                  xaxis_title=&#39;Faixa Etária&#39;, yaxis_title=&#39;Número de Homicídios&#39;,<br>                  title_font_size=12, xaxis_tickangle=-45, barmode=&#39;group&#39;)<br># Separando os dados por sexo<br>df_feminino = correlacao_agrupado[correlacao_agrupado[&quot;SEXO&quot;] == &quot;Feminino&quot;]<br>df_masculino = correlacao_agrupado[correlacao_agrupado[&quot;SEXO&quot;] == &quot;Masculino&quot;]<br># Criando o gráfico de pirâmide<br>plt.figure(figsize=(8, 6))<br># Gráfico de barras para o sexo feminino<br>plt.barh(df_feminino[&quot;Faixa Etária&quot;], df_feminino[&quot;Homicídios&quot;], color=&quot;blue&quot;, label=&quot;Feminino&quot;)<br># Gráfico de barras para o sexo masculino (invertendo a ordem)<br>plt.barh(df_masculino[&quot;Faixa Etária&quot;], -df_masculino[&quot;Homicídios&quot;], color=&quot;red&quot;, label=&quot;Masculino&quot;)<br># Configurações do gráfico<br>plt.xlabel(&quot;Homicídios&quot;)<br>plt.ylabel(&quot;Faixa Etária&quot;)<br>plt.title(&quot;Gráfico de Pirâmide de Homicídios por Faixa Etária e Sexo&quot;)<br>plt.legend()<br>plt.show()</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/0*NTUofnF3MRVnHPfx.png" /></figure><p>Ao analisar os gráficos, chega-se a uma conclusão: a quarta hipótese esta correta. A faixa etária de 21–30 apresenta o maior índice de homicídios, apesar de ter pouca diferença comparada com a faixa de 31 a 40 anos. Por outro lado, há uma abundância do sexo masculino envolvido nesses crimes, se comparado ao sexo feminino.</p><p><strong>Conclusão</strong></p><p>Todas as hipóteses exploradas neste artigo puderam ser testadas a partir das informações publicadas pela SSP. Dentre as 4 hipóteses levantadas, 3 mostraram-se condizentes com os resultados obtidos.</p><p>Homicídios de fato ocorrem em sua maior parte em locais públicos durante a noite. Este crimes estão principalmente situados em regiões de menor renda da cidade e são perpetuados principalmente por homens entre 21 a 30 anos, apesar de homens dos 11 aos 60 anos possuírem participação significativa.</p><p>Contudo, também pode se observar que, ao longos das últimas duas décadas, o crescimento do crime na cidade de São Paulo foi extremamente distinto entre reiões. Enquanto algumas regiões apresentaram números pouco variantes, outras regiões da cidade apresentaram dramaticos aumentos no número total de homicídios.</p><p>Apesar dos resultados satisfatórios encontrados durante a pesquisa. O processo de análise levou a ideias de análises futuras que também seriam relevantes para o melhor entendimento da natureza do homicídios. O grupo tem interesse explorar outras segmentação da população paulistana, como a cor das vítimas e dos infratores, assim como a relação entre estes. Como se desdobraram cada casos e a existência de flagrantes também são fatores que devem ser mais explorados em segunda análise. Além das novas propostas, o grupo também interesse em aprofundar sua análise quantos aos bairros com maior taxa de homicídio e ter uma compreensão mais granular do momento em que os homicídios ocorreram.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=41f790cb4281" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/crimes-em-s%C3%A3o-paulo-41f790cb4281">Uma Análise dos Crimes na Cidade de São Paulo Utilizando Python</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Relação de Vendas de Medicamentos Controlados Ansiolíticos e Antidepressivos Pré e Pós-Pandemia]]></title>
            <link>https://medium.com/fea-dev/rela%C3%A7%C3%A3o-de-vendas-de-medicamentos-controlados-ansiol%C3%ADticos-e-antidepressivos-pr%C3%A9-a-p%C3%B3s-pandemia-1b560d70b0ac?source=rss----cc94e06383b8---4</link>
            <guid isPermaLink="false">https://medium.com/p/1b560d70b0ac</guid>
            <category><![CDATA[pandemic]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[medicine]]></category>
            <category><![CDATA[feadev]]></category>
            <category><![CDATA[pharmaceutical]]></category>
            <dc:creator><![CDATA[Gustavo Yuji Osawa Yamachi]]></dc:creator>
            <pubDate>Thu, 18 May 2023 19:18:47 GMT</pubDate>
            <atom:updated>2024-01-10T09:52:55.283Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Por Arthur Lopes</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LIWuZU13-zHPItgps84xcg.jpeg" /></figure><p><strong>Introdução e Contextualização da Análise</strong></p><p>Com o processo de integração dos novos membros na entidade FEA.dev, desenvolvi conhecimentos na área de ciência de dados e, com isso, refleti em meu dia a dia sobre quais projetos eu poderia desenvolver com os novos aprendizados. Lendo algumas notícias sobre a pandemia da covid-19 e o aumento percentual médio entre 10% a 20% nas vendas de remédios ansiolíticos e antidepressivos, julguei interessante analisar a quantidade de remédios receitados nos anos pré pandemia, durante a pandemia e pós pandemia.</p><p>O objetivo de analisar esses dados é obter uma visão de como momentos de isolação social e crise sanitária podem possivelmente contribuir com o aumento de receitas médicas para remédios específicos. Assim, para simplificar a análise utilizando o banco de dados da SNGPC (Sistema Nacional de Gerenciamento de Produtos Controlados), verificaremos a quantidade de termos dos remédios ansiolíticos e antidepressivos mais comuns receitados pelos médicos neste banco de dados, dessa maneira diminui-se a possibilidade de erro na inserção de quantidade do remédio por farmacêuticos.</p><p>Os ansiolíticos considerados foram: <strong>Zolpidem, Clonazepam, Bromazepam </strong>e<strong> Lorazepam</strong>. Enquanto os antidepressivos considerados foram: <strong>Fluoxetina, Escitalopram, Mirtazapina </strong>e <strong>Duloxetina</strong>. Tais remédios foram selecionados com base em pesquisas de remédios mais receitados e pedidos.</p><p><strong>Manipulação de Dados</strong></p><p>Inicialmente, foram importadas as bibliotecas necessárias para criação e manipulação dos DataFrames (planilhas/tabelas) e dos gráficos demonstrados posteriormente. Dentre elas estão as bibliotecas <strong>Pandas </strong>(análise e manipulação de dados), <strong>Matplotlib </strong>e <strong>Seaborn </strong>(visualização de dados e plotagem gráfica).</p><p><strong>Geopy</strong>, por sua vez, é uma biblioteca do Python que basicamente facilita a geolocalização de endereços por coordenadas utilizando várias fontes de dados e geocodificadores de terceiros. o <strong>Nominatim </strong>é um desses geocodificadores, sendo uma ferramenta de busca e apresentação dos dados através das coordenadas fornecidas.</p><p>Por fim,<strong> Folium </strong>é uma biblioteca para criar mapas interativos e com isso rebuscar as análise de dados, a qual foi a base para fazer o mapa de calor do projeto, importando da biblioteca Folium o pacote “HeatMap”.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/03c2e45076861f493b63f2c8606668fa/href">https://medium.com/media/03c2e45076861f493b63f2c8606668fa/href</a></iframe><p>Como a análise é uma comparação dos anos entre 2017 a 2021, cada arquivo CSV representa um banco de dados de um ano diferente.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5590704be747c2e5f5a8b36f344b63f8/href">https://medium.com/media/5590704be747c2e5f5a8b36f344b63f8/href</a></iframe><p>Visto isso, para uma melhor manipulação dos dados foi necessário concatenar os arquivos CSV com a finalidade de unir o processo de filtragem dos dados. Para isso, foi criado a variável ‘tabela_unica’’.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xf5XijmncH6hq4_35dwGdA.png" /><figcaption>Tabela concatenada, pt1</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Bxk5KYb-7pOEIvP1hhqzxA.png" /><figcaption>Tabela concatenada, pt2</figcaption></figure><p>Para selecionar os princípios ativos necessários para a pesquisa, criei uma lista.</p><p><em>Mas o que são Princípios Ativos de um remédio? — São as moléculas de uma substância que possuem efeito terapêutico. Como por exemplo, temos “Cloridrato de Fluoxetina”, “Lorazepam” e “Clonazepam”.</em></p><p>Na coluna “PRINCIPIO_ATIVO” dos arquivos CSV, estão localizados todos os remédios controlados, porém só estamos procurando os remédios ansiolíticos e antidepressivos mais comuns. Logo, criei uma variável “drugs” com uma lista dos remédios específicos que gostaria e a variável “df_drugs”, que juntamente ao método <em>.isin()</em>, me auxiliará a selecionar linhas com valores específicos de uma coluna específica.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4528319e5d265725655f2379c6c6c91b/href">https://medium.com/media/4528319e5d265725655f2379c6c6c91b/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_Con_issf3BqZox5CAwQZA.png" /><figcaption>Output df_drugs</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QZv6KGJAp6YmLh3MxJ6Xfg.png" /><figcaption>Output df_drugs</figcaption></figure><h4><strong>Gráficos</strong></h4><p>Para a confecção dos gráficos dos remédios antidepressivos, utilizei a biblioteca Matplotlib, sendo a seguir o código:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8780e9cb44b8b05b935e56380b000b41/href">https://medium.com/media/8780e9cb44b8b05b935e56380b000b41/href</a></iframe><p>Dessa forma, apresento-lhes o gráfico que mostra a relação entre cada remédio e sua venda anual entre 2017 a 2021 (vale ressaltar que a quantidade não é a quantidade de remédios em si, mas o número de termos deste remédio no banco de dados).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*0WKqJK2pw2pnTK2Qz7-c3w.png" /></figure><p>E para a confecção dos gráficos dos remédios ansiolíticos, utilizando também a biblioteca Matplotlib, sendo a seguir o código:</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/552d0c17a06a2749c5d0e375f68930aa/href">https://medium.com/media/552d0c17a06a2749c5d0e375f68930aa/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/900/1*gMc-yb7BLcuJllwNvk9skQ.png" /></figure><p>Com base nesse conjunto de dados, é possível notar que certos remédios tiveram um aumento em relação aos anos anteriores de forma relevante, como por exemplo o Zolpidem, Mirtazapina e Duolexina.</p><p>Além disso, certos remédios obtiveram decréscimo ou estagnação de suas receitas médicas, possivelmente por conta de descobertas que esses remédios podem levar à depressão respiratória, sendo contraindicados em casos de alterações respiratórias. Já em relação aos antidepressivos, verificou-se que alguns remédios como sertralina, fluoxetina, trazodona podem causar riscos cardíacos e alterar resultados em eletrocardiogramas, por isso a exigência de maior cuidado na receita destes remédios.</p><p>Um assunto muito debatido entre 2020 e 2021 foi o famoso Kit-Covid, em que estão Ivermectina, Azitromicina, Cloroquina, Hidroxicloroquina, Vitaminas, entre outros. Com análise de dados, busquei verificar se de fato houve uma procura maior destes remédios, com base no banco de dados da SNGPC. Entretanto, infelizmente os dados sobre cloroquina e hidroxicloroquina só foram adicionados a este banco de dados a partir de 2020, então descartei estes remédios da análise, a qual permaneceu apenas os dados da Azitromicina, que teve um aumento considerável de 2019 para 2020.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/ed571755cfd87034f260b736a185ac67/href">https://medium.com/media/ed571755cfd87034f260b736a185ac67/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/891/1*T3yJqAxyhGQ4OKVZdlp24g.png" /></figure><p><strong>Mapa de Calor utilizando Pandas e Folium Map</strong></p><p>Por fim, utilizaremos uma ferramenta muito bacana do Python, a confecção de um mapa com base na sua base de dados e um “HeatMap” (Mapa de Calor) que mostra a localização das receitas médicas. A programação inicial foi uma análise de quais municípios/capitais do Sudeste tiveram um crescimento de remédios ano a ano.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/0d45ff365ec1362b6a7abde754d4642c/href">https://medium.com/media/0d45ff365ec1362b6a7abde754d4642c/href</a></iframe><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/4653f6909b67e09acb705d57bed3fbb5/href">https://medium.com/media/4653f6909b67e09acb705d57bed3fbb5/href</a></iframe><p>Após a criação das colunas e tratamento dos dados, eu utilizei a nova coluna “UF” (junção das colunas “UF_VENDA” e “MUNICIPIO_VENDA”) para criar novas colunas para latitude e longitude.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/3eec31a31b38b4593a8b3780edb7ec5e/href">https://medium.com/media/3eec31a31b38b4593a8b3780edb7ec5e/href</a></iframe><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/7c6992b4139e9b3ed817a8ff87f6d104/href">https://medium.com/media/7c6992b4139e9b3ed817a8ff87f6d104/href</a></iframe><p>Por fim, utilizando a biblioteca Folium, podemos plotar um mapa de calor, em que será possível verificar e analisar quais municípios/estados foram receitados os remédios de pesquisa.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/c364ceee430f3f5ab7931fe2b237f304/href">https://medium.com/media/c364ceee430f3f5ab7931fe2b237f304/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/983/0*zgMXh3xX79OwMM-8" /></figure><p>Um recurso interessante é que, quanto mais se aproxima do mapa utilizando o zoom, mais filtrado fica a informação, mostrando exatamente o município, o número de termos dos remédios e o nome do remédio receitado naquele município/capital, como no exemplo a seguir:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/981/0*N0mAUqS6_WKZmf3L" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/984/0*o6POYDzn6Q1iMntw" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/983/0*OPaDpWPbpxFv1TDc" /><figcaption>Exemplo dos 12 remédios receitados em Bertioga — São Paulo, de 2017 a 2021.</figcaption></figure><p><strong>Conclusão</strong></p><p>É notável que há um certo aumento de alguns remédios ansiolíticos/antidepressivos, como por exemplo: Escitalopram, Duloxetina, Mirtazapina, Zolpidem. Porém, há também certa estabilização e até queda de outros remédios como por exemplo: Fluoxetina, Clonazepam, Bromazepam e Lorazepam. Portanto, é possível verificar que o então período sensível da pandemia entre 2020 e 2021 comparado ao período pré-pandemia (2018/2019) ocasionou, de forma geral, um aumento na quantidade de remédios nestas categorias. Dessa forma, por meio da análise destes remédios junto ao mapa de calor, pode-se criar diversas análises e reflexões que poderão servir como base para políticas públicas e reflexões para soluções na área da saúde.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1b560d70b0ac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/fea-dev/rela%C3%A7%C3%A3o-de-vendas-de-medicamentos-controlados-ansiol%C3%ADticos-e-antidepressivos-pr%C3%A9-a-p%C3%B3s-pandemia-1b560d70b0ac">Relação de Vendas de Medicamentos Controlados Ansiolíticos e Antidepressivos Pré e Pós-Pandemia</a> was originally published in <a href="https://medium.com/fea-dev">FEA.dev</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>