Python3エンジニア認定データ分析試験 ⑧ 応用:データ収集と加工

教科書5章にあたる応用範囲で、スクレイピングやAPIによるデータ収集、PDF・Word・Excelなど各種ファイルからのテキスト抽出、自然言語処理の前処理(形態素解析、Bag of Words、TF-IDF)、画像データの取り扱いといった実務寄りの内容を扱う。公式の出題範囲表ではこの章の問題数は0問・0%とされており、合否に直結する領域ではない。一方で、集めたデータをpandasに載せるまでの流れを知っておくと、前半で学ぶ処理が何のためのものかがつながる。試験対策としての優先度は下げてよいが、実務でPythonを使うなら出番の多い領域。

この分野の問題37問を、選択肢・正解・解説つきで掲載しています。まず自分で解答を考えてから「正解と解説を見る」を開いて答え合わせをしてください。

クイズモードで挑戦 →

268PythonでWebサイトにアクセスし、HTTPでデータの送受信を行うためのライブラリはどれか。

  1. ARequests
  2. BScrapy
  3. CSelenium
  4. DBeautifulSoup4
正解と解説を見る

正解:ARequests

Requestsは、Webブラウザの代わりにWebサイトにアクセスし、HTTPでデータの送受信を行います。

この問題の解説ページを開く →

269HTMLやXMLを解析してデータを取り出すライブラリ「BeautifulSoup4」をインストールする際の注意点として正しいものはどれか。

  1. Abeautifulsoupと指定すると古いバージョンがインストールされる
  2. Bbeautifulsoup4はpipではなくcondaでのみインストール可能である
  3. Crequestsライブラリを事前にアンインストールしておく必要がある
  4. DPython 2系でしか動作しないため仮想環境のダウングレードが必要である
正解と解説を見る

正解:Abeautifulsoupと指定すると古いバージョンがインストールされる

間違えてbeautifulsoupと指定すると古いバージョンがインストールされるため注意が必要です。

この問題の解説ページを開く →

270requests.get()を用いて取得したResponseオブジェクトのステータスコードを確認したところ「200」だった。この意味として正しいものはどれか。

  1. Aアクセスに成功した
  2. Bサーバー内部エラーが発生した
  3. Cアクセスが拒否された
  4. Dページが見つからなかった
正解と解説を見る

正解:Aアクセスに成功した

ステータスコード200はアクセスに成功したことを表します。

この問題の解説ページを開く →

271変数textに格納されたHTMLソースコードを、BeautifulSoupを用いて解析する正しいコードはどれか。

  1. ABeautifulSoup(text, 'text.parser')
  2. BBeautifulSoup(text, 'web.parser')
  3. CBeautifulSoup(text, 'html.parser')
  4. DBeautifulSoup(text, 'xml.parser')
正解と解説を見る

正解:CBeautifulSoup(text, 'html.parser')

BeautifulSoupの第2引数にはパーサーである'html.parser'を指定します。

この問題の解説ページを開く →

272BeautifulSoupを用いて、解析済みのオブジェクトsoupからすべての<a>タグを取り出す正しいメソッドはどれか。

  1. Asoup.extract('a')
  2. Bsoup.find_all('a')
  3. Csoup.select_all('a')
  4. Dsoup.get_all('a')
正解と解説を見る

正解:Bsoup.find_all('a')

find_allメソッドを使用すると、HTMLに存在する引数で指定したタグをすべて取り出すことができます。

この問題の解説ページを開く →

273BeautifulSoupで取得したオブジェクトからCSSセレクターを用いて特定の要素を抽出したい場合に使用するメソッドはどれか。

  1. Asoup.select()
  2. Bsoup.css()
  3. Csoup.query()
  4. Dsoup.extract()
正解と解説を見る

正解:Asoup.select()

selectメソッドはCSSセレクターを使用して要素を取得するために用います。

この問題の解説ページを開く →

274スクレイピングを行う際、Webサイトがプログラムでのアクセスを許可しているかどうかを確認するためにチェックすべきファイルはどれか。

  1. Aindex.html
  2. Baccess.log
  3. Csitemap.xml
  4. Drobots.txt
正解と解説を見る

正解:Drobots.txt

Webサイトにはrobots.txtというファイルがあり、どのURLにプログラムからアクセスしてよいかが定義されています。

この問題の解説ページを開く →

