欢迎访问宙启技术站
智能推送

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中进行数据分析和处理的任务非常有用。