目次
検証データ
CCNAの勉強をしていたときの模擬試験結果
実際のデータにはヘッダー項目がないが、なんのデータかわかりにくいのでつけておいた
No | レベル | 日付 | 出題方式 | 正解率 | 出題数 | 正解数 |
---|---|---|---|---|---|---|
25 | 26 | 2020/12/11 21:42 | 模擬試験 | 83% | 102 | 85 |
24 | 25 | 2020/12/10 20:43 | 模擬試験 | 93% | 102 | 95 |
23 | 23 | 2020/12/9 20:35 | 模擬試験 | 83% | 102 | 85 |
22 | 21 | 2020/12/8 20:25 | 模擬試験 | 81% | 102 | 83 |
21 | 20 | 2020/12/7 21:03 | 模擬試験 | 88% | 102 | 90 |
20 | 19 | 2020/12/5 21:59 | 模擬試験 | 73% | 102 | 75 |
17 | 19 | 2020/12/3 21:22 | 模擬試験 | 74% | 102 | 76 |
13 | 19 | 2020/12/2 20:59 | 模擬試験 | 79% | 102 | 81 |
11 | 18 | 2020/12/1 21:29 | 模擬試験 | 76% | 102 | 78 |
9 | 18 | 2020/11/21 21:49 | 模擬試験 | 80% | 102 | 82 |
7 | 18 | 2020/11/15 12:40 | 模擬試験 | 84% | 102 | 86 |
5 | 16 | 2020/11/14 19:32 | 模擬試験 | 80% | 102 | 82 |
25 | 14 | 2020/11/8 16:12 | 模擬試験 | 79% | 102 | 81 |
24 | 14 | 2020/11/8 14:37 | 模擬試験 | 83% | 102 | 85 |
プログラムの流れ
1.CSVを読み込み、整形する
本題ではないのでさらっと行く
- グラフの乗車にはmatplotlibモジュールを用いる
- CSVの読み込みには前回pandasを用いたが、今回はCSVに何か手を加えるわけではないのと別の方法も覚えておきたいのでcsvライブラリで読み込む
# csvファイルをオープン
# 今回使うのは正解率のデータなので要素[6]だけ取得して、リストに収めていく
with open('D:\list.csv', 'r') as f:
csv = csv.reader(f)
correct_answers = []
for record in csv:
correct_answers.append(int(record[4][:-1]))
# 受験した順に並びなおす(最初からInsertでリストに追加していれば必要なかったね)
correct_answers.reverse()
# x軸とy軸のデータ準備
x = list(range(1, len(correct_answers)+1))
y = correct_answers
ちなみにxとyを出力するとこんな内容
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
y = [85, 81, 82, 86, 82, 78, 81, 76, 75, 90, 83, 85, 95, 85]
2.棒グラフの描写
今回は棒グラフを描写するのでbar関数を使う
これだけでもグラフは出力されるが、もう少し情報を追加していく
plt.bar(x, y)
plt.show()
3.グラフに情報を追加する
plt.bar(x, y)
# 合格ラインの表示
plt.hlines(75, 0, 15, "red", linestyles='dashed')
plt.legend(["合格ライン(75%)"], prop={"family":"MS Gothic"})
# z軸とy軸にラベル表示
plt.xlabel('受験回数', fontname="MS Gothic")
plt.ylabel('正解率', fontname="MS Gothic")
# y軸の描写範囲指定
plt.ylim([0,100])
# y軸のメモリ設定
plt.yticks(range(0, 100, 10))
plt.show()
最終的に
from matplotlib import pyplot as plt
import csv
# csvファイルをオープン
# 今回使うのは正解率のデータなので要素[4]だけ取得して、リストに収めていく
with open('D:\list.csv', 'r') as f:
csv = csv.reader(f)
correct_answers = []
for record in csv:
correct_answers.append(int(record[6]))
# 受験した順に並びなおす(最初からInsertでリストに追加していれば必要なかったね)
correct_answers.reverse()
# x軸とy軸のデータ準備
x = list(range(1, len(correct_answers) + 1))
y = correct_answers
plt.bar(x, y)
# 合格ラインの表示
plt.hlines(75, 0, 15, "red", linestyles='dashed')
plt.legend(["合格ライン(75%)"], prop={"family":"MS Gothic"})
# z軸とy軸にラベル表示
plt.xlabel('受験回数', fontname="MS Gothic")
plt.ylabel('正解率', fontname="MS Gothic")
# y軸の描写範囲指定
plt.ylim([0,100])
# y軸のメモリ設定
plt.yticks(range(0, 100, 10))
plt.show()