275スクレイピングにおいて、同じWebサイトにアクセスする際の注意点として適切でないものはどれか。

  1. A連続してアクセスする場合は数秒のインターバルをあける
  2. B他の利用者がアクセスできなくなる可能性があることを考慮する
  3. C取得速度を最大化するためマルチスレッドで間隔をあけずにアクセスする
  4. Dサーバーに負荷をかけないよう連続アクセスを避ける
正解と解説を見る

正解:C取得速度を最大化するためマルチスレッドで間隔をあけずにアクセスする

Cは無間隔の連続アクセスでサーバー負荷を高めるため不適切。A・B・Dはいずれも負荷や他利用者への配慮として適切です。

この問題の解説ページを開く →

276JavaScriptによって表示されるコンテンツをスクレイピングしたい場合に、必要となるツールはどれか。

  1. Apandas
  2. BRequests
  3. CBeautifulSoup4
  4. DSelenium
正解と解説を見る

正解:DSelenium

JavaScriptを解釈するにはWebブラウザを自動操作するSeleniumなどのツールが必要です。

この問題の解説ページを開く →

277Pythonで書かれており、複数ページにアクセスするクローリング機能とスクレイピング機能を提供するフレームワークはどれか。

  1. AMeCab
  2. BScrapy
  3. CJanome
  4. DNLTK
正解と解説を見る

正解:BScrapy

大量のページをスクレイピングする用途には、Scrapyというフレームワークが便利です。

この問題の解説ページを開く →

278Pythonで書かれた辞書を内包しており、依存するライブラリがなく簡単にインストールできる形態素解析エンジンはどれか。

  1. ANLTK
  2. BMeCab
  3. CJanome
  4. Dgensim
正解と解説を見る

正解:CJanome

JanomeはPythonで書かれた辞書を内包する形態素解析エンジンで、依存ライブラリがありません。

この問題の解説ページを開く →

279文書のトピックモデルを実行するライブラリであり、Word2Vecなどの手法も提供しているものはどれか。

  1. AJanome
  2. BNLTK
  3. Cgensim
  4. DMeCab
正解と解説を見る

正解:Cgensim

gensimは文書のトピックモデルを実行したりWord2Vecを提供するライブラリです。

この問題の解説ページを開く →

280MeCabのTaggerクラスをインスタンス化する際、ChaSenの出力形式で実行するために指定する引数はどれか。

  1. A'-Odump'
  2. B'-Ochasen'
  3. C'-Owakati'
  4. D'-Oyomi'
正解と解説を見る

正解:B'-Ochasen'

'-Ochasen'を指定するとChaSenと呼ばれるツールを用いた形態素解析の出力形式で実行されます。

この問題の解説ページを開く →

281MeCabによる形態素解析の出力をプログラムで処理する際、各行を要素に分割するための適切な区切り文字はどれか。

  1. Aスペース
  2. Bタブ
  3. Cコロン
  4. Dカンマ
正解と解説を見る

正解:Bタブ

解析結果から表層系や原形を抽出するには、行ごとにタブで区切られた要素に分割する必要があります。

この問題の解説ページを開く →

282各文書の形態素解析の結果をもとに、単語ごとにその出現回数をカウントしたものを何と呼ぶか。

  1. AN-gram
  2. BTF-IDF
  3. CWord2Vec
  4. DBag of Words
正解と解説を見る

正解:DBag of Words

Bag of Words (BoW)は、各文書の形態素解析の結果をもとに単語ごとの出現回数をカウントしたものです。

この問題の解説ページを開く →

283gensimライブラリを用いてBag of Wordsを計算する際、まず単語と整数の対応を保持する辞書を作成するクラスはどれか。

  1. Amatutils.corpus2dense
  2. Bmodels.Word2Vec
  3. CTfidfTransformer
  4. Dcorpora.Dictionary
正解と解説を見る

正解:Dcorpora.Dictionary

corporaモジュールのDictionaryクラスをインスタンス化することで辞書を作成します。

この問題の解説ページを開く →

284gensimのDictionaryクラスのdoc2bowメソッドに単語のリストを入力した際の戻り値として正しいものはどれか。

  1. A単語の文字列とその出現回数の辞書
  2. B各文書における単語の出現回数を表す密行列
  3. C単語を表す整数の1次元配列
  4. D単語を表す整数とその出現回数のタプルのリスト
正解と解説を見る

正解:D単語を表す整数とその出現回数のタプルのリスト

doc2bowメソッドは、単語を表す整数とその出現回数をタプルのリストとして返します。

この問題の解説ページを開く →

285scikit-learnを用いてBag of Wordsを計算するクラスはどれか。

  1. ATfidfTransformer
  2. BCountVectorizer
  3. CRandomForestClassifier
  4. DDictionary
