はじめに
セルフ夏期講習の1日目として、Pandas 100本ノックの1問目から100問目まで取り組んだ。
今回の回答コードはGitHubで公開している。
成果
- Pandas基礎(1〜13)
- データ抽出(14〜32)
- データ加工(33〜58)
- マージと連結(59〜65)
- 統計(66〜79)
- ラベリング(80〜81)
- Pandasプロット(82〜89)
- タイタニック号の生存者予測(90〜100)
かかった時間
| 内容 | おおよその所要時間 | メモ |
|---|---|---|
| Pandas基礎(1〜13)、データ抽出(14〜32) | 約2時間 | 基礎的な部分が中心 |
| データ加工(33〜58) | 約1時間40分 | 欠損値処理や文字列操作など |
| マージと連結(59〜65) | 10分 |
pd.mergeによる左・右・内部・外部結合と、pd.concatによる連結 |
| 統計(66〜79) | 約1時間 | 集計、統計量、標準化、正規化など |
| ラベリング(80〜81) | 10分 | 結構難しく感じた |
| Pandasプロット(82〜89)、タイタニック号の生存者予測(90〜100) | 約1時間15分 | 可視化から機械学習まで |
休憩時間も含む大まかな記録ではあるが、全体では約5時間30分かかった。
今日行ったこと
主に次の操作を復習した。
- DataFrameの読み込みと基本情報の確認
- 行・列の抽出
- 条件を指定したデータ抽出
- 欠損値や重複データの処理
- 文字列操作
- DataFrameの結合
- 集計と統計量の確認
- 標準化、正規化、ラベルエンコーディング
- グラフによる可視化
- Random Forestを用いたTitanic生存予測
学んだこと
locとilocの使い分け、欠損値の補完、mergeとconcatによるデータ結合など、Pandasで頻繁に利用する操作を一通り確認できた。
基礎的な部分が多いため、まずは「こういうもの」と理解して手を動かすことが、身につけるための早道かもしれない。
後半では、前処理したデータをscikit-learnへ渡し、モデルの学習、予測、正解率の計算、特徴量重要度の確認まで行った。Pandasの操作が、機械学習の前処理にどのようにつながるのかも確認できた。
特に重要だと感じたのは、次の3点である。
- Pandasだけでも手軽にプロットを作成できること
- 機械学習の処理を簡潔なコードで記述できること
- クラスから生成した「インスタンス」を通して処理を行うという考え方を知れたこと
これらを今回の大きな成果と捉えたい。
感想
100問を一度に進めたことで、個々のメソッドを覚えるだけでなく、データの読み込みから前処理、可視化、機械学習までの流れを復習できた。
一方で、答えを見れば理解できても、自分だけで書こうとすると迷う操作が残っている。特にデータ結合、欠損値処理、エンコーディングについては、今後の演習でも意識して使いたい。
次回
8月9日はPolars 100本ノックに取り組む。Pandasとの書き方や考え方の違いにも注目する。