Open3

「Python実践データ分析100本ノック 第2版」を解き進めた際のメモ

こなんこなん

朝練

  • Google Colaboratoryが便利、、
  • Google Drive内のデータへのアクセスが楽だな
  • しかもGeminiがあるからほとんど補完してくれる
  • 本書はサンプルプログラムも備わっていて初速が速くなるのは勉強を始めるのに良い
こなんこなん

第1部

第1章

  • まずはデータの全体像を把握する。主軸となるデータは最も粒度が細かいデータになる。

第2章

  • boolのリストによるマスク(ブーリアンインデックス)

    fig_is_null = uriage_data["item_price"].isnull()
    uriage_data.loc[~fig_is_null]
    

    ⇒ これでuriage_dataからitem_pricenullの要素は除れる

  • locでの特定カラムの抜き出し方法

    uriage_data.loc[uriage_data["item_name"]==trg]["item_price"]
    uriage_data.loc[uriage_data["item_name"]==trg, "item_price"]
    

    ⇒ 下記は同じ意味だが本書ではどちらも出てくる

第3章

  • groupbyをAのように書いてあるがBの方が適切ではないのか?
    なぜなら集計するカラムを限定させた方がコードとしても分かりやすいし処理も速いのではないか?
    A: uselog_weekday = uselog.groupby(["customer_id", "年月", "weekday"], as_index=False).count()[["customer_id", "年月", "weekday", "log_id"]]
    B: uselog_weekday = uselog.groupby(["customer_id", "年月", "weekday"], as_index=False)["log_id"].count()
    

※正誤

第1章 ノック8の3つ目のコード
誤: join_data.groupby("payment_month").sum()["price"]
正: join_data.groupby("payment_month")["price"].sum()
第1章 ノック9の1つ目のコード
誤: join_data.groupby(["payment_month","item_name"]).sum()[["price", "quantity"]]
正: join_data.groupby(["payment_month","item_name"])[["price", "quantity"]].sum()
こなんこなん

第2部

第4章

  • クラスタリング
    • 重要なポイントは、クラスタリングの結果をそのまま鵜呑みにするのではなく、各クラスタの特徴を解釈し、理解するための追加の分析や専門知識が必要であるということです。
    • クラスタリングはデータのパターンを発見するための出発点であり、その結果を適切に解釈し、活用するためには人間の分析と判断が不可欠です。
  • 次元削除
    • 情報をなるべく失わないように変数を削除して新しい軸を作り出すこと
    • これにより5つの変数を2つの変数で表現することができ、グラフ化することが可能になる
    • 次元削除の代表的な指標である主成分分析
  • モデルに寄与する変数の調査
    • どの変数がどの程度、結果に寄与しているかを出力することができる

第4章

  • ダミー変数化
    • カテゴリカル変数をTRUEFALSEにフラグ化すること
  • 過学習傾向
    • 学習用データの精度の方が、評価用データを用いた予測精度より高くなること
    • データを増やしたり、変数を見直したり、モデルのパラメーターを変更したり

※正誤

第3章
誤: uselog_customer = uselog_months.groupby("customer_id").agg(["mean", "median", "max", "min" ])["count"]
正: uselog_customer = uselog_months.groupby("customer_id")["count"].agg(["mean", "median", "max", "min" ])