Python 3 エンジニア認定データ分析試験 チートシート
はじめに
データ分析に関する資格は多岐にわたりますが、代表的なものの 1 つとして、Python 3 エンジニア認定データ分析試験があります。
合格率は 81.5 % と難易度は高くありませんが、合格基準は 70 % 以上となっており、Python の使用経験や行列計算の扱いに慣れておくことが必要です。
とはいえ問題自体は指定の教材から出題されるので、事前に要点を押えておけば、合格可能な試験だと言えます。
本ブログでは、Python 3 エンジニア認定データ分析試験の受験にあたって、試験直前のチートシートを作成してみました。
試験のための十分な勉強時間が取れずに当日を迎えてしまった方に、お役に立てると幸いです!
試験概要
下記の公式サイトを参照ください。
主教材
- 第 2 版(2022/10/24 発売)
- 第 3 版(2025/05/21 発売)
・・・本ブログは「第 3 版」の内容を基に記載します。
出題内容
合計 40 問が出題されますが、出題範囲と出題率が具体的に定められているので、対策しやすいですね。
項目 | 問題数 | 出題率 | 累積出題率 |
---|---|---|---|
データエンジニアの役割 | 2 | 5.0 % | 5.0 % |
実行環境構築 | 1 | 2.5 % | 7.5 % |
Pythonの基礎 | 3 | 7.5 % | 15.0 % |
Jupyter Notebook | 1 | 2.5 % | 17.5 % |
数式を読むための基礎知識 | 1 | 2.5 % | 20.0 % |
線形代数 | 2 | 5.0 % | 25.0 % |
基礎解析 | 1 | 2.5 % | 27.5 % |
確率と統計 | 2 | 5.0 % | 32.5 % |
NumPy | 6 | 15.0 % | 47.5 % |
pandas | 7 | 17.5 % | 65.0 % |
Matplotlib | 6 | 15.0 % | 80.0 % |
scikit-learn | 8 | 20.0 % | 100.0 % |
NumPy, pandas, Matplotlib, scikit-learn に関する問題だけで全体の 67.5 % を占めている点は重要です。これらの項目は覚えることが明確なので、しっかり身につけて得点源にする必要があります。
チートシート
試験直前の対策として有効なのは、「知っていれば解ける」という性質の問題なので、知識に関する問題に対応できるものを中心に、出題率が高いものから順に整理しました。
1. scikit-learn [8問, 20.0%]
- 目的: 深層学習以外の機械学習のデファクトスタンダードライブラリ。
-
統一インターフェース: モデルの学習は
fit
メソッド、予測はpredict
メソッド。前処理ではfit_transform
も使用。-
前処理: 機械学習アルゴリズム適用前にデータを整える重要な工程 (8-9割を占める)。
-
欠損値への対応:
- 除去:
DataFrame.dropna()
(pandas)。 - 補完:
sklearn.impute.SimpleImputer
クラス。strategy
引数でmean
(平均値)、median
(中央値)、most_frequent
(最頻値)、constant
(定数値) を指定。
- 除去:
-
カテゴリ変数のエンコーディング:
-
LabelEncoder: カテゴリ変数を数値 (整数) に変換 (
sklearn.preprocessing.LabelEncoder
)。 -
One-hot エンコーディング: カテゴリ変数を複数列のバイナリデータ (0/1) に展開。
sklearn.preprocessing.OneHotEncoder
またはpandas.get_dummies
(より使いやすい)。
-
LabelEncoder: カテゴリ変数を数値 (整数) に変換 (
-
特徴量の正規化: 特徴量の大きさを揃える処理。
-
分散正規化 (StandardScaler): 平均0、標準偏差1に変換 (
(x - μ) / σ
)。 -
最小最大正規化 (MinMaxScaler): 最小値0、最大値1に変換 (
(x - xmin) / (xmax - xmin)
)。
-
分散正規化 (StandardScaler): 平均0、標準偏差1に変換 (
-
欠損値への対応:
-
分類: データの「クラス」を予測して分けるタスク (教師あり学習)。
-
データ分割:
sklearn.model_selection.train_test_split(X, y, test_size=0.X, random_state=Y)
で学習用とテスト用に分割。 -
サポートベクタマシン (SVM):
sklearn.svm.SVC
。直線や平面で分離できないデータを高次元空間に写して分類するアルゴリズム。kernel
引数 (例: "rbf") で非線形分離に対応。特徴量の正規化が推奨される。 -
決定木 (Decision Tree):
sklearn.tree.DecisionTreeClassifier
。データを分割するルールを木構造で表現。max_depth
で木の深さを制限。分割の基準は「情報利得」最大化 (不純度を低減)。不純度指標にはジニ不純度など。 -
ランダムフォレスト (Random Forest):
sklearn.ensemble.RandomForestClassifier
。データのサンプルと特徴量をランダムに選択して複数の決定木を構築し、多数決で予測するアンサンブル学習。n_estimators
で決定木の個数を指定。
-
データ分割:
-
回帰: ある値 (目的変数) を他の値 (説明変数/特徴量) で説明するタスク。
-
線形回帰 (Linear Regression):
sklearn.linear_model.LinearRegression
。目的変数を説明変数の1次式で表現。
-
線形回帰 (Linear Regression):
-
次元削減: データが持つ情報を損ねることなく次元を削減し、データを圧縮するタスク。
-
主成分分析 (PCA):
sklearn.decomposition.PCA
。高次元データの分散が大きい方向 (主成分) を探し、新しい次元に変換する。
-
主成分分析 (PCA):
-
モデルの評価: 構築したモデルの良し悪しを評価。
-
カテゴリの分類精度:
- 混同行列 (Confusion Matrix): 予測と実績のクラスラベルの組み合わせを集計した表 (tp, fp, fn, tn)。
-
適合率 (Precision): 正例と予測したデータのうち実際に正例の割合 (
tp / (tp + fp)
)。 -
再現率 (Recall): 実際の正例のうち正例と予測した割合 (
tp / (tp + fn)
)。 -
F値 (F-Value): 適合率と再現率の調和平均 (
2 * (Precision * Recall) / (Precision + Recall)
)。 -
正解率 (Accuracy): 予測と実績が一致したデータの割合 (
(tp + tn) / (tp + fp + fn + tn)
)。 -
sklearn.metrics.classification_report(y_test, y_pred)
でまとめて出力。
-
交差検証 (Cross-validation): データセットを学習用とテスト用に複数回分割・評価。
sklearn.model_selection.cross_val_score(model, X, y, cv=k, scoring="metric")
。層化k分割交差検証がよく用いられる。 -
予測確率の正確さ:
-
ROC曲線 (Receiver Operating Characteristic): 偽陽性率 (FPR) と真陽性率 (TPR) をプロットした曲線。
sklearn.metrics.roc_curve(labels, probs)
で計算。 -
AUC (Area Under the Curve): ROC曲線の下の面積。1に近いほど良いモデル。
sklearn.metrics.roc_auc_score(labels, probs)
で計算。
-
ROC曲線 (Receiver Operating Characteristic): 偽陽性率 (FPR) と真陽性率 (TPR) をプロットした曲線。
-
カテゴリの分類精度:
-
ハイパーパラメータの最適化:
-
グリッドサーチ (Grid Search): 複数のハイパーパラメータ候補の組み合わせをすべて試して最適な値を探索。
sklearn.model_selection.GridSearchCV(model, param_grid={...}, cv=k)
。最適なパラメータはbest_params_
で、最適なモデルはbest_estimator_
で確認。
-
グリッドサーチ (Grid Search): 複数のハイパーパラメータ候補の組み合わせをすべて試して最適な値を探索。
-
クラスタリング: データを類似性に基づいてグループ化するタスク (教師なし学習)。
-
k-means:
sklearn.cluster.KMeans
。指定したクラスタ数 (k) にデータを分割。n_clusters
,init
,n_init
,random_state
引数。 -
階層的クラスタリング (Hierarchical Clustering):
sklearn.cluster.AgglomerativeClustering
(凝集型)。樹形図 (デンドログラム) で可視化 (scipy.cluster.hierarchy.dendrogram
)。
-
k-means:
-
前処理: 機械学習アルゴリズム適用前にデータを整える重要な工程 (8-9割を占める)。
2. pandas [7問, 17.5%]
-
目的: データ分析で最も活用されるツール。NumPyを基盤とし、SeriesとDataFrameを提供する。
-
インポート:
import pandas as pd
。 -
データ構造:
- Series: 1次元データ。
- DataFrame: 2次元の表形式データ。列ごとに異なるデータ型を持つ。
-
DataFrameの概要:
df.head()
,df.tail()
(先頭/末尾の数行表示)。df.shape
(行数、列数)。 -
インデックス名・カラム名:
df.index = [...]
,df.columns = [...]
で設定。pd.DataFrame({...}, columns=[...], index=[...])
で作成時に指定。 -
データの抽出:
- カラム名指定:
df["カラム名"]
,df[["カラム1", "カラム2"]]
。 - 行スライス:
df[:行数]
。 -
loc
インデクサ (ラベルベース):df.loc[行ラベル, 列ラベル]
。 -
iloc
インデクサ (位置ベース):df.iloc[行番号, 列番号]
(0から始まる整数)。
- カラム名指定:
-
データの読み込み・書き込み:
- CSV:
pd.read_csv("ファイル名.csv")
,df.to_csv("ファイル名.csv")
。 - Excel:
pd.read_excel("ファイル名.xlsx")
,df.to_excel("ファイル名.xlsx")
。 - WebサイトのHTMLからの表取得:
pd.read_html("URL")
。 - DataFrameの再利用 (pickle):
df.to_pickle("ファイル名.pickle")
,pd.read_pickle("ファイル名.pickle")
.
- CSV:
-
データの整形:
-
条件抽出:
df[df["カラム"] > 値]
,df.query("条件式")
(SQL構文のように記述). -
データ型変換:
pd.to_datetime(df["日付カラム"])
,df["カラム"].astype(np.float32)
。 -
インデックス設定:
df.set_index("カラム名")
。 -
並べ替え:
df.sort_values(by="カラム名", ascending=False)
(ascending=Falseで降順)。 -
不要なカラムの削除:
df.drop("カラム名", axis=1)
。 -
計算結果の挿入:
df["新カラム"] = df["カラム1"] / df["カラム2"]
。 -
apply
メソッド: SeriesやDataFrameの要素に関数を適用。 -
pd.get_dummies
: One-hotエンコーディングを実行。
-
条件抽出:
-
時系列データ:
-
日付範囲生成:
pd.date_range(start="開始日", end="終了日", freq="頻度")
(freq="D"で日ごと、"ME"で月末、"W-SAT"で土曜日ごとなど)。 -
グルーピングとリサンプリング:
df.groupby(pd.Grouper(freq="ME")).mean()
,df["カラム"].resample("ME").mean()
(月平均など)。
-
日付範囲生成:
-
欠損値処理:
df.dropna()
(欠損値を含む行/列の削除)。df.fillna(値)
(欠損値の補完)。 -
データ連結:
-
pd.concat([df1, df2], axis=1)
(列方向連結)。 -
pd.concat([df1, df2], axis=0)
(行方向連結)。
-
-
統計データの扱い:
-
基本統計量:
max()
,min()
,mode()
,mean()
,median()
,std()
(標準偏差, ddof=1がデフォルト),count()
(件数)。 -
要約統計量:
df.describe()
でまとめて出力 (count, mean, std, min, 25%, 50%, 75%, max)。 -
相関係数:
df.corr(numeric_only=True)
でカラム間の相関係数を計算。 -
散布図行列:
pandas.plotting.scatter_matrix(df)
で各カラム間の散布図とヒストグラムを出力。
-
基本統計量:
-
NumPy配列への変換:
df.values
でDataFrameをNumPyのndarrayに変換。
-
インポート:
3. NumPy [6問, 15.0%]
-
目的: Pythonでの数値計算に特化。多次元配列 (ndarray) を効率よく扱う。
-
インポート:
import numpy as np
。 -
ndarray: NumPyの配列用型。
- 作成:
np.array([リスト])
(1次元) またはnp.array([[リスト]])
(2次元)。
- 作成:
-
属性:
a.shape
(形状),d.dtype
(データ型)。 -
形状変換 (reshape):
c1.reshape((2, 3))
。-
ravel()
: 1次元ビュー (参照) を返す。 -
flatten()
: 1次元コピーを返す。
-
-
データ型変換:
d.astype(np.float16)
。 -
インデックスとスライス: Pythonリストと同様に利用可能。
-
a
(要素取得),a[1:]
(スライス)。 - 2次元配列:
b
,b[:, 2]
,b[1, :]
,b[:,]
。 -
NumPyのスライスは参照を返す点に注意 (
.copy()
で明示的にコピー)。
-
-
数列作成:
np.arange(start, stop, step)
。np.linspace(start, end, num)
(均等割り)。 -
乱数生成:
rng = np.random.default_rng(シード値)
で乱数生成器を初期化。-
rng.random(shape)
: 0以上1未満の浮動小数点数。 -
rng.integers(low, high, size)
: 整数。 -
rng.uniform(low, high, size)
: 一様乱数 (浮動小数点数)。 -
rng.standard_normal(size)
: 標準正規分布に従う乱数。 -
rng.normal(平均, 標準偏差, size)
: 正規分布に従う乱数。
-
-
特殊な配列:
-
np.zeros(shape)
,np.ones(shape)
: 0または1で埋められた配列。 -
np.eye(n)
: 単位行列。 -
np.full(shape, value)
: 指定値で埋められた配列。 -
np.nan
: 欠損値を表す特殊な数値 (Not a Number)。
-
-
配列の操作:
-
np.diff(配列)
: 要素間の差分。 -
np.concatenate([配列1, 配列2], axis=...)
: 連結。 -
np.hstack([配列1, 配列2])
,np.vstack([配列1, 配列2])
: 水平/垂直に連結。 -
np.hsplit(配列, 分割点)
,np.vsplit(配列, 分割点)
: 分割。 -
b.T
: 転置 (行と列の入れ替え)。 -
a[np.newaxis, :]
,a[:, np.newaxis]
: 次元の追加。 -
np.meshgrid(x_coords, y_coords)
: グリッドデータ生成。
-
-
ユニバーサルファンクション (ufuncs): 配列要素を一括変換する強力な機能。
- 例:
np.abs()
,np.sin()
,np.cos()
,np.log()
,np.log10()
,np.exp()
.
- 例:
-
ブロードキャスト: 形状の異なる配列同士で演算を行う。
- 例:
a + 10
,a + b
。
- 例:
-
配列の掛け算 (行列積):
np.dot(a, b)
またはa @ b
。 -
判定・真偽値:
-
a > 1
(ブール配列を返す)。 -
np.count_nonzero(ブール配列)
,np.sum(ブール配列)
(Trueの数をカウント)。 -
np.any(ブール配列)
(一つでもTrueがあるか)。 -
np.all(ブール配列)
(すべてTrueか)。 -
np.allclose(arr1, arr2, atol=...)
(誤差範囲での比較)。
-
-
関数とメソッド:
np.sum(a)
とa.sum()
は同様の動作。
-
インポート:
4. Matplotlib [6問, 15.0%]
-
目的: Pythonで主に2次元のグラフを描画するライブラリ。JupyterLabと親和性が高い。
-
インポート:
import matplotlib.pyplot as plt
,import matplotlib.style
。 -
描画インターフェース:
-
オブジェクト指向インターフェース:
fig, ax = plt.subplots(行数, 列数)
を推奨。fig
(描画オブジェクト),ax
(サブプロット)。
-
オブジェクト指向インターフェース:
-
共通設定:
-
タイトル:
fig.suptitle("全体タイトル")
,ax.set_title("サブプロットタイトル")
。 -
軸ラベル:
ax.set_xlabel("X軸ラベル")
,ax.set_ylabel("Y軸ラベル")
。 -
凡例:
ax.plot(..., label="凡例ラベル")
,ax.legend(loc="best")
。 -
ファイル出力:
fig.savefig("ファイル名.png")
(拡張子で形式を自動判別)。
-
タイトル:
-
グラフの種類:
-
折れ線グラフ:
ax.plot(x, y)
。 -
棒グラフ:
ax.bar(x, y)
(縦),ax.barh(x, y)
(横)。tick_label
で目盛りラベル設定。積み上げ棒グラフはbottom
引数。 -
散布図:
ax.scatter(x, y)
。marker
引数でマーカー形状変更。 -
ヒストグラム:
ax.hist(データ, bins=ビン数)
。orientation="horizontal"
で横向き。stacked=True
で積み上げ。 -
箱ひげ図:
ax.boxplot(データ, tick_labels=...)
。vert=False
で横向き。 -
円グラフ:
ax.pie(データ, labels=...)
。startangle
,counterclock
,shadow
,autopct
(パーセント表示)。explode
で一部を切り出し表示。 - 複数グラフの組み合わせ: 1つのサブプロット上に複数種類のグラフを描画可能。
-
折れ線グラフ:
-
スタイル:
-
色の指定:
color="red"
,"#FF0000"
,(R, G, B, A)
(浮動小数点数)。棒グラフの枠線はedgecolor
。 -
線のスタイル:
linewidth
(線の幅),linestyle
(線の種類:--
破線,-.
一点鎖線,:
点線)。 -
フォント:
family
,size
,weight
(light, boldなど)。fontdict
で辞書形式で一括指定。 -
テキスト描画:
ax.text(x, y, "テキスト")
。 -
グラフ全体のスタイル:
matplotlib.style.use("スタイル名")
(例: "ggplot", "classic", "seaborn-v0_8")。 -
日本語表示:
matplotlib.rcParams["font.family"] = "日本語フォント名"
などで設定が必要。
-
色の指定:
-
pandasオブジェクトからのグラフ描画 (4.3.5):
-
df.plot()
(折れ線グラフ),df.plot.bar()
(棒グラフ) など、DataFrame/Seriesから直接グラフ描画。内部的にはMatplotlibを使用。
-
-
インポート:
5. Pythonの基礎 [3問, 7.5%]
-
文法: コードのブロック構造はインデント (字下げ) で表現する。
-
コーディング規約: PEP 8 に従う。
pycodestyle
,Flake8
,Ruff
などのツールでチェック可能。 -
IPython: 拡張された対話型Python実行環境。TAB補完、マジックコマンド (
%timeit
,%%timeit
),!
(シェルコマンド実行) などの機能。 -
基本構文:
-
条件分岐:
if
,elif
,else
。 -
繰り返し:
for
文。 -
例外処理:
try
,except
。 -
内包表記: リスト、セット、辞書を簡潔に生成 (
[式 for 要素 in イテラブル if 条件]
)。 -
ジェネレーター式: 内包表記の
[]
を()
に変えるとジェネレーターを生成 (メモリ効率が良い)。 -
ファイル入出力:
open()
関数、with
文でファイルの閉じ忘れを防ぐ。 -
文字列操作:
upper()
,lower()
,title()
,replace()
,split()
,strip()
,endswith()
,removeprefix()
,removesuffix()
,isdigit()
,len()
,in
演算子,join()
。 -
f-string (フォーマット済み文字列リテラル): 変数や式を文字列に埋め込む (
f"{変数=}は{式}が好きです"
)。
-
条件分岐:
-
標準ライブラリ:
-
re
モジュール: 正規表現を扱う。 -
logging
モジュール: ログ出力 (DEBUG, INFO, WARNING, ERROR, CRITICALのログレベル)。 -
datetime
モジュール: 日付・時刻処理 (datetime.now()
,date.today()
,strftime()
,strptime()
)。 -
pickle
モジュール: Pythonオブジェクトを直列化 (シリアライズ) し、ファイルに保存・読み込み。 -
pathlib
モジュール: オブジェクト指向でファイルパスを扱う (Path()
,glob()
,exists()
,is_dir()
)。
-
-
コーディング規約: PEP 8 に従う。
6. 線形代数 [2問, 5.0%]
-
ベクトル: 向きと大きさを持つ量。数のまとまり (例:
x ∈ R^n
はn次元実数ベクトル)。
* 演算: 要素ごとの足し算・引き算。
* ノルム (Norm): ベクトルの大きさ。
* L2ノルム (ユークリッド距離): 各要素の2乗の合計の平方根 (sqrt(sum(xi^2))
)。
* L1ノルム (マンハッタン距離): 各要素の絶対値の合計 (sum(|xi|)
)。
* 内積 (Dot Product): 2つのベクトルからスカラーを得る演算 (sum(xi * yi)
)。-
行列: 数を長方形に並べたもの。
-
行列の掛け算: 行と列の積 (
np.dot
または@
演算子)。順序を入れ替えると結果が異なる場合がある。
-
行列の掛け算: 行と列の積 (
- 行列の分解: 行列を複数の行列の積に分解すること (例: 主成分分析での特異値分解)。次元削減やデータ可視化に利用。
-
行列: 数を長方形に並べたもの。
7. 確率と統計 [2問, 5.0%]
-
統計の基礎:
* 代表値: データの全体像を把握する値。
* 最小値 (minimum), 最大値 (maximum)。
* 平均値 (mean): 算術平均 ((1/n) * sum(xi)
)。
* 中央値 (median): データを並べたときの中央の値。
* 最頻値 (mode): 最も頻繁に出現する値。
* 分位数: データを等分する点 (四分位数など)。
* ばらつきの指標: データがどれくらい散らばっているか。
* 四分位範囲 (IQR): 第3四分位数と第1四分位数の差。
* 分散 (variance): 平均値からの差の2乗の平均。
* 標準偏差 (standard deviation): 分散の平方根。不偏分散 (n-1で割る) と標本分散 (nで割る)。
* 度数分布表: データを階級に分け、各階級の度数をまとめた表。-
データの可視化方法:
- ヒストグラム: 度数分布表を棒グラフで表現し、データの分布形状を把握。
- 箱ひげ図 (box plot): データの分布 (中央値、四分位数、外れ値) を視覚化。
- 散布図 (scatter plot): 2種類のデータの関係性を点で示す。
-
データとその関係性:
- 相関係数: 2種類のデータの線形関係を数値で定量化。
-
確率:
- 事象: 起こりうる結果。全事象: 起こりうる事象の全体 (確率は1)。
-
確率分布:
- 正規分布 (ガウス分布): 左右対称の釣り鐘型分布。平均 (μ) と分散 (σ^2) で形が決まる。標準正規分布は平均0、分散1。
- 確率密度関数 (PDF): 連続的な確率変数に対し、ある区間の確率がその関数の積分 (面積) で表される。
- 確率と情報量: 起こる確率が小さい事象ほど情報量が高いと定義。
-
データの可視化方法:
8. データ分析エンジニアの役割 [2問, 5.0%]
-
背景: DX、IoT、オープンデータにより膨大なデータが蓄積。
-
Pythonの役割: データ分析のデファクトスタンダード。
- 特徴: シンプルな言語仕様、動的スクリプト、豊富な標準ライブラリと外部パッケージ、データ分析以外の応用範囲も広い (サーバー、Web、IoT、3Dグラフィックスなど)。
- 苦手分野: Webアプリのフロントエンド、デスクトップGUI、低レイヤー処理、超大規模/ミッションクリティカルな処理。
- 主なデータ分析パッケージ: JupyterLab, NumPy, pandas, Matplotlib, SciPy, scikit-learn。
-
データサイエンティストとデータ分析エンジニア:
- データサイエンティスト: 数学、情報工学、対象分野の専門知識を総合的に持ち、モデル構築、新技術への取り組み、課題解決、分析結果の評価を行う。
- データ分析エンジニア: データ工学を実践する職種。必須技術: データハンドリング (入手・加工)、データ可視化、プログラミング (Python)、インフラレイヤー (環境構築、サーバーサイド、データ基盤)。付加的な技術: 機械学習 (幅広い実行方法)、数学 (高校〜大学初等レベル)、対象分野の専門知識。
- データハンドリング (前処理) の重要性: 機械学習業務の8〜9割を占める重要な工程。データの入手、再加工、結合、可視化、欠損値処理など。
-
機械学習の全体像:
- 機械学習とは: データからコンピュータが自動でルールやパターンを学習すること。
-
機械学習のタスク:
- 教師あり学習 (Supervised Learning): 正解データ (ラベルデータ) が存在する場合 (分類、回帰)。目的変数 (正解データ) と説明変数/特徴量 (目的変数を説明するデータ) を用いる。
- 教師なし学習 (Unsupervised Learning): 正解データがない場合にパターンを見つける (クラスタリング、次元削減)。
- 強化学習 (Reinforcement Learning): エージェントが試行錯誤を通じて学習。
-
機械学習の処理手順:
- データ入手: NumPy, pandas。
- データ加工: NumPy, pandas。
- データ可視化: Matplotlib, pandas。
- アルゴリズム選択: scikit-learn。
- 学習プロセス: scikit-learn (ハイパーパラメータ設定)。
- 精度評価: scikit-learn。
- 試験運用: 未知データでの評価。
- 結果利用: モデルを実業務に導入。
-
Pythonの役割: データ分析のデファクトスタンダード。
9. Jupyter Notebook (JupyterLab) [1問, 2.5%]
-
JupyterLab: Webベースのユーザーインターフェースで、データ分析、可視化、機械学習に広く利用されるツール。Jupyter Notebookの後継。
- 特徴: 1つのNotebookファイル (.ipynb) にプログラムコード、実行結果、ドキュメント (Markdown) をまとめられる。
-
インストール: 仮想環境 (
pydataenv
) にpip install jupyterlab==4.3.5
でインストール。 -
起動: ターミナルで
jupyter lab
コマンドを実行。Webブラウザで開く (デフォルトは8888ポート)。 -
操作: セルにPythonコードを記述し、
Shift + Enter
で実行。 -
便利な機能:
-
マジックコマンド:
%
または%%
から始まるコマンド。例:%timeit
(1行の処理時間計測),%%timeit
(セル全体の処理時間計測)。 -
シェルコマンド実行: セル内で
!コマンド
を入力するとOSのコマンドを実行。 -
ファイルのエクスポート:
File
メニューからHTML、Markdown形式などでダウンロード可能。 -
ファイルアップロード: サイドバーの
Upload Files
ボタンから。 -
終了:
File
メニューからShut Down
を選択。
-
マジックコマンド:
Pythonによるデータ分析の実行環境構築に関するチートシートを、コマンド例を交え、簡潔にまとめます。
10. 実行環境構築 [1問, 2.5%]
-
Python公式版インストール
- PCへのPython実行環境セットアップ。
- WindowsではインストーラーでPATH環境変数への自動追加推奨。macOSではSSLルート証明書使用のための追加コマンド実行。
- インストールされたPythonのバージョン確認。
-
コマンド例:
python -V
-
Python仮想環境
venv
- プロジェクトごとの異なるパッケージバージョン間の競合防止。
- Pythonに標準搭載の仮想環境作成機能。
- 仮想環境の作成、有効化、無効化。不要な仮想環境はディレクトリごと削除してクリーンアップ。
-
コマンド例:
- 作成:
python -m venv [環境名]
- 有効化 (Windows):
[環境名]\Scripts\Activate.ps1
- 有効化 (macOS):
source [環境名]/bin/activate
- 無効化:
deactivate
- 作成:
-
pip
コマンド (パッケージ管理)- Pythonのサードパーティ製パッケージのインストール、アンインストール、管理。PyPI(The Python Package Index)からパッケージを取得。
-
パッケージのインストール:
pip install [パッケージ名]
。特定バージョンのインストールや既存パッケージの最新版への更新も可能。 -
パッケージのアンインストール:
pip uninstall [パッケージ名]
。 - インストール済みパッケージの一覧表示 (
pip list
)や、更新可能なパッケージの確認 (pip list -o
)。 -
requirements.txt
ファイルを利用した、複数環境間でのパッケージとバージョン統一。 -
コマンド例:
- インストール:
pip install numpy
- 特定バージョン:
pip install numpy==2.1.0
- 更新:
pip install -U numpy
- アンインストール:
pip uninstall numpy
- 一覧:
pip list
-
requirements.txt
保存:pip freeze > requirements.txt
-
requirements.txt
インストール:pip install -r requirements.txt
- インストール:
-
Anaconda
- 多くのデータサイエンス用ライブラリ(JupyterLab, NumPy, pandas, Matplotlib, scikit-learnなど)を同梱したPythonディストリビューション。
- 独自の
conda
コマンドによる仮想環境作成とパッケージ管理機能。 -
conda
環境でpip
を併用すると環境破損のリスクがあるため、基本的にconda
コマンドでのパッケージ管理が推奨。
-
JupyterLabとIPython
- JupyterLab: Webブラウザ上でPythonコードの実行、結果参照、ドキュメント作成が可能なデータ分析ツール。JupyterLab起動:
jupyter lab
- IPython: Python標準の対話モードに便利な機能を追加。IPython起動:
ipython
- JupyterLab/IPython環境では、OSの シェルコマンド(
!
)や、Jupyter/IPython独自のマジックコマンド(%
または%%
) の実行が可能。
- JupyterLab: Webブラウザ上でPythonコードの実行、結果参照、ドキュメント作成が可能なデータ分析ツール。JupyterLab起動:
私の勉強方法
-
試験 10 日前 〜 7 日前
教材を購入します。私は紙の本が好みですが、翔泳社のサイトで電子書籍(PDF 版)を購入するのも良いです。PC で PDF 内を文字列検索しながら苦手な項目を効率的に確認できます。最初は教材の第 1 章 〜 4 章をひと通り読みます。無理に暗記する必要はなく、知っている知識と知らない知識を分類する程度の解像度で良いので、流し読みします。第 5 章は試験範囲外なので飛ばして良いです。
-
試験 7 日前 〜 3 日前
模擬問題を解きながら理解に努めます。練習問題としては PRIME STUDY などがあるので、できれば 3 周くらい解いて当日までに 90 % 〜 満点を取れるようにしておきます。1 回目の時点で 70 % 取れていなくても問題ありません。 -
試験 3 日前 〜 当日
チートシートの内容を確認しながら、具体的な問題と解答が頭に浮かぶようになっていれば OK です。
おわりに
試験に先立って統計検定 2 級, G 検定, DS 検定を取得していたので、数学・統計・機械学習の基礎知識はありました。ただ Python は、4 ~ 5 年ほど前に競技プログラミング(AtCoder)で遊んでいた程度で、機械学習に関するライブラリの使用経験はありませんでした。
ですが実際に勉強してみると、思いのほか簡単にアルゴリズムを実装できることが分かり、実践に対する心理的なハードルも下がったように思います。
Python 3 エンジニア認定データ分析試験は、合格率も高く、試験範囲も明示されているので、決して難しい試験ではありません。気軽にデータ分析のリテラシーを身につけるのには最適な試験なので、興味がある方は受験してみることをおすすめします!
Discussion