正解と解説を見る

正解:BCountVectorizer

scikit-learnのfeature_extraction.text.CountVectorizerクラスを用いてBoWを計算できます。

この問題の解説ページを開く →

286TF-IDFに関する説明のうち、「TF」の定義として正しいものはどれか。

  1. Aすべての文書における単語の合計出現回数
  2. B文書全体における単語の種類の総数
  3. C単語が出現する文書が文書全体の中で占める割合の逆数
  4. D1つの文書の中に現れる全単語の合計出現回数のうち1つの単語が出現した割合
正解と解説を見る

正解:D1つの文書の中に現れる全単語の合計出現回数のうち1つの単語が出現した割合

TFは1つの文書の中に現れる全単語の合計出現回数のうち、1つの単語がどれだけの割合で出現したかを示す指標です。

この問題の解説ページを開く →

287TF-IDFが最も高い値をとる条件として適切なものはどれか。

  1. A特定の文書にしか現れないがその文書内での出現回数は非常に少ない
  2. Bどの文書にも一切出現しない
  3. C特定の文書にしか現れない単語がその文書の中で大量に出現する
  4. Dすべての文書にまんべんなく頻繁に出現する
正解と解説を見る

正解:C特定の文書にしか現れない単語がその文書の中で大量に出現する

TF-IDFが高くなるのは、一部の特定の文書にしか現れない単語が1つの文書の中で大量に出現するときです。

この問題の解説ページを開く →

288scikit-learnのTfidfTransformerクラスで、文書頻度を平滑化するため分子・分母に1を加える処理を行う引数はどれか。

  1. Ause_idf=True
  2. Bnorm='l2'
  3. Csmooth_idf=True
  4. Dadd_one=True
正解と解説を見る

正解:Csmooth_idf=True

smooth_idf=Trueを指定すると、文書頻度の分子・分母に1を加えて平滑化します。

この問題の解説ページを開く →

289scikit-learnのTfidfTransformerクラスでTF-IDFを計算し、デフォルトの正規化を行う際に用いる引数normの値は何か。

  1. A'none'
  2. B'l1'
  3. C'l2'
  4. D'max'
正解と解説を見る

正解:C'l2'

norm='l2'と指定して、デフォルトのL2正規化を行っています。

この問題の解説ページを開く →

290文書が肯定的(ポジティブ)か否定的(ネガティブ)かを判定するタスクを何というか。

  1. Aトピックモデル
  2. B極性判定
  3. CBag of Words
  4. D形態素解析
正解と解説を見る

正解:B極性判定

それぞれの文書が肯定的か否定的かを判定するタスクを極性判定(ネガポジ判定)と呼びます。

この問題の解説ページを開く →

291Pythonで画像データを手軽に扱うためによく使われている、PILの後継となるライブラリはどれか。

  1. Apandas
  2. BNumPy
  3. CPillow
  4. DMatplotlib
正解と解説を見る

正解:CPillow

Pythonで手軽に画像を扱うライブラリとして、PILの後継であるPillowがよく使われます。

この問題の解説ページを開く →

292Pillowライブラリを用いて、ファイルから画像を読み込むための正しい関数はどれか。

  1. AImage.read()
  2. BImage.load()
  3. CImage.open()
  4. DImage.new()
正解と解説を見る

正解:CImage.open()

ファイルから画像を読み込むには、PIL.Imageモジュールのopen関数を使います。

この問題の解説ページを開く →

293Pillowで読み込んだ画像オブジェクトのsize属性から得られる値の順番として正しいものはどれか。

  1. A(幅, 高さ)のタプル
  2. B(幅, 高さ, チャンネル数)のタプル
  3. C(高さ, 幅, チャンネル数)のタプル
  4. D(高さ, 幅)のタプル
正解と解説を見る

正解:A(幅, 高さ)のタプル

size属性には、画像の大きさが(幅, 高さ)の順でピクセル単位で格納されています。

この問題の解説ページを開く →

294デジタルカメラの写真などでよく使われ、Pillowのmode属性で確認できる「RGB表現に透明度のデータを加えた色表現」はどれか。

  1. ACMYK
  2. BRGBA
  3. CL
  4. DP
正解と解説を見る

正解:BRGBA

RGB表現に透明度のデータを加えたものがRGBAモードです。

この問題の解説ページを開く →

295Pillowでカラー画像をグレイスケール(白黒)の画像に変換するための正しいメソッドと引数はどれか。

  1. Aconvert('L')
  2. Bconvert('G')
  3. Ctransform('Gray')
  4. Dchange_mode('BW')
