Plotar histogramas no Python

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Este artigo descreve como plotar os dados usando o pacote pandas'.hist() do Python. Um Banco de Dados SQL é a origem usada para visualizar os intervalos de dados de histograma que têm valores consecutivos e não sobrepostos.

Pré-requisitos

Confirmar o banco de dados restaurado

Confirme se o banco de dados restaurado existe consultando a tabela Person.CountryRegion:

USE AdventureWorksDW;
SELECT * FROM Person.CountryRegion;

Instalar pacotes do Python

Baixe e instale o Azure Data Studio.

Instale os seguintes pacotes do Python:

  • pyodbc
  • pandas
  • sqlalchemy
  • matplotlib

Para instalar esses pacotes:

  1. No notebook do Azure Data Studio, selecione Gerenciar Pacotes.
  2. No painel Gerenciar Pacotes, selecione a guia Adicionar Novo.
  3. Para cada pacote a seguir, insira o nome do pacote, selecione Pesquisar e Instalar.

Plotar um histograma

Os dados distribuídos exibidos no histograma baseiam-se em uma consulta SQL do AdventureWorksDW2022. O histograma visualiza os dados e a frequência dos valores de dados.

Edite as variáveis de cadeia de conexão 'server', 'database', 'username' e 'password' para se conectar ao Banco de Dados SQL.

Para criar um notebook:

  1. No Azure Data Studio, selecione Arquivo e escolha Novo Notebook.
  2. No notebook, selecione o kernel Python3 e escolha +code.
  3. Cole o código no notebook e selecione Executar Tudo.
import pyodbc 
import pandas as pd
import matplotlib
import sqlalchemy

from sqlalchemy import create_engine

matplotlib.use('TkAgg', force=True)
from matplotlib import pyplot as plt

# Some other example server values are
# server = 'localhost\sqlexpress' # for a named instance
# server = 'myserver,port' # to specify an alternate port
server = 'servername'
database = 'AdventureWorksDW2022'
username = 'yourusername'
password = 'databasename'

url = 'mssql+pyodbc://{user}:{passwd}@{host}:{port}/{db}?driver=SQL+Server'.format(user=username, passwd=password, host=server, port=port, db=database)
engine = create_engine(url)

sql = "SELECT DATEDIFF(year, c.BirthDate, GETDATE()) AS Age FROM [dbo].[FactInternetSales] s INNER JOIN dbo.DimCustomer c ON s.CustomerKey = c.CustomerKey"

df = pd.read_sql(sql, engine)
df.hist(bins=50)

plt.show()

A exibição mostra a distribuição etária de clientes na tabela FactInternetSales.

Diagrama mostrando a distribuição do histograma pandas.