Tutorial: Técnicas de Análise Exploratória de Dados usando notebooks Databricks
Este tutorial orienta você pelos conceitos básicos da condução de análise exploratória de dados (EDA) usando Python em um bloco de anotações do Azure Databricks, desde o carregamento de dados até a geração de insights por meio de visualizações de dados.
O bloco de anotações usado neste tutorial examina dados globais de energia e emissões e demonstra como carregar, limpar e explorar dados.
Pode seguir acompanhando o exemplo de bloco de anotações ou criar o seu próprio bloco de anotações do zero.
O que é EDA?
A análise exploratória de dados (EDA) é uma etapa inicial crítica no processo de ciência de dados que envolve a análise e visualização de dados para:
- Descubra as suas principais características.
- Identificar padrões e tendências.
- Detetar anomalias.
- Compreender as relações entre variáveis.
A EDA fornece informações sobre o conjunto de dados, facilitando decisões informadas sobre análises estatísticas ou modelagens adicionais.
Com os blocos de anotações do Azure Databricks, os cientistas de dados podem executar EDA usando ferramentas familiares. Por exemplo, este tutorial usa algumas bibliotecas Python comuns para manipular e plotar dados, incluindo:
- Numpy: uma biblioteca fundamental para computação numérica, fornecendo suporte para tabelas, matrizes e uma ampla gama de funções matemáticas para operar nessas estruturas de dados.
- pandas: uma poderosa biblioteca de manipulação e análise de dados, construída sobre o NumPy, que oferece estruturas de dados como DataFrames para lidar com dados estruturados de forma eficiente.
- Plotly: uma biblioteca gráfica interativa que permite a criação de visualizações interativas de alta qualidade para análise e apresentação de dados.
- Matplotlib: uma biblioteca abrangente para criar visualizações estáticas, animadas e interativas em Python.
O Azure Databricks também fornece recursos internos para ajudá-lo a explorar os seus dados no resultado do bloco de notas, como filtrar e pesquisar dados em tabelas e aumentar detalhes das visualizações. Você também pode usar o Databricks Assistant para ajudá-lo a escrever código para EDA.
Antes de começar
Para concluir este tutorial, você precisa do seguinte:
- Você deve ter permissão para usar um recurso de computação existente ou criar um novo recurso de computação. Consulte Compute.
- [Opcional] Este tutorial descreve como usar o assistente para ajudá-lo a gerar código. Para usar o assistente, ele precisa estar habilitado em sua conta e espaço de trabalho. Veja Use o assistente para mais informações.
Baixe o conjunto de dados e importe o arquivo CSV
Este tutorial demonstra as técnicas da EDA examinando dados globais de energia e emissões. Para acompanhar, faça o download do Energy Consumption Dataset by Our World in Data do Kaggle. Este tutorial usa o arquivo owid-energy-data.csv
.
Para importar o conjunto de dados para seu espaço de trabalho do Azure Databricks:
Na barra lateral do espaço de trabalho, clique em Espaço de Trabalho para aceder ao navegador do espaço de trabalho.
No canto superior direito, clique no menu kebab e, em seguida, clique em Importar.
Isso abre o modal Import. Note a pasta Destino listada aqui. Isso é definido para sua pasta atual no navegador de espaço de trabalho e se torna o destino do arquivo importado.
Selecione Importar de: Arquivo.
Arraste e solte o arquivo CSV,
owid-energy-data.csv
, na janela. Como alternativa, você pode navegar e selecionar o arquivo.Clique Importar. O arquivo deve aparecer na pasta de destino em seu espaço de trabalho.
Você precisa do caminho do arquivo para importar o arquivo para o notebook posteriormente. Encontre o arquivo no navegador do espaço de trabalho. Para copiar o caminho do ficheiro para a área de transferência, clique com o botão direito do rato no nome do ficheiro e, em seguida, selecione Copiar URL/caminho>Caminho completo.
Criar um novo bloco de notas
Para criar um novo bloco de notas na pasta pessoal do utilizador, clique Novo na barra lateral e selecione Bloco de Notas no menu.
Na parte superior, ao lado do nome do bloco de anotações, selecione Python como o idioma padrão para o bloco de anotações.
Para saber mais sobre como criar e gerir blocos de notas, consulte Gerir blocos de notas.
Adicione cada um dos exemplos de código neste artigo a uma nova célula no seu bloco de notas. Ou, use o exemplo de bloco de anotações fornecido para acompanhar o tutorial.
Carregar arquivo CSV
Em uma nova célula do bloco de anotações, carregue o arquivo CSV. Para fazer isso, importe numpy
e pandas
. Estas são bibliotecas Python úteis para ciência e análise de dados.
Crie um DataFrame pandas a partir do conjunto de dados para facilitar o processamento e a visualização. Substitua o caminho do arquivo abaixo pelo que você copiou anteriormente.
import numpy as np
import pandas as pd # Data processing, CSV file I/O (e.g. pd.read_csv)
df=pd.read_csv('/Workspace/Users/demo@databricks.com/owid-energy-data.csv') # Replace the file path here with the workspace path you copied earlier
Executar a célula. A saída deve retornar o DataFrame do pandas, incluindo uma lista de cada coluna e do seu tipo.
Entenda os dados
Compreender os conceitos básicos do conjunto de dados é crucial para qualquer projeto de ciência de dados. Envolve familiarizar-se com a estrutura, os tipos e a qualidade dos dados em questão.
Em um bloco de anotações do Azure Databricks, você pode usar o comando display(df)
para exibir o conjunto de dados.
Como o conjunto de dados tem mais de 10.000 linhas, esse comando retorna um conjunto de dados truncado. À esquerda de cada coluna, você pode ver o tipo de dados da coluna. Para saber mais, consulte Formatar colunas.
Utilize pandas para obter insights sobre dados
Para entender seu conjunto de dados de forma eficaz, use os seguintes comandos pandas:
O comando
df.shape
retorna as dimensões do DataFrame, fornecendo uma visão geral rápida do número de linhas e colunas.O comando
df.dtypes
fornece os tipos de dados de cada coluna, ajudando você a entender o tipo de dados com os quais está lidando. Você também pode ver o tipo de dados para cada coluna na tabela de resultados.O comando
df.describe()
gera estatísticas descritivas para colunas numéricas, como média, desvio padrão e percentis, que podem ajudá-lo a identificar padrões, detetar anomalias e entender a distribuição de seus dados.
Gerar um perfil de dados
Os blocos de anotações do Azure Databricks incluem recursos internos de criação de perfil de dados. Ao exibir um DataFrame com a função de exibição Azure Databricks, você pode gerar um perfil de dados a partir da saída da tabela.
# Display the DataFrame, then click "+ > Data Profile" to generate a data profile
display(df)
Clique em +>Perfil de Dados ao lado da Tabela na saída. Isso executa um novo comando que gera um perfil dos dados no DataFrame.
O perfil de dados inclui estatísticas de resumo para colunas numéricas, de cadeia de caracteres e de data, bem como histogramas das distribuições de valor para cada coluna.
Limpar os dados
A limpeza de dados é uma etapa vital da EDA para garantir que o conjunto de dados seja preciso, consistente e pronto para análises significativas. Esse processo envolve várias tarefas-chave para garantir que os dados estejam prontos para análise, incluindo:
- Identificação e remoção de quaisquer dados duplicados.
- Manipulação de valores ausentes, o que pode envolver substituí-los por um valor específico ou remover as linhas afetadas.
- Padronização de tipos de dados (por exemplo, conversão de cadeias de caracteres em
datetime
) por meio de conversões e transformações para garantir a consistência. Você também pode querer converter dados para um formato mais fácil de trabalhar.
Essa fase de limpeza é essencial, pois melhora a qualidade e a confiabilidade dos dados, permitindo análises mais precisas e perspicazes.
Dica: Use o Assistente Databricks para ajudar com tarefas de limpeza de dados
Você pode usar o Databricks Assistant para ajudá-lo a gerar código. Crie uma nova célula de código e clique no link gerar ou use o ícone do assistente no canto superior direito para abrir o assistente. Insira uma consulta para o assistente. O assistente pode gerar código Python ou SQL ou gerar uma descrição de texto. Para obter resultados diferentes, clique Regenerar.
Por exemplo, tente as seguintes instruções para usar o assistente para ajudá-lo a limpar os dados:
- Verifique se
df
contém colunas ou linhas duplicadas. Imprima as duplicatas. Em seguida, exclua as duplicatas. - Em que formato estão as colunas de data? Altere-o para
'YYYY-MM-DD'
. - Não vou usar a coluna
XXX
. Exclua-o.
Consulte Obter ajuda para codificação do Databricks Assistant.
Remover dados duplicados
Verifique se os dados têm linhas ou colunas duplicadas. Em caso afirmativo, remova-os.
Dica
Use o assistente para gerar código para você.
Tente inserir o prompt: "Verifique se df contém colunas ou linhas duplicadas. Imprima as duplicatas. Em seguida, exclua as duplicatas." O assistente pode gerar código como o exemplo abaixo.
# Check for duplicate rows
duplicate_rows = df.duplicated().sum()
# Check for duplicate columns
duplicate_columns = df.columns[df.columns.duplicated()].tolist()
# Print the duplicates
print("Duplicate rows count:", duplicate_rows)
print("Duplicate columns:", duplicate_columns)
# Drop duplicate rows
df = df.drop_duplicates()
# Drop duplicate columns
df = df.loc[:, ~df.columns.duplicated()]
Nesse caso, o conjunto de dados não tem dados duplicados.
Manipular valores nulos ou ausentes
Uma maneira comum de tratar valores NaN ou Null é substituí-los por 0 para facilitar o processamento matemático.
df = df.fillna(0) # Replace all NaN (Not a Number) values with 0
Isso garante que quaisquer dados ausentes no DataFrame sejam substituídos por 0, o que pode ser útil para etapas subsequentes de análise ou processamento de dados onde valores ausentes podem causar problemas.
Reformatar datas
As datas geralmente são formatadas de várias maneiras em diferentes conjuntos de dados. Eles podem estar em formato de data, cadeias de caracteres ou inteiros.
Para esta análise, trate a coluna year
como um inteiro. O código a seguir é uma maneira de fazer isso:
# Ensure the 'year' column is converted to the correct data type (integer for year)
df['year'] = pd.to_datetime(df['year'], format='%Y', errors='coerce').dt.year
# Confirm the changes
df.year.dtype
Isso garante que a coluna year
contenha apenas valores de ano inteiro, com quaisquer entradas inválidas convertidas em NaT
(Not a Time).
Explore os dados usando a tabela de saída do bloco de anotações Databricks
O Azure Databricks fornece recursos internos para ajudá-lo a explorar seus dados usando a tabela de saída.
Em uma nova célula, use display(df)
para exibir o conjunto de dados como uma tabela.
Usando a tabela de saída, você pode explorar seus dados de várias maneiras:
- Pesquisar os dados para uma cadeia de caracteres ou valor específico
- Filtro para condições específicas
- Criar visualizações usando o conjunto de dados
Pesquisar os dados para uma cadeia de caracteres ou valor específico
Clique no ícone de pesquisa no canto superior direito da tabela e introduza a sua pesquisa.
Filtrar para condições específicas
Você pode usar filtros de tabela internos para filtrar suas colunas para condições específicas. Há várias maneiras de criar um filtro. Consulte Filtrar resultados.
Dica
Use o Assistente Databricks para criar filtros. Clique no ícone de filtro no canto superior direito da tabela. Insira a condição do filtro. O Databricks Assistant gera automaticamente um filtro para você.
Criar visualizações usando o conjunto de dados
Na parte superior da tabela de saída, clique em +> Visualização para abrir o editor de visualização.
Selecione o tipo de visualização e as colunas que deseja visualizar. O editor exibe uma visualização do gráfico com base na sua configuração. Por exemplo, a imagem abaixo mostra como adicionar vários gráficos de linhas para visualizar o consumo de várias fontes de energia renováveis ao longo do tempo.
Clique Salvar para adicionar a visualização como uma guia na saída da célula.
Consulte Criar uma nova visualização.
Explore e visualize os dados usando bibliotecas Python
Explorar dados usando visualizações é um aspeto fundamental do EDA. As visualizações ajudam a descobrir padrões, tendências e relações dentro dos dados que podem não ser imediatamente aparentes apenas através da análise numérica. Use bibliotecas como Plotly ou Matplotlib para técnicas comuns de visualização, incluindo gráficos de dispersão, gráficos de barras, gráficos de linhas e histogramas. Essas ferramentas visuais permitem que os cientistas de dados identifiquem anomalias, compreendam distribuições de dados e observem correlações entre variáveis. Por exemplo, os gráficos de dispersão podem destacar valores atípicos, enquanto os gráficos de séries temporais podem revelar tendências e sazonalidade.
- Crie uma matriz para países únicos
- Gráfico de tendências de emissões para os 10 principais emissores (200-2022)
- Filtrar e traçar as emissões por região
- Calcular e representar graficamente o crescimento da quota de energias renováveis
- Gráfico de dispersão: Mostrar o impacto das energias renováveis para os principais emissores
- Modelo projetou o consumo global de energia
Criar uma matriz para países exclusivos
Examine os países incluídos no conjunto de dados criando uma matriz para países únicos. A criação de uma matriz mostra as entidades listadas como country
.
# Get the unique countries
unique_countries = df['country'].unique()
unique_countries
Saída:
Insight:
A coluna country
inclui várias entidades, incluindo mundo, países de alta renda, Ásia e Estados Unidos, que nem sempre são diretamente comparáveis. Poderia ser mais útil filtrar os dados por região.
Gráfico das tendências das emissões dos 10 principais emissores (200-2022)
Digamos que você queira concentrar sua investigação nos 10 países com as maiores emissões de gases de efeito estufa nos anos 2000. Pode filtrar os dados relativos aos anos que pretende analisar e aos 10 principais países com mais emissões e, em seguida, utilizar o gráfico gráfico para criar um gráfico de linhas que mostre as suas emissões ao longo do tempo.
import plotly.express as px
# Filter data to include only years from 2000 to 2022
filtered_data = df[(df['year'] >= 2000) & (df['year'] <= 2022)]
# Get the top 10 countries with the highest emissions in the filtered data
top_countries = filtered_data.groupby('country')['greenhouse_gas_emissions'].sum().nlargest(10).index
# Filter the data for those top countries
top_countries_data = filtered_data[filtered_data['country'].isin(top_countries)]
# Plot emissions trends over time for these countries
fig = px.line(top_countries_data, x='year', y='greenhouse_gas_emissions', color='country',
title="Greenhouse Gas Emissions Trends for Top 10 Countries (2000 - 2022)")
fig.show()
Saída:
Insight:
As emissões de gases com efeito de estufa apresentaram uma tendência ascendente entre 2000 e 2022, com exceção de alguns países onde as emissões se mantiveram relativamente estáveis, com um ligeiro declínio durante esse período.
Filtrar e traçar as emissões por região
Filtre os dados por região e calcule as emissões totais para cada região. Em seguida, plote os dados como um gráfico de barras:
# Filter out regional entities
regions = ['Africa', 'Asia', 'Europe', 'North America', 'South America', 'Oceania']
# Calculate total emissions for each region
regional_emissions = df[df['country'].isin(regions)].groupby('country')['greenhouse_gas_emissions'].sum()
# Plot the comparison
fig = px.bar(regional_emissions, title="Greenhouse Gas Emissions by Region")
fig.show()
Saída:
Insight:
A Ásia tem as emissões de gases com efeito de estufa mais elevadas. Oceania, América do Sul e África produzem as menores emissões de gases de efeito estufa.
Calcular e representar graficamente o crescimento da quota de energias renováveis
Crie um novo recurso/coluna que calcule a quota de energia renovável como um rácio entre o consumo de energia renovável e o consumo de energia primária. Em seguida, classifique os países com base na sua quota média de energias renováveis. Para os 10 principais países, plote sua participação em energia renovável ao longo do tempo:
# Calculate the renewable energy share and save it as a new column called "renewable_share"
df['renewable_share'] = df['renewables_consumption'] / df['primary_energy_consumption']
# Rank countries by their average renewable energy share
renewable_ranking = df.groupby('country')['renewable_share'].mean().sort_values(ascending=False)
# Filter for countries leading in renewable energy share
leading_renewable_countries = renewable_ranking.head(10).index
leading_renewable_data = df[df['country'].isin(leading_renewable_countries)]
# filtered_data = df[(df['year'] >= 2000) & (df['year'] <= 2022)]
leading_renewable_data_filter=leading_renewable_data[(leading_renewable_data['year'] >= 2000) & (leading_renewable_data['year'] <= 2022)]
# Plot renewable share over time for top renewable countries
fig = px.line(leading_renewable_data_filter, x='year', y='renewable_share', color='country',
title="Renewable Energy Share Growth Over Time for Leading Countries")
fig.show()
Saída:
Insight:
A Noruega e a Islândia são líderes mundiais em energias renováveis, com mais de metade do seu consumo a provir de energias renováveis.
A Islândia e a Suécia registaram o maior crescimento na sua quota de energias renováveis. Todos os países registaram quedas e subidas ocasionais, demonstrando como o crescimento da quota de energias renováveis não é necessariamente linear. Curiosamente, a África Central viu uma queda no início da década de 2010, mas se recuperou em 2020.
Gráfico de dispersão: mostra o impacto das energias renováveis para os principais emissores
Filtre os dados para os 10 principais emissores e, em seguida, use um gráfico de dispersão para analisar a participação de energia renovável versus as emissões de gases de efeito estufa ao longo do tempo.
# Select top emitters and calculate renewable share vs. emissions
top_emitters = df.groupby('country')['greenhouse_gas_emissions'].sum().nlargest(10).index
top_emitters_data = df[df['country'].isin(top_emitters)]
# Plot renewable share vs. greenhouse gas emissions over time
fig = px.scatter(top_emitters_data, x='renewable_share', y='greenhouse_gas_emissions',
color='country', title="Impact of Renewable Energy on Emissions for Top Emitters")
fig.show()
Saída:
Insight:
À medida que um país utiliza mais energia renovável, também tem mais emissões de gases com efeito de estufa, o que significa que o seu consumo total de energia aumenta mais rapidamente do que o seu consumo de energias renováveis. A América do Norte é uma exceção, pois suas emissões de gases de efeito estufa permaneceram relativamente constantes ao longo dos anos, à medida que sua participação renovável continuou a aumentar.
Modelo de consumo global de energia projetado
Agregar o consumo global de energia primária por ano e, em seguida, construir um modelo de média móvel integrada autorregressiva (ARIMA) para projetar o consumo global total de energia para os próximos anos. Represente os dados históricos e previstos de consumo de energia usando o Matplotlib.
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA
import matplotlib.pyplot as plt
# Aggregate global primary energy consumption by year
global_energy = df[df['country'] == 'World'].groupby('year')['primary_energy_consumption'].sum()
# Build an ARIMA model for projection
model = ARIMA(global_energy, order=(1, 1, 1))
model_fit = model.fit()
forecast = model_fit.forecast(steps=10) # Projecting for 10 years
# Plot historical and forecasted energy consumption
plt.plot(global_energy, label='Historical')
plt.plot(range(global_energy.index[-1] + 1, global_energy.index[-1] + 11), forecast, label='Forecast')
plt.xlabel("Year")
plt.ylabel("Primary Energy Consumption")
plt.title("Projected Global Energy Consumption")
plt.legend()
plt.show()
Saída:
Insight:
Este modelo projeta que o consumo global de energia continuará a aumentar.
Exemplo de bloco de notas
Use o bloco de anotações a seguir para executar as etapas neste artigo. Para obter instruções sobre como importar um bloco de notas para uma área de trabalho do Azure Databricks, consulte Importar um bloco de notas.
Tutorial: EDA com dados globais de energia
Próximos passos
Agora que você executou uma análise de dados exploratória inicial em seu conjunto de dados, tente estas próximas etapas:
- Consulte o Apêndice no notebook de exemplo para obter exemplos adicionais de visualização EDA.
- Caso tenhas encontrado algum erro ao passar por este tutorial, tenta usar o depurador interno para examinar o teu código. Consulte Notebooks de Depuração.
- Partilhe o seu caderno com a sua equipa para que eles possam compreender a sua análise. Dependendo das permissões que você der a eles, eles podem ajudar a desenvolver o código para aprofundar a análise ou adicionar comentários e sugestões para investigação adicional.
- Depois de finalizar a sua análise, crie um painel de bloco de notas ou um painel de IA/BI as principais visualizações para compartilhar com as partes interessadas.