在 Python 中绘制直方图

适用于:SQL ServerAzure SQL 数据库Azure SQL 托管实例

本文介绍如何使用 Python 包 pandas'.hist() 来绘制数据。 SQL 数据库提供一种源可用于可视化具有连续的非重叠值的直方图数据间隔。

先决条件

验证还原的数据库

可以通过查询 Person.CountryRegion 表来验证是否存在还原的数据库:

USE AdventureWorksDW;
SELECT * FROM Person.CountryRegion;

安装 Python 包

下载并安装 Azure Data Studio

安装以下 Python 包:

  • pyodbc
  • pandas
  • sqlalchemy
  • matplotlib

若要安装这些包:

  1. 在 Azure Data Studio 笔记本中,选择“管理包”。
  2. 在“管理包”窗格中,选择“添加新包”选项卡。
  3. 对于以下每个包,输入包名称,选择“搜索”,然后选择“安装”。

绘制直方图

直方图中显示的分布式数据基于 AdventureWorksDW2022 中的 SQL 查询。 直方图直观显示数据以及数据值的频率。

编辑连接字符串变量“server”、“database”、“username”和“password”,以连接到 SQL Server 数据库。

创建新笔记本的步骤:

  1. 在 Azure Data Studio 中,依次选择“文件”和”新建笔记本” 。
  2. 在笔记本中,依次选择内核“Python3”和“+ 代码” 。
  3. 在笔记本中粘贴代码,选择“全部运行”。
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()

将显示 FactInternetSales 表中客户的年龄分布。

Diagram showing the Pandas histogram distribution.