Python 图表数据

在本节中,我们将展示用于使用 Pandas 和 Matplotlib 库绘制或生成 Python 图表的数据。如您所见,我们针对 SQL Server 执行了三个查询,以从所需表中获取数据。

在我们所有的 Pandas DataFrame 绘图函数和 Matplotlib 图表中,我们根据具体情况使用一个或所有 Python 数据。

首先,我们从 SQL 教程数据库的 Employees 表中选择所有列。此表包含 8 列和 15 行。

下方图像背后的查询是:

SELECT [EmpID] ,[FirstName], [LastName],[Education], 
       [Occupation], [YearlyIncome], [Sales] ,[HireDate]
   FROM [SQL Tutorial].[dbo].[Employee]
Employee Table

如何加载 SQL 数据并在 Python 图表中使用?

现在,我将向您展示如何将这些数据导入 Python 工作空间。要使用上述数据,我们必须将其转换为 DataFrame。这涉及多个步骤:首先,与 SQL Server 和相应的数据库建立 ODBC 连接。其次,编写查询以从数据库表中选择所需的字段。最后,将这些 Python 图表数据转换为 Pandas DataFrame。

# Python charts data
import pyodbc
import pandas as pd
import matplotlib.pyplot as plt

conn = pyodbc.connect('''Driver={SQL Server Native Client 11.0}; Server=PRASAD;
                      Database=SQL Tutorial ; Trusted_Connection=yes;''')

string = ( ''' SELECT EmpID ,FirstName, LastName ,Education, Occupation, YearlyIncome, Sales ,HireDate 
                    FROM Employee''')

query = pd.read_sql_query(string, conn)
data = pd.DataFrame(query)
print(data)
Python Charts Data 3

由于我们选择所有列,因此我们可以使用 SELECT * 来节省源代码中的一些空间。请记住,在 SQL Server 中使用 SELECT * 查询并不是一个好习惯。我建议您参考 SQL Select Statement 来理解这一点。

在这里,我们使用 AdventureWorksDW2014 数据库,这是我们在使用 Python Matplotlib 生成的大多数图表中使用的数据。

SELECT ProdCat.EnglishProductCategoryName, ProdSubCat.EnglishProductSubcategoryName, Geo.EnglishCountryRegionName, 
       Geo.StateProvinceName, Geo.City, Geo.PostalCode, Prod.EnglishProductName, Prod.Color, Prod.DealerPrice, 
       Cust.FirstName, Cust.LastName, Cust.Gender, Cust.YearlyIncome, Cust.EnglishEducation, Cust.EnglishOccupation, 
       Fact.OrderQuantity, Fact.TotalProductCost, Fact.SalesAmount, Fact.TaxAmt, Fact.OrderDate
FROM DimProductSubcategory AS ProdSubCat 
	INNER JOIN DimProduct AS Prod ON ProdSubCat.ProductSubcategoryKey = Prod.ProductSubcategoryKey 
   INNER JOIN DimProductCategory  AS ProdCat ON ProdSubCat.ProductCategoryKey = ProdCat.ProductCategoryKey 
   INNER JOIN FactInternetSales AS Fact ON Prod.ProductKey = Fact.ProductKey 
   INNER JOIN DimCustomer AS Cust ON Fact.CustomerKey = Cust.CustomerKey
   INNER JOIN DimGeography AS Geo ON Cust.GeographyKey = Geo.GeographyKey

让我向您展示 Adventure Works 表格数据,用于在 Pandas DataFrame 中绘制 Python 图表。

import pyodbc
import pandas as pd
import matplotlib.pyplot as plt

conn = pyodbc.connect("Driver={SQL Server Native Client 11.0}; Server=PRASAD;"
                      "Database=AdventureWorksDW2014 ; Trusted_Connection=yes;")

string = ( ''' SELECT ProdCat.EnglishProductCategoryName, ProdSubCat.EnglishProductSubcategoryName, 
                    Geo.EnglishCountryRegionName, Geo.StateProvinceName, Geo.City, Geo.PostalCode, 
                    Prod.EnglishProductName, Prod.Color, Prod.DealerPrice, Cust.FirstName, Cust.LastName, 
                    Cust.Gender, Cust.YearlyIncome, Cust.EnglishEducation, Cust.EnglishOccupation, Fact.OrderQuantity,
                    Fact.TotalProductCost, Fact.SalesAmount, Fact.TaxAmt, Fact.OrderDate 
                    FROM DimProductSubcategory AS ProdSubCat 
                    INNER JOIN DimProduct AS Prod ON ProdSubCat.ProductSubcategoryKey = Prod.ProductSubcategoryKey 
                    INNER JOIN DimProductCategory  AS ProdCat ON ProdSubCat.ProductCategoryKey = ProdCat.ProductCategoryKey 
                    INNER JOIN FactInternetSales AS Fact ON Prod.ProductKey = Fact.ProductKey 
                    INNER JOIN DimCustomer AS Cust ON Fact.CustomerKey = Cust.CustomerKey  
                    INNER JOIN DimGeography AS Geo ON Cust.GeographyKey = Geo.GeographyKey''')

query = pd.read_sql_query(string, conn)
data = pd.DataFrame(query)
print(data)

如果您观察下表,大约有 20 列和 60,398 行。出于演示目的,我们不能使用所有这些列,因此我们选择最多 4 列。我的意思是使用可能连接较少的查询的一个简化版本。希望您能理解。

Data For Python Charts 4

在某些情况下,我们也可能使用下表。所以,让我向您展示一下。

Data For Python Charts 5