Visualizar gráficos em notebooks

Concluído

A visualização de dados é um aspecto fundamental da exploração de dados. Ele envolve a apresentação de dados em um formato gráfico, tornando os dados complexos mais compreensíveis e utilizáveis.

Com notebooks do Microsoft Fabric e dataframes do Apache Spark, os resultados tabulares são apresentados automaticamente como gráficos sem a necessidade de codificação extra.

Screenshot of the tabular results being automatically presented as charts without the need for any additional coding.

Dica

Bibliotecas de software livre, como matplotlib e plotly, entre outras, também podem ser usadas para aprimorar a experiência de exploração de dados.

Entenda variáveis categóricas e numéricas

Para variáveis categóricas, é importante entender as diferentes categorias ou níveis na variável. Isso envolve identificar quantas observações existem em cada categoria, que é conhecida como contagens ou frequências. Além disso, é crucial entender qual proporção ou porcentagem das observações que cada categoria representa.

Quando se trata de variáveis numéricas, vários aspectos precisam ser considerados. A tendência central da variável, que pode ser a média, a mediana ou o modo, fornece um resumo da variável.

Medidas de dispersão, como intervalo, intervalo interquartil (IQR), desvio padrão ou variação, fornecem insights sobre a disseminação da variável. Por fim, entender a distribuição da variável é fundamental. Isso envolve determinar se a variável é normalmente distribuída ou segue alguma outra distribuição e identificar quaisquer exceções.

Geralmente, elas são conhecidas como estatísticas resumidas de variáveis numéricas e categóricas.

Estatísticas de resumo

As estatísticas de resumo estão disponíveis para dataframes do Apache Spark quando você usa o parâmetro summary=True.

Screenshot of the summary statistics being automatically presented without the need for any additional coding.

Como alternativa, você pode gerar as estatísticas de resumo por meio do Python.

import pandas as pd

df = pd.DataFrame({
    'Height_in_cm': [170, 180, 175, 185, 178],
    'Weight_in_kg': [65, 75, 70, 80, 72],
    'Age_in_years': [25, 30, 28, 35, 32]
})

desc_stats = df.describe()
print(desc_stats)

Análise univariada

A análise univariada é a forma mais simples de análise de dados em que os dados analisados contêm apenas uma variável. A principal finalidade da análise univariada é descrever os dados e localizar padrões que existem dentro dele.

Esses são gráficos comuns usados para executar análises univariadas.

  • Histogramas: usado para mostrar a frequência de cada categoria de uma variável contínua. Eles podem ajudar a identificar a tendência central, a forma e a disseminação dos dados.

  • Gráficos de caixa: usados para mostrar o intervalo, o intervalo interquartil (IQR), a mediana e as exceções potenciais de uma variável numérica.

  • Gráficos de barras: são semelhantes aos histogramas, mas normalmente são usados para variáveis categóricas. Cada barra representa uma categoria e a altura ou o comprimento da barra corresponde à sua frequência ou proporção.

O código a seguir cria um gráfico de caixa e um histograma por meio do Python.

import numpy as np
import matplotlib.pyplot as plt

# Let's assume these are the heights of a group in inches
heights_in_inches = [63, 64, 66, 67, 68, 69, 71, 72, 73, 55, 75]

fig, axs = plt.subplots(1, 2, figsize=(10, 5))

# Boxplot
axs[0].boxplot(heights_in_inches, whis=0.5)
axs[0].set_title('Box plot of heights')

# Histogram
bins = range(min(heights_in_inches), max(heights_in_inches) + 5, 5)
axs[1].hist(heights_in_inches, bins=bins, alpha=0.5)
axs[1].set_title('Frequency distribution of heights')
axs[1].set_xlabel('Height (in)')
axs[1].set_ylabel('Frequency')

plt.tight_layout()
plt.show()

Screenshot of a box plot and histogram using Python.

