Python中使用sql()函数进行数据表连接和联合查询的示例
发布时间:2023-12-26 04:33:59
在Python中,可以使用sql()函数进行数据表连接和联合查询。sql()函数是pandas库中的一个方法,用于执行SQL语句并返回结果。下面是一个示例代码,演示如何使用sql()函数进行表连接和联合查询。
首先,我们需要获取本地数据库中的两个数据表的数据,这里我们使用SQLite数据库。假设我们有两个数据表,分别是"students"和"scores"。students表包含学生的信息,包括学生的ID、姓名和性别。scores表包含学生的考试成绩,包括学生的ID、科目和成绩。
import pandas as pd
import sqlite3
# 连接到SQLite数据库
conn = sqlite3.connect('test.db')
# 读取students表数据
students = pd.read_sql_query('SELECT * FROM students', conn)
# 读取scores表数据
scores = pd.read_sql_query('SELECT * FROM scores', conn)
# 输出两个表的数据
print("Students表数据:")
print(students)
print("
Scores表数据:")
print(scores)
输出结果如下:
Students表数据: ID 姓名 性别 0 1 张三 男 1 2 李四 女 2 3 王五 男 Scores表数据: ID 科目 成绩 0 1 数学 90 1 1 英语 80 2 2 数学 85 3 2 英语 95 4 3 数学 75 5 3 英语 70
接下来,我们可以使用sql()函数进行表连接和联合查询。首先我们来演示两个表的内连接操作,即将两个表中公共的列进行连接。
# 内连接操作示例
result_inner = pd.merge(students, scores, on='ID')
# 输出内连接结果
print("
内连接结果:")
print(result_inner)
输出结果如下:
内连接结果: ID 姓名 性别 科目 成绩 0 1 张三 男 数学 90 1 1 张三 男 英语 80 2 2 李四 女 数学 85 3 2 李四 女 英语 95 4 3 王五 男 数学 75 5 3 王五 男 英语 70
接下来,我们演示两个表的左连接操作,即将 个表中的全部行都包括进结果中,第二个表中没有匹配的数据则用NaN填充。
# 左连接操作示例
result_left = pd.merge(students, scores, on='ID', how='left')
# 输出左连接结果
print("
左连接结果:")
print(result_left)
输出结果如下:
左连接结果: ID 姓名 性别 科目 成绩 0 1 张三 男 数学 90 1 1 张三 男 英语 80 2 2 李四 女 数学 85 3 2 李四 女 英语 95 4 3 王五 男 数学 75 5 3 王五 男 英语 70
最后,我们演示联合查询操作,即将两个表的结果按行进行合并,并将相同列名的数据合并在一起。
# 联合查询操作示例
result_union = pd.concat([students, scores])
# 输出联合查询结果
print("
联合查询结果:")
print(result_union)
输出结果如下:
联合查询结果: ID 姓名 性别 科目 成绩 0 1 张三 男 NaN NaN 1 2 李四 女 NaN NaN 2 3 王五 男 NaN NaN 0 1 NaN NaN 数学 90.0 1 1 NaN NaN 英语 80.0 2 2 NaN NaN 数学 85.0 3 2 NaN NaN 英语 95.0 4 3 NaN NaN 数学 75.0 5 3 NaN NaN 英语 70.0
通过上述示例代码,我们可以看到如何使用sql()函数进行数据表连接和联合查询的操作。这对于需要在Python中进行数据分析和处理的任务非常有用。
