Ciência de Dados - Preparação de Dados


Antes de analisar os dados, um Cientista de Dados deve extrair os dados e torná-los limpos e valiosos.


Extraia e leia dados com Pandas

Antes que os dados possam ser analisados, eles devem ser importados/extraídos.

No exemplo abaixo, mostramos como importar dados usando Pandas em Python.

Usamos a read_csv()função para importar um arquivo CSV com os dados de saúde:

Exemplo

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data)

Exemplo explicado

  • Importar a biblioteca do Pandas
  • Nomeie o quadro de dados como health_data.
  • header=0significa que os cabeçalhos dos nomes das variáveis ​​devem ser encontrados na primeira linha (observe que 0 significa a primeira linha em Python)
  • sep=","significa que "," é usado como separador entre os valores. Isso ocorre porque estamos usando o tipo de arquivo .csv (valores separados por vírgula)

Dica: se você tiver um arquivo CSV grande, poderá usar a head()função para mostrar apenas as 5 primeiras linhas:

Exemplo

import pandas as pd

health_data = pd.read_csv("data.csv", header=0, sep=",")

print(health_data.head())

Limpeza de dados

Observe os dados importados. Como você pode ver, os dados estão "sujos" com valores incorretos ou não registrados:

Dados sujos
  • Existem alguns campos em branco
  • Pulso médio de 9.000 não é possível
  • 9 000 serão tratados como não numéricos, devido ao separador de espaço
  • Uma observação do pulso máximo é denotada como "AF", o que não faz sentido

Portanto, devemos limpar os dados para realizar a análise.


Remover linhas em branco

Vemos que os valores não numéricos (9 000 e AF) estão nas mesmas linhas com valores ausentes.

Solução: podemos remover as linhas com observações ausentes para corrigir esse problema.

Quando carregamos um conjunto de dados usando Pandas, todas as células em branco são automaticamente convertidas em valores "NaN".

Assim, remover as células NaN nos dá um conjunto de dados limpo que pode ser analisado.

Podemos usar a dropna()função para remover os NaNs. axis=0 significa que queremos remover todas as linhas que possuem um valor NaN:

Exemplo

health_data.dropna(axis=0,inplace=True)

print(health_data)

O resultado é um conjunto de dados sem linhas NaN:

Dados limpos

Categorias de dados

Para analisar dados, também precisamos conhecer os tipos de dados com os quais estamos lidando.

Os dados podem ser divididos em três categorias principais:

  1. Numérico - Contém valores numéricos. Pode ser dividido em duas categorias:
    • Discreto: os números são contados como "todos". Exemplo: Você não pode ter treinado 2,5 sessões, são 2 ou 3
    • Contínuo: Os números podem ser de precisão infinita. Por exemplo, você pode dormir por 7 horas, 30 minutos e 20 segundos ou 7,533 horas
  2. Categórico - Contém valores que não podem ser comparados entre si. Exemplo: Uma cor ou um tipo de treino
  3. Ordinal - Contém dados categóricos que podem ser comparados entre si. Exemplo: Notas escolares onde A é melhor que B e assim por diante

Ao conhecer o tipo de seus dados, você poderá saber qual técnica usar ao analisá-los.


Tipos de dados

Podemos usar a info()função para listar os tipos de dados em nosso conjunto de dados: 

Exemplo

print(health_data.info())

Resultado:

Tipo de dados float e objeto

Vemos que esse conjunto de dados tem dois tipos diferentes de dados:

  • Float64
  • Objeto

Não podemos usar objetos para calcular e realizar análises aqui. Devemos converter o objeto de tipo para float64 (float64 é um número com um decimal em Python).

Podemos usar a astype()função para converter os dados em float64.

O exemplo a seguir converte "Average_Pulse" e "Max_Pulse" no tipo de dados float64 (as outras variáveis ​​já são do tipo float64):

Exemplo

health_data["Average_Pulse"] = health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] = health_data["Max_Pulse"].astype(float)

print (health_data.info())

Resultado:

Tipo de dados flutuante

Agora, o conjunto de dados tem apenas tipos de dados float64.


Analise os dados

Quando tivermos limpado o conjunto de dados, podemos começar a analisar os dados.

Podemos usar a describe()função em Python para resumir dados:

Exemplo

print(health_data.describe())

Resultado:

  Duração Pulso_média Max_Pulse Caloria_Queima Horas_Trabalho Horas_Sono
Contar 10,0 10,0 10,0 10,0 10,0 10,0
Significar 51,0 102,5 137,0 285,0 6.6 7,5
Padrão 10,49 15,4 11h35 30,28 3,63 0,53
Mín. 30,0 80,0 120,0 240,0 0,0 7,0
25% 45,0 91,25 130,0 262,5 7,0 7,0
50% 52,5 102,5 140,0 285,0 8,0 7,5
75% 60,0 113,75 145,0 307,5 8,0 8,0
Máx. 60,0 125,0 150,0 330,0 10,0 8,0
  • Contagem - Conta o número de observações
  • Média - O valor médio
  • Std - Desvio padrão (explicado no capítulo de estatísticas)
  • Min - O valor mais baixo
  • 25% , 50% e 75% são percentis (explicados no capítulo de estatísticas)
  • Max - O valor mais alto