コンテンツにスキップ

3 データ分析と可視化

データ分析と可視化のメインビジュアル

第 3 章の目的は 1 つです。乱れたデータを、再現できるコードとグラフに支えられた、信頼できる結論に変えることです。

データ分析のメインループ

先に図を見てください。役に立つ分析の多くは、この流れです。

読み込む確認する整える集計する可視化する説明する

最初からグラフを描かないでください。まずフィールド、単位、欠損値、重複、サンプルの出所を確認します。

このチェックリストを、本章の学習ガイド兼タスクリストとして使います。各ステップで、データの出所、変化、結論の根拠を説明できるようにします。

  1. 3.1.1 純粋な Python データ処理 手を動かすこと:list と dict で小さな表を処理する。 残す証拠:純粋な Python で表処理がつらくなる理由のメモ。

  2. 3.2.1 NumPy 概要 から 3.2.7 乱数と統計 手を動かすこと:配列、shape、スライス、ブロードキャスト、ベクトル化を練習する。 残す証拠:NumPy 練習ファイル。

  3. 3.3.1 Pandas の中心構造 から 3.3.8 時系列 手を動かすこと:表を読み、欠損を処理し、groupby、merge、書き出しを行う。 残す証拠:クリーニング済みデータとログ。

  4. 3.4.1 Matplotlib から 3.4.4 可視化ベストプラクティス 手を動かすこと:明確な質問に答えるグラフを描く。 残す証拠:3 つのグラフと、それぞれ 1 つの結論。

  5. 3.5.1 関係データベース から 3.5.4 データベース設計 手を動かすこと:SQL で実データを絞り込み、集計し、結合する。 残す証拠:クエリまたは join の例。

  6. 3.6.1 EDA プロジェクト3.6.3 ハンズオンワークショップ 手を動かすこと:再現可能なデータパイプラインとレポートを作る。 残す証拠:元データ、整形済みデータ、グラフ、レポート、README。

本章でよく使う用語:

用語意味
CSV各行が 1 件のレコードになるプレーンテキスト表
DataFrame行、列、名前、インデックスを持つ Pandas の表
SeriesDataFrame の 1 列
dtype列や配列のデータ型
EDAExploratory Data Analysis:モデリング前の探索的データ分析
groupbyカテゴリで分け、統計量を計算し、結果をまとめる操作
merge / join共通キーで複数の表を結合する操作

まず 2 つのパッケージを入れます。

Terminal window
python -m pip install pandas matplotlib

空の練習フォルダで次のスクリプトを実行します。汚れたデータを作り、整え、集計し、グラフを保存します。

from io import StringIO
import pandas as pd
import matplotlib.pyplot as plt
raw = StringIO("""topic,minutes
Python,45
Pandas,30
Python,45
Visualization,
Pandas,300
""")
df = pd.read_csv(raw)
print("クリーニング前")
print(df)
clean_df = df.drop_duplicates()
clean_df["minutes"] = clean_df["minutes"].fillna(clean_df["minutes"].median())
clean_df = clean_df[clean_df["minutes"] <= 180]
summary = clean_df.groupby("topic")["minutes"].sum().sort_values(ascending=False)
print("\nクリーニング後")
print(summary)
summary.plot(kind="bar", title="トピック別の学習分数")
plt.ylabel("")
plt.tight_layout()
plt.savefig("topic_minutes.png")
print("\nグラフを保存しました: topic_minutes.png")

期待される形:

クリーニング前
...
クリーニング後
topic
Python 45.0
Visualization ...
グラフを保存しました: topic_minutes.png

合格ラインは「グラフがきれい」ではありません。どの行を変えたか、なぜ変えたか、結論にどう影響するかを説明できることです。

  • クリーニング前 は、重複、欠損値、外れ値を含む生の証拠です。
  • クリーニング後 は、実際に分析に使う変換後の表です。
  • topic_minutes.png はレポート成果物なので、それを生成したスクリプトと一緒に残します。
  • 別のクリーニング規則で結論が変わるなら、その変化を隠さず記録します。
レベル証明できること
最低合格表を読み、shape・型・欠損値を確認し、明らかな問題を整え、グラフを 1 つ保存できる。
プロジェクト利用可レポートに、問い、クリーニング規則、集計表、グラフ、結論、限界、再実行コマンドがある。
深い確認別のクリーニング規則で結論が変わるかを試し、リークやサンプリング偏りを見つけ、グラフ種類が問いに合う理由を説明できる。

このページを終えたら、この evidence card を残します。

データソース
生レコードまたは使用した小規模データセット
処理ステップ
純 Python、NumPy、Pandas、可視化、または SQL の操作
出力
cleaned data、statistic、chart、query result、またはreport note
失敗確認
データ不足、形状不一致、誤った集計、または不明確な質問
期待される成果
信頼性を支える証拠があるデータアーティファクト
症状最初に確認することよくある修正
グラフはきれいだが結論が弱い先に質問を書いたかグラフの前に質問を書く
groupby の結果がおかしい空白、別名、大文字小文字の違いunique() を表示してカテゴリを統一する
欠損値で結論が変わるどの行と列が欠損しているか削除、補完、保持のルールを記録する
相関が完璧すぎる時間、規模、リーク、サンプリング偏りグループ比較を行い、限界を書く
Notebook を再実行できないデータパス、依存関係、実行順再起動して上から下へ実行する

次の 5 つに答えられたら、第 4 章へ進めます。

  • 各列は何を表し、単位は何ですか?
  • どのクリーニングルールがデータを変えましたか?
  • 各グラフは何の質問に答えていますか?
  • どの結論はデータに支えられ、どこはまだ不確かですか?
  • 他の人が README を見て分析を再実行できますか?

印刷用のチェックリストが必要なときは、3.0 学習ガイドとタスクリスト を使ってください。次の章では、このデータ感覚を使って確率、ベクトル、勾配、モデル評価を理解します。

確認の考え方と解説
  • この 5 つの通過チェックは、ばらばらの標語ではなく小さなデータストーリーとして答えます。
  • 十分な答えには、列名と単位、行や値を変えたクリーニングルール、各グラフが答える明確な質問、データで支えられる結論と不確かな点、他人が再実行できる README が含まれます。
  • 表、グラフ、コマンド出力ではなく記憶に頼っている答えがあるなら、証拠パックはまだ完成していません。