正解と解説を見る

正解:Aconvert('L')

カラー画像をグレイスケールに変換するには、convertメソッドの引数に大文字の'L'を指定します。

この問題の解説ページを開く →

296Pillowのresizeメソッドで画像サイズを変更する際、計算コストはかかるが高画質な出力を得るためにresample引数に指定するフィルターはどれか。

  1. AImage.LANCZOS
  2. BImage.BICUBIC
  3. CImage.NEAREST
  4. DImage.BILINEAR
正解と解説を見る

正解:AImage.LANCZOS

単純なアルゴリズムの代わりに高画質な出力を得られるLANCZOSというフィルターを指定できます。

この問題の解説ページを開く →

297Pillowのrotateメソッドで画像を回転させる際、角度が変わって画角からはみ出た部分も画像データとして出力されるようにする引数はどれか。

  1. Aexpand=True
  2. Bcrop=False
  3. Cfit=True
  4. Dfill=True
正解と解説を見る

正解:Aexpand=True

expand引数をTrueにすると、画角からはみ出てしまった部分も画像データとして出力されます。

この問題の解説ページを開く →

298Pillowのcropメソッドで画像の一部を切り出す際、領域の指定方法として正しいものはどれか。

  1. A(左上x, 左上y, 右下x, 右下y) のタプル
  2. B(右下x, 右下y, 左上x, 左上y) のタプル
  3. C(左上x, 左上y, 幅, 高さ) のタプル
  4. D(中心x, 中心y, 幅, 高さ) のタプル
正解と解説を見る

正解:A(左上x, 左上y, 右下x, 右下y) のタプル

cropメソッドの領域指定は、左上と右下の座標をまとめた(左上x, 左上y, 右下x, 右下y)のタプルで渡します。

この問題の解説ページを開く →

299Pillowで加工した画像をJPEG形式で保存する正しい方法はどれか。(imgは画像オブジェクトとする)

  1. Aimg.write('output.jpg')
  2. Bimg.save('output.jpg')
  3. Cimg.dump('output.jpg')
  4. Dimg.export('output.jpg')
正解と解説を見る

正解:Bimg.save('output.jpg')

画像を別のファイルとして保存するには、saveメソッドにファイル名を渡します。拡張子でフォーマットを変更できます。

この問題の解説ページを開く →

300Pillowで読み込んだRGBAモードの画像をNumPy配列(ndarray)に変換した。この配列のshape属性の要素数(次元数)はいくつか。

  1. A2
  2. B3
  3. C4
  4. D1
正解と解説を見る

正解:B3

(高さ, 幅, 4)のようになり、要素が3つのタプルになります。

この問題の解説ページを開く →

301RGBAモードの画像をNumPy配列に変換し、一番左上のピクセルのデータを取得した。配列が[255, 255, 255, 255]であった場合、このピクセルの色は何か。

  1. A
  2. B透明
  3. C
  4. D
正解と解説を見る

正解:A

RGBすべてのチャンネルが255と最大になっており、白を表現していることがわかります。

この問題の解説ページを開く →

302機械学習の入力として用いるため、2次元の広がりを持った画像データのNumPy配列を1次元のデータに変換するメソッドはどれか。

  1. Atranspose()
  2. Bsqueeze()
  3. Creshape(1)
  4. Dflatten()
正解と解説を見る

正解:Dflatten()

flattenメソッドを使って、画像データを1次元のデータに変換します。

この問題の解説ページを開く →

303TF-IDFの説明として間違っているものはどれか。

  1. Aすべての文書に出現する単語と一部の文書にしか出現しない単語を区別する
  2. Bカウントされた単語の出現回数に重みをつける
  3. CTFは1つの文書の中で対象の単語がどれだけ出現したかの割合である
  4. DIDFは文書が扱うトピックの数を表す指標である
正解と解説を見る

正解:DIDFは文書が扱うトピックの数を表す指標である

IDFは「ある単語が出現する文書が文書全体の中でどのくらいの割合を占めていたか」の逆数の対数であり、トピック数ではありません。

この問題の解説ページを開く →

304Pillowで画像を扱う際、左上の座標を示す値はどれか。

  1. A(-1, -1)
  2. B(width, height)
  3. C(1, 1)
  4. D(0, 0)
正解と解説を見る

正解:D(0, 0)

左上の座標が(0,0)になっており、右もしくは下へ行くほど座標が大きくなります。

この問題の解説ページを開く →
Python3エンジニア認定データ分析試験の全分野一覧へ戻る