📜  如何在Python使用 Matploltlib 可视化 MySQL 数据库中的数据?

📅  最后修改于: 2022-05-13 01:54:40.791000             🧑  作者: Mango

如何在Python使用 Matploltlib 可视化 MySQL 数据库中的数据?

先决条件: Python的Matplotlib,MySQL

在使用Python,我们需要使用数据库,它们可能是不同类型的,如 MySQL、SQLite、NoSQL 等。在本文中,我们将期待如何使用 MySQL Connector/ Python连接 MySQL 数据库。 Python 的MySQL 连接器模块用于将 MySQL 数据库与Python程序连接起来,它使用Python数据库 API 规范 v2.0 (PEP 249) 来实现。它使用Python标准库并且没有依赖项。

在本文中,我们将讨论如何在Python使用 matplotlib 来可视化 MySQL 数据库中的数据。为了执行这个任务,我们只需要安装一个名为 mysqlconnector 的模块,它可以通过使用

pip install mysqlconnector

现在要在Python使用 matplotlib 库,我们还需要安装它。我们可以使用以下方法安装它:

pip install matplotlib

除了这些模块之外,我们还将安装另一个模块,它是 numpy,它将作为一个实用模块来有效地运行 matplotlib。另一方面,NumPy 在对数组执行数学和逻辑运算以及处理数学计算方面有着巨大的用途。



在 Windows 操作系统的命令提示符中键入上述命令以安装所需的模块。

现在要使用已安装的模块,我们必须在Python导入它们。这可以按如下方式完成:

import numpy as np 

这里 np 只是 numpy 的别名。我们可以随意取任何名字来代替 np。使用它是为了让我们可以用 np 代替 numpy。

import matplotlib.pyplot as plt  

matplotlib.pyplot 是一组使 matplotlib 工作的函数,将其作为 plt 导入意味着我们可以编写 plt 来代替 matplotlib.pyplot。

使用Python连接 MySQL 数据库的步骤:

  • 我们需要做的第一件事是导入我们之前安装的 mysqlconnector 这可以通过编写来完成:
import mysql.connector
  • 现在我们可以创建一个变量 say mydb 用于存储连接的结果。因此,我们可以使用属于 mysql.connector 类的 connect() 方法将 MySQL 与Python连接,这可以按如下方式完成:
  • 正如上面一段代码中提到的,这个 connect() 方法需要一些参数,如下所示:
    • 主机可以是您的本地主机或其他主机。
    • user就是 mysql 数据库的用户名。
    • 密码是你在mysql数据库中的密码。
    • database这是要从中获取数据的数据库的名称。

至此,我们完成了 MySQL 数据库与Python的连接。现在我们的目的是从数据库中获取信息,因此我们创建了一个变量 mycursor,它将存储当前数据库的游标。游标允许您迭代查询返回的一组行并处理每一行以获得所需的信息。

mycursor=mydb.cursor()

给定 MySQL 数据库中的学生记录,绘制学生姓名和学生获得的分数之间的图表。要解决上述问题,首先我们必须将 MySQL 连接到Python。



要使用的示例表:

现在为了获得所需的查询,我们使用 mycursor 的 execute() 方法,该方法将 SQL 查询作为参数,并且我们使用 mycursor 的 fetchall 存储查询结果,这可以按如下方式完成:

Python3
mycursor.execute("select Name, Marks from student_marks")
result = mycursor.fetchall


Python3
Names = []
Marks = []
  
for i in mycursor:
    Names.append(i[0])
    Marks.append(i[1])
  
print("Name of Students = ", Names)
print("Marks of Students = ", Marks)


Python3
# plt.bar to plot a bar graph 
# with given values
plt.bar(Names, Marks)
  
# Setting count of values in 
# y-axis
plt.ylim(0, 5)
  
# setting xlabel of graph
plt.xlabel("Name of Students")
  
# setting ylabel of graph
plt.ylabel("Marks of Students")
  
# setting tile of graph
plt.title("Student's Information")
  
# show() method to display the graph
plt.show()


Python3
# Connecting to mysql database
import mysql.connector
import numpy as np
import matplotlib.pyplot as plt
  
  
mydb = mysql.connector.connect(host="localhost", 
                               user="root", 
                               password="password", 
                               database="student_info")
mycursor = mydb.cursor()
  
# Fecthing Data From mysql to my python progame
mycursor.execute("select Name, Marks from student_marks")
result = mycursor.fetchall
  
Names = []
Marks = []
  
for i in mycursor:
    Names.append(i[0])
    Marks.append(i[1])
      
print("Name of Students = ", Names)
print("Marks of Students = ", Marks)
  
  
# Visulizing Data using Matplotlib
plt.bar(Names, Marks)
plt.ylim(0, 5)
plt.xlabel("Name of Students")
plt.ylabel("Marks of Students")
plt.title("Student's Information")
plt.show()


正如您在上面的查询中看到的,我们试图从 student_marks 表中获取学生姓名和学生分数。现在我们将学生姓名和他们各自的分数存储到两个单独的列表中,以便我们可以将它们绘制在条形图中。

蟒蛇3

Names = []
Marks = []
  
for i in mycursor:
    Names.append(i[0])
    Marks.append(i[1])
  
print("Name of Students = ", Names)
print("Marks of Students = ", Marks)

使用 Matplotlib 可视化数据:

蟒蛇3

# plt.bar to plot a bar graph 
# with given values
plt.bar(Names, Marks)
  
# Setting count of values in 
# y-axis
plt.ylim(0, 5)
  
# setting xlabel of graph
plt.xlabel("Name of Students")
  
# setting ylabel of graph
plt.ylabel("Marks of Students")
  
# setting tile of graph
plt.title("Student's Information")
  
# show() method to display the graph
plt.show()

以下是上述方法的完整实现

蟒蛇3

# Connecting to mysql database
import mysql.connector
import numpy as np
import matplotlib.pyplot as plt
  
  
mydb = mysql.connector.connect(host="localhost", 
                               user="root", 
                               password="password", 
                               database="student_info")
mycursor = mydb.cursor()
  
# Fecthing Data From mysql to my python progame
mycursor.execute("select Name, Marks from student_marks")
result = mycursor.fetchall
  
Names = []
Marks = []
  
for i in mycursor:
    Names.append(i[0])
    Marks.append(i[1])
      
print("Name of Students = ", Names)
print("Marks of Students = ", Marks)
  
  
# Visulizing Data using Matplotlib
plt.bar(Names, Marks)
plt.ylim(0, 5)
plt.xlabel("Name of Students")
plt.ylabel("Marks of Students")
plt.title("Student's Information")
plt.show()

输出: