Uma introdução amigável à análise de dados em Python

Ao longo dos anos, o uso de python para ciência de dados cresceu incrivelmente e continua crescendo diariamente.

A ciência de dados é um vasto campo de estudo com muitos subcampos, dos quais a análise de dados é indiscutivelmente um dos mais importantes de todos esses campos e, independentemente do nível de habilidade em ciência de dados, tornou-se cada vez mais importante entender ou ter pelo menos um conhecimento básico dela.

O que é Análise de Dados?

A análise de dados é a limpeza e transformação de uma grande quantidade de dados não estruturados ou desorganizados, com o objetivo de gerar insights e informações importantes sobre esses dados que ajudariam na tomada de decisões informadas.

Existem várias ferramentas usadas para análise de dados, Python, Microsoft Excel, Tableau, SaS, etc, mas neste artigo, estaríamos focando em como a análise de dados é feita em python. Mais especificamente, como isso é feito com uma biblioteca python chamada pandas.

O que é Pandas?

Pandas é uma biblioteca Python de código aberto usada para manipulação e disputa de dados. É rápido e altamente eficiente e possui ferramentas para carregar diversos tipos de dados na memória. Ele pode ser usado para remodelar, rotular fatias, indexar ou até mesmo agrupar várias formas de dados.

Estruturas de dados em Pandas

Existem 3 estruturas de dados no Pandas, a saber;

A melhor maneira de diferenciar os três é ver um contendo várias pilhas do outro. Portanto, um DataFrame é uma pilha de séries e um Panel é uma pilha de DataFrames.

Uma série é um array unidimensional

Uma pilha de várias séries forma um DataFrame bidimensional

Uma pilha de vários DataFrames forma um painel tridimensional

A estrutura de dados com a qual mais trabalharíamos é o DataFrame bidimensional, que também pode ser o meio padrão de representação para alguns conjuntos de dados que podemos encontrar.

Análise de dados em Pandas

Para este artigo, nenhuma instalação é necessária. Estaríamos usando uma ferramenta chamada colaborativo criado pelo Google. É um ambiente python online para análise de dados, aprendizado de máquina e IA. É simplesmente um Jupyter Notebook baseado em nuvem que vem pré-instalado com quase todos os pacotes python que você precisaria como cientista de dados.

Agora, vá para https://colab.research.google.com/notebooks/intro.ipynb. Você deve ver o abaixo.

  6 melhores softwares de vinícola para gerenciar sua coleção

Pela navegação superior esquerda, clique na opção arquivo e clique na opção “novo notebook”. Você veria uma nova página do notebook Jupyter carregada em seu navegador. A primeira coisa que precisamos fazer é importar os pandas para o nosso ambiente de trabalho. Podemos fazer isso executando o seguinte código;

import pandas as pd

Para este artigo, estaríamos usando um conjunto de dados de preços de imóveis para nossa análise de dados. O conjunto de dados que usaríamos pode ser encontrado aqui. A primeira coisa que gostaríamos de fazer é carregar esse conjunto de dados em nosso ambiente.

Podemos fazer isso com o seguinte código em uma nova célula;

df =  pd.read_csv('https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token=6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ', sep=',')

O .read_csv é usado quando queremos ler um arquivo CSV e passamos uma propriedade sep para mostrar que o arquivo CSV é delimitado por vírgula.

Também devemos observar que nosso arquivo CSV carregado é armazenado em uma variável df .

Não precisamos usar a função print() no Jupyter Notebook. Podemos simplesmente digitar um nome de variável em nossa célula e o Jupyter Notebook o imprimirá para nós.

Podemos tentar isso digitando df em uma nova célula e executando-o, ele imprimirá todos os dados em nosso conjunto de dados como um DataFrame para nós.

Mas nem sempre queremos ver todos os dados, às vezes queremos apenas ver os primeiros dados e seus nomes de coluna. Podemos usar a função df.head() para imprimir as primeiras cinco colunas e df.tail() para imprimir as últimas cinco. A saída de qualquer um dos dois pareceria como tal;

Gostaríamos de verificar as relações entre essas várias linhas e colunas de dados. A função .describe() faz exatamente isso para nós.

A execução de df.describe() fornece a seguinte saída;

Podemos ver imediatamente que o .describe() fornece a média, desvio padrão, valores mínimos e máximos e percentis de cada coluna no DataFrame. Isso é muito útil particularmente.

Também podemos verificar a forma do nosso DataFrame 2D para descobrir quantas linhas e colunas ele possui. Podemos fazer isso usando df.shape que retorna uma tupla no formato (linhas, colunas).

Também podemos verificar os nomes de todas as colunas em nosso DataFrame usando df.columns.

E se quisermos selecionar apenas uma coluna e retornar todos os dados nela? Isso é feito de maneira semelhante a cortar um dicionário. Digite o seguinte código em uma nova célula e execute-o

df['price ']

O código acima retorna a coluna de preço, podemos ir além salvando-o em uma nova variável como tal

price = df['price']

