研究室配属希望調査 解析スクリプト

概要

Google Forms で実施した3年生の研究室配属希望調査について、フォーム結果 画面からコピーしたテキストを解析し、研究室ごとの希望者数および GPA の 統計量を集計する Python スクリプトです。

Google Forms の管理者権限がなくCSVファイルを直接取得できない場合でも、 結果画面に表示されたテキストをコピーしてファイルに保存することで解析で きます。

主な処理内容は以下のとおりです。

  • Google Forms の結果テキストから研究室番号を抽出
  • 各研究室の回答値を抽出
  • 在校生と編入生を分類
  • 研究室ごとの希望者数を集計
  • 在校生 GPA の平均値を計算
  • 在校生 GPA の標準偏差を計算
  • 元データを Excel ファイルとして保存

必要な環境

Python 3 が必要です。 使用する Python パッケージは以下です。

  • numpy
  • pandas
  • openpyxl

必要に応じて以下のようにインストールします。

condat install numpy pandas openpyxl

入力データ

Google Forms のアンケート結果画面に表示されたテキストをコピーし、テキ ストファイルとして保存します。

例えば、

googleform.txt

というファイル名で保存します。入力データには、以下のような研究室ごとの 回答結果が含まれていることを想定しています。

研究室10(極限環境材料科学研究室)
7 件の回答
380
288
300
375
280
310
359

また、Google Forms の表示形式によっては、 同じ値が複数回出現する場合に以下のような 「値 / カウント」形式になることがあります。

値    カウント
300   2
350   2
370   1
380   1
385   1
400   1
401   1

この場合、カウント数に応じて値を展開します。例えば、

300   2
350   2

は内部的に、

300
300
350
350

として処理されます。

実行方法

./analyze_lab_assignment_survey.py googleform.txt

出力

実行すると、研究室ごとの集計結果が標準出力に表示されます。

出力例:

  研究室   在校生   編入生   GPA mean    GPA std
----------------------------------------------------
     1        9        0      359.6       38.4
     2        6        0      269.3       66.3
     3        8        1      358.7       42.7
     6        3        0      343.7       58.5
     7        4        0      301.8       97.1
     8       13        0      372.2       72.3
     9        8        0      319.1       77.6
    10        7        0      327.4       42.6
    12        2        1      190.9          -

在校生と編入生の判定

このスクリプトでは、回答値について

df_["値"] > 10

を満たす回答を在校生の GPA データとして扱います。

したがって、

  • 値 > 10 : 在校生の GPA
  • 値 <= 10 : 編入生

として分類します。

GPA の統計量

研究室ごとに、在校生のみを抽出して GPA の平均値と標準偏差を計算します。

平均値:

df__["値"].mean()

標準偏差:

df__["値"].std()

注意事項

  • 入力テキストは Google Forms の表示形式に依存します。
  • Google Forms 側の HTML やコピー形式が変更された場合、正規表現の修正が必要になる可能性があります。
  • 編入生の判定は「値が10以下」という運用上の仮定に基づいています。
  • GPA が実際に10以下となる別形式のデータを使用する場合は、判定条件を変更してください。
  • 回答値の誤入力は自動修正しません。
  • 研究室番号が存在しても回答数が0件の場合、その研究室は出力から除外されます。

ファイル構成例

.
├── README.org
├── analyze_lab_assignment_survey.py
└── googleform.txt

実行後:

.
├── README.org
├── analyze_lab_assignment_survey.py
└── googleform.txt

ライセンス

研究室内または教育業務での利用を想定しています。 必要に応じてライセンス条件を追記してください。

S
Description
No description provided
Readme 316 KiB
Languages
Python 100%