Essas são algumas conclusões que podemos tirar dos resultados.

  • No gráfico de caixa, a distribuição de alturas é distorcida para a esquerda, o que significa que há muitos indivíduos com alturas significativamente abaixo da média.
  • Há duas exceções potenciais: 55 polegadas (4'7") e 75 polegadas (6'3"). Esses valores são menores e mais altos do que o restante dos pontos de dados.
  • A distribuição de alturas é aproximadamente simétrica em torno da mediana, supondo que as exceções não distorçam significativamente a distribuição.

Análise bivariada e multivariada

A análise bivariada e multivariada ajuda a entender as relações e interações entre variáveis diferentes em um conjunto de dados e geralmente são apresentadas usando gráficos de dispersão, matrizes de correlação ou tabulações cruzadas.

Gráficos de dispersão

O código a seguir usa a função scatter() de matplotlib para criar o gráfico de dispersão. Especificamos house_sizes para o eixo x e house_prices para o eixo y.

import matplotlib.pyplot as plt
import numpy as np

# Sample data
np.random.seed(0)  # for reproducibility
house_sizes = np.random.randint(1000, 3000, size=50)  # Size of houses in square feet
house_prices = house_sizes * 100 + np.random.normal(0, 20000, size=50)  # Price of houses in dollars

# Create scatter plot
plt.scatter(house_sizes, house_prices)

# Set plot title and labels
plt.title('House Prices vs Size')
plt.xlabel('Size (sqt)')
plt.ylabel('Price ($)')

# Display the plot
plt.show()

Screenshot of a scatter plot in a notebook.

Nesse gráfico de dispersão, cada ponto representa uma casa. Você vê que, à medida que o tamanho da casa aumenta (movendo-se para a direita ao longo do eixo x), o preço também tende a aumentar (movendo-se para cima ao longo do eixo y).

Esse tipo de análise nos ajuda a entender como as alterações nas variáveis dependentes afetam a variável de destino. Analisando as relações entre essas variáveis, podemos fazer previsões sobre a variável de destino com base nos valores das variáveis dependentes.

Além disso, essa análise pode ajudar a identificar quais variáveis dependentes têm um impacto significativo na variável de destino. Isso é útil para a seleção de recursos em modelos de machine learning, em que a meta é usar os recursos mais relevantes para prever o destino.

Gráfico de linhas

O script Python a seguir usa a biblioteca matplotlib para criar um gráfico de linhas de preços de casas simulados durante um período de três anos. Ele gera uma lista de datas mensais de 2020 a 2022 e uma lista correspondente de preços das casas, que começam em US$ 200 mil e aumentam a cada mês com alguma aleatoriedade.

O eixo x do gráfico é formatado para exibir datas no formato "Ano-Mês" e definir o intervalo dos tiques no eixo x para cada seis meses.

import matplotlib.pyplot as plt
from datetime import datetime, timedelta
import random
import matplotlib.dates as mdates

# Generate monthly dates from 2020 to 2022
dates = [datetime(2020, 1, 1) + timedelta(days=30*i) for i in range(36)]

# Generate corresponding house prices with some randomness
prices = [200000 + 5000*i + random.randint(-5000, 5000) for i in range(36)]

plt.figure(figsize=(10,5))

# Plot data
plt.plot(dates, prices)

# Format x-axis to display dates
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
plt.gca().xaxis.set_major_locator(mdates.MonthLocator(interval=6)) # set interval to 6 months
plt.gcf().autofmt_xdate() # Rotation

# Set plot title and labels
plt.title('House Prices Over Years')
plt.xlabel('Year-Month')
plt.ylabel('House Price ($)')

# Show the plot
plt.show()

Screenshot of a line plot in a notebook.

Gráficos de linha são simples de entender e de ler. Eles fornecem uma visão geral clara e de alto nível da progressão dos dados ao longo do tempo, tornando-os uma escolha popular para dados de série temporal.

Plotagem de par

Um gráfico de par pode ser útil quando você deseja visualizar a relação entre várias variáveis ao mesmo tempo.

import seaborn as sns
import pandas as pd

# Sample data
data = {
    'Size': [1000, 2000, 3000, 1500, 1200],
    'Bedrooms': [2, 4, 3, 2, 1],
    'Age': [5, 10, 2, 6, 4],
    'Price': [200000, 400000, 350000, 220000, 150000]
}

df = pd.DataFrame(data)

# Create a pair plot
sns.pairplot(df)

Screenshot of a pair plot in a notebook.

Isso cria uma grade de gráficos em que cada recurso é plotado em relação a todos os outros recursos. Na diagonal estão os histogramas mostrando a distribuição de cada recurso. Os gráficos fora da diagonal são gráficos de dispersão mostrando a relação entre dois recursos.

Esse tipo de visualização pode nos ajudar a entender como diferentes recursos estão relacionados uns aos outros e podem potencialmente ser usados para informar decisões sobre compra ou venda de casas.