Agora podemos executar todas as outras ações que podem ser executadas em um DataFrame em nossa variável de preço, pois é apenas um subconjunto de um DataFrame real. Podemos fazer coisas como df.head(), df.shape etc.

  5 melhores ferramentas de e-mail AMP para interagir com sua lista de assinantes

Também podemos selecionar várias colunas passando uma lista de nomes de colunas para df como tal

data = df[['price ', 'bedrooms']]

O acima seleciona colunas com nomes ‘preço’ e ‘quartos’, se digitarmos data.head() em uma nova célula, teríamos o seguinte

A maneira acima de fatiar colunas retorna todos os elementos de linha nessa coluna, e se quisermos retornar um subconjunto de linhas e um subconjunto de colunas de nosso conjunto de dados? Isso pode ser feito usando .iloc e é indexado de maneira semelhante às listas do python. Então podemos fazer algo como

df.iloc[50: , 3]

Que retorna a 3ª coluna da 50ª linha até o final. É bem legal e igual a fatiar listas em python.

Agora vamos fazer algumas coisas realmente interessantes, nosso conjunto de dados de preços de imóveis tem uma coluna que nos diz o preço de uma casa e outra coluna nos diz o número de quartos que aquela casa em particular tem. O preço da habitação é um valor contínuo, pelo que é possível que não tenhamos duas casas com o mesmo preço. Mas o número de quartos é um pouco discreto, então podemos ter várias casas com dois, três, quatro quartos, etc.

E se quisermos obter todas as casas com o mesmo número de quartos e encontrar o preço médio de cada quarto discreto? É relativamente fácil fazer isso em pandas, pode ser feito como tal;

df.groupby('bedrooms ')['price '].mean()

O primeiro agrupa o DataFrame pelos conjuntos de dados com número de quarto idêntico usando a função df.groupby(), depois dizemos para nos fornecer apenas a coluna do quarto e usar a função .mean() para encontrar a média de cada casa no conjunto de dados .

E se quisermos visualizar o que foi dito acima? Gostaríamos de poder verificar como varia o preço médio de cada número de quarto distinto? Só precisamos encadear o código anterior a uma função .plot() como tal;

df.groupby('bedrooms ')['price '].mean().plot()

Teremos uma saída que se parece com isso;

O acima nos mostra algumas tendências nos dados. No eixo horizontal, temos um número distinto de quartos (Nota, que mais de uma casa pode ter X número de quartos), No eixo vertical, temos a média dos preços em relação ao número de quartos correspondente na horizontal eixo. Já podemos notar de imediato que as casas com 5 a 10 quartos custam muito mais do que as casas com 3 quartos. Também ficará óbvio que as casas com cerca de 7 ou 8 quartos custam muito mais do que aquelas com 15, 20 ou até 30 quartos.

  Como alterar seu idioma no WeChat

Informações como as acima são o motivo pelo qual a análise de dados é muito importante, somos capazes de extrair informações úteis dos dados que não são imediatamente ou impossíveis de perceber sem análise.

Dados ausentes

Vamos supor que estou respondendo a uma pesquisa que consiste em uma série de perguntas. Compartilho um link para a pesquisa com milhares de pessoas para que possam dar seus comentários. Meu objetivo final é executar a análise de dados nesses dados para que eu possa obter alguns insights importantes dos dados.

Agora, muita coisa pode dar errado, alguns inspetores podem se sentir desconfortáveis ​​em responder algumas das minhas perguntas e deixar em branco. Muitas pessoas poderiam fazer o mesmo para várias partes das perguntas da minha pesquisa. Isso pode não ser considerado um problema, mas imagine se eu estivesse coletando dados numéricos em minha pesquisa e uma parte da análise exigisse que eu obtivesse a soma, a média ou alguma outra operação aritmética. Vários valores ausentes levariam a muitas imprecisões em minha análise. Tenho que descobrir uma maneira de encontrar e substituir esses valores ausentes por alguns valores que possam ser substitutos próximos deles.

Os pandas nos fornecem uma função para encontrar valores ausentes em um DataFrame chamado isnull().

A função isnull() pode ser usada como tal;

df.isnull()

Isso retorna um DataFrame de booleanos que nos diz se os dados originalmente presentes estavam faltando Verdadeiramente ou Faltando Falsamente. A saída ficaria assim;

Precisamos de uma maneira de substituir todos esses valores ausentes; na maioria das vezes, a escolha dos valores ausentes pode ser tomada como zero. Às vezes, pode ser considerada a média de todos os outros dados ou talvez a média dos dados ao seu redor, dependendo do cientista de dados e do caso de uso dos dados que estão sendo analisados.

Para preencher todos os valores ausentes em um DataFrame, usamos a função .fillna() usada como tal;

df.fillna(0)

Acima, estamos preenchendo todos os dados vazios com o valor zero. Também poderia ser qualquer outro número que especificarmos.

A importância dos dados não pode ser superestimada, eles nos ajudam a obter respostas diretamente de nossos próprios dados! A Análise de Dados, dizem, é o novo Petróleo para as Economias Digitais.

Todos os exemplos neste artigo podem ser encontrados aqui.

Para saber mais a fundo, confira Curso online de Análise de Dados com Python e Pandas.