Python 模擬試験

Pythonデータ分析実践 模擬試験 第4回 問7・2章 データの種類と読み込み(データベース)

SQL での結合

次のコードを実行したときの出力として、正しいものを1つ選べ。

import pandas as pd
import sqlite3
con = sqlite3.connect(":memory:")
pd.DataFrame({"k": [1, 2], "v": [10, 20]}).to_sql("a", con, index=False)
pd.DataFrame({"k": [2, 3], "w": [200, 300]}).to_sql("b", con, index=False)
print(pd.read_sql("select a.k, a.v, b.w from a join b using (k)", con).values.tolist())
  1. A

    [[2, 20, 200]]

  2. B

    [[1, 10, nan], [2, 20, 200]]

  3. C

    [[2, 20, 200], [3, nan, 300]]

  4. D

    [[1, 10], [2, 20]]

正解と解説を見る

正解:A

SQL の join は、既定で内部結合。left join・right join で外部結合になる。データベース側で絞り込んでから DataFrame に取り込むと、効率がよい。

順実行する行実行後の変数
1`import pandas as pd`—
2`import sqlite3`—
3`con = sqlite3.connect(":memory:")`—
4`pd.DataFrame({"k": [1, 2], "v": [10, 20]}).to…`—
5`pd.DataFrame({"k": [2, 3], "w": [200, 300]}).…`—
6`print(pd.read_sql("select a.k, a.v, b.w from …`—
結果実際の出力[[2, 20, 200]]

学習のポイント:pandas の merge と SQL の join は対応している。

この問題を演習で解く →

問題一覧へ

このサイトの問題は、各試験の公式に示された出題範囲に沿って作ったオリジナルの模擬問題です。本試験の問題ではありません。一般社団法人Pythonエンジニア育成推進協会の公式サービスではありません。