

「進学偏差」とは、大学の偏差値から高校の偏差値を引くことにより、その高校における進学指導の効果を数値化したものです。
式としては『100+大学偏差値-高校偏差値』で表します。
この指標はあくまで統計的な参考値であり、個々の生徒の努力や様々な要因により、
実際の進学結果は大きく異なる可能性があります。
また、この数値の算出には以下の制約があることにご留意ください:
・大学の偏差値は学部により異なりますが、公表データの制限により平均値を使用しています
・進学先が不明な場合は一定の仮定のもとで計算しています
・単年度のデータに基づいているため、年度による変動があります
大学偏差値データの入手先を探る

進学偏差を求めるにあたり、まずはデータを収集しないとな。
どこからやるの?
とりあえず、大学の偏差値だな。ちょっとGeminiに聞いてみるか。
大学の偏差値は、大学受験の難易度を測る指標の一つであり、受験生が志望校を選択する際の目安となります。偏差値は、模擬試験の成績をもとに算出され、その数値が高いほど難易度が高いとされています。
大学の偏差値を確認する方法としては、以下のものがあります。
大学受験情報サイト:
東進ハイスクール: https://www.toshin.com/
みんなの学校情報: https://www.minkou.jp/
マナビジョン: https://manabi.benesse.ne.jp/
ベスト進学ネット: https://www.best-shingaku.net/
パスナビ: https://passnavi.obunsha.co.jp/
やはり、模擬試験を行っている学習塾等のサイトだよな。国が統一模試とかやってくれると分かりやすいんだけど。まぁ無理か。
どうするの?
う~ん、『みんなの学校情報』さんから取得させてもらいましょう。
どうやって、取得するんだもん?
スクレイピングしてもいいけど、あんまりね。今回は手動でチマチマ取得するか。
検索してコピペしていき、余計な部分を削除していって・・・
college_1.txt愛知医科大学 医学部 偏差値62.5 看護学部 偏差値47.5 青山学院大学 法学部 偏差値57.5 - 60.0 経済学部 偏差値60.0 - 62.5 経営学部 偏差値57.5 文学部 偏差値60.0 - 65.0 国際政治経済学部 偏差値60.0 - 65.0 教育人間科学部 :
こんな感じ。
データ整形への第一歩:Python プログラミング

これをどうするの?
これだと、DBに入れるにしても、プログラムに使うにしても
少し不便なので、フォーマット調整しないとな。
phpでも出来るんだけど、せっかくだからpythonで作ってみるか。
お、ついにやる気になったか!
まずはGeminiに作ってもらおう。
・・・
script_20250204.pyimport sys def convert_to_tsv(input_file, output_file): """ ファイルを読み込み、TSV形式で出力する。 Args: input_file (str): 入力ファイル名。 output_file (str): 出力ファイル名。 """ try: with open(input_file, 'r', encoding='utf-8') as f_in, open(output_file, 'w', encoding='utf-8') as f_out: for line in f_in: # 各行をタブ区切りで出力 f_out.write(line.replace(',', '\t')) # カンマをタブに置換 except FileNotFoundError: print(f"エラー: ファイル '{input_file}' が見つかりません。", file=sys.stderr) except Exception as e: print(f"エラー: 予期せぬエラーが発生しました: {e}", file=sys.stderr) if __name__ == "__main__": if len(sys.argv) != 3: print("使い方: python script_20250204.py <入力ファイル> <出力ファイル>", file=sys.stderr) sys.exit(1) input_file = sys.argv[1] output_file = sys.argv[2] convert_to_tsv(input_file, output_file) print(f"ファイル '{input_file}' を '{output_file}' に変換しました。")
説明はまぁいいか。コピペして実行してみよう。
# python ./script_20250204.py ./college_1.txt ./college_1.tsv
うんうん、実行できたな。ファイルも出来ている。
でも、全く内容が同じだもん。
それはそうだ。
このプログラムはcsvをtsvに変換するものだからね。
これを修正していくぞ。
・・・といってもforループ以下をいじればいいだけだから
そんなに大変じゃないと思うけど。
どうするの?
より使いやすく:データのクリーニングと改良

一応、college_1.txtは大学名の前には必ず空行を入れるようにしている。
で、多分、大学名の下に学部名その下に偏差値、
その下に学部といった感じで続いていく。
つまり?
まず、大学名・学部名を格納する変数を作成する。
で、forループに入ったら大学名が空ならその行を大学名に格納。
大学名が入っていたら学部名を格納。
先頭が「偏差値」なら大学名・学部名・その行をタブ区切りで出力する感じかな。
ん?
まぁ見た方が早いかもな。
script_20250204.py#※ファイルオープン部分までは省略 college=""; gakubu=""; for line in f_in: if ( line ) : if ( college == "" ): college = line elif ( line[0:3] == '偏差値' ): f_out.write(college + "\t" + gakubu + "\t" + line[3:]) else : gakubu = line else : college = "" gakubu = "" #※以下省略
line[0:3]と書けば最初から3番目の文字をとってこれる。
substrとか要らんのか、便利やな。
出力に「偏差値」は要らないのでline[3:]で偏差値以降の文字を取得できる。
ただ、if文の後ろに「:」つけるの忘れてしまう。気をつけんと。
出来たの?
見てみよう。
# python ./script_20250204.py ./college_1.txt ./college_1.tsv
ファイル 'college_1.txt' を 'college_1.tsv' に変換しました。
college_1.tsv愛知医科大学 医学部 62.5 愛知医科大学 看護学部 47.5 愛知医科大学 法学部 57.5 - 60.0 :
なんか変だもん。
あ~改行の処理忘れているな。初心者みたいだ。
いや、初心者みたいなもんだろ。
なんかstripというメソッドがあるみたい。
使ってみよう。出力の最後に改行入れるもの忘れずに、と。
script_20250204.py#※ファイルオープン部分までは省略 college=""; gakubu=""; for line in f_in: line = line.strip() #改行を取り除く if ( line ) : if ( college == "" ): college = line elif ( line[0:3] == '偏差値' ): f_out.write(college + "\t" + gakubu + "\t" + line[3:] + "\n") #改行つける else : gakubu = line else : college = "" gakubu = "" #※以下省略
# python ./script_20250204.py ./college_1.txt ./college_1.tsv
ファイル 'college_1.txt' を 'college_1.tsv' に変換しました。
college_1.tsv愛知医科大学 医学部 62.5 愛知医科大学 看護学部 47.5 青山学院大学 法学部 57.5 - 60.0 青山学院大学 経済学部 60.0 - 62.5 青山学院大学 経営学部 57.5 青山学院大学 文学部 60.0 - 65.0 青山学院大学 国際政治経済学部 60.0 - 65.0 青山学院大学 教育人間科学部 60.0 青山学院大学 総合文化政策学部 60.0 青山学院大学 地球社会共生学部 57.5 青山学院大学 コミュニティ人間科学部 57.5 青山学院大学 理工学部 55.0 - 57.5 :
おお!出来た!
ただ、レンジを持っている偏差値もあるから平均値を入れたいので、さらに調整。
同様に実行するとこんな感じ。
ハイフンがなくなった!
レンジ表記のものは平均をとったので、これで大学・学部・偏差値の形になった。
出来たもん!
最終調整:学部別データの統合と特殊ケースの処理

いや~。まだなんだな、これが。
高校の進学実績には学部が入っていないケースがほとんど。
だから大学ごとの平均をとる。
このtsv使いたいので別プログラムにしよう。
本当は学部ごとの人数考慮しないといけないけど、さすがにきついので単純な平均にします。
今回はtry構文は省いてシンプルにしました。
これってどういうプログラムなの?
各大学の偏差値の平均を出しているんだ。
ただし、医学部は平均から除外。
偏差値上がっちゃうからね。
進学実績でも医学部は別扱いになっているし。
後、歯学部・薬学部・法学部あたりも個別で出しています。
ただし、これらは平均の計算には入れている。
なるほど!
割り算が「//」なのはびっくり。
あとインクリメントも「++」ではなくて「+=1」のようにしないとダメだな。
インクリメントはVBとかは「++」表記できないので、
何となく理解できましたが、割り算のこの書き方は見たことない。。
# python ./script_20250204_2.py ./college_1.tsv ./college_1_2.tsv
ファイル 'college_1.tsv' を 'college_1_2.tsv' に変換しました。
college_1_2.tsv愛知医科大学 医学部 62.5 愛知医科大学 不明 47.0 青山学院大学 不明 59.0 麻布大学 不明 51.0 岩手医科大学 医学部 61.25 岩手医科大学 歯学部 35.0 岩手医科大学 薬学部 35.0 岩手医科大学 不明 35.0 大阪医科薬科大学 薬学部 47.5 大阪医科薬科大学 医学部 67.5 大阪医科薬科大学 不明 50.0 岡山理科大学 不明 35.0 金沢医科大学 医学部 62.5 金沢医科大学 不明 40.0 :
これでデータ完成だもん!
大学の分がな。次は高校のデータを作らねば。。