Pandas User Guideを読んでみた #1


AIって結局何なのかよく分からないので、とりあえず100日間勉強してみた Day3

経緯についてはこちらをご参照ください。

■本日の進捗

●Pandas User Guideを勉強

■Pandasとは何か

昨晩のNumPyに続き、Pandasについて学んでいきたいと思います。

”pandasは、データを変換したり解析したりするためのライブラリだ。このライブラリは、RのDataFrameを模して作られた、DataFrameというデータ構造を中心に構成されている。”

Andreas C. Muller, Sarah Guido. Pythonではじめる機械学習. 中田 秀基 訳. オライリー・ジャパン. 2017. 392p.

なお、著者は「Pythonによるデータ分析入門」(オライリー・ジャパン)を勧めているが、この世は無料で学べる素晴らしいコンテンツが一生かけても学び切れない程に揃っているので、今回も我流でPandas User Guideから学んでいきたいと思います。(すみません、言い訳です。追加で600ページの本を勉強する体力がないだけです…)

時間や体力に余裕がある方は是非読んでみてください


Pandasの何がいいのか

Pandas は、データ操作や分析を効率的に行うために設計されたPythonライブラリで、1次元と2次元のデータ構造を扱うことができる。フィルタリングやグループ化、集計、欠損処理など基本的な機能を備えている他、SQL(よく知らないんですが、その手の界隈ではかなり有名で人気の言語らしいです。)を含む多彩なフォーマットに対応している。なおかつNumPyの時と同様に、その処理の多くがC言語ベースで実装されているため、大規模データを高速に処理ができる。Pythonのループより高速なベクトル化演算にも対応しているので、データを効率的に処理できる。

■10 minutes to pandas

Pandas User Guide には早速こう記述がある。

Users brand-new to pandas should start with 10 minutes to pandas.

For a high level summary of the pandas fundamentals, see Intro to data structures and Essential basic functionality.

ブランニューなユーザーは「10 minutes to pandas」から始めたら良いんじゃん?
「Intro to data structures」と「Essential basic functionality」もよくまとまってるから見てみたら?

自分は明らかにブランニューなユーザー(まだユーザーですらないですが…)なので「10 minutes to pandas」から取り組んでいこうと思います。ちなみに後者の2つはざっと見た感じかなりボリュームがありそうなので今すぐ手をつけるかは悩み中です。だって早くscikit-learnに行きたいんだもん…
まあ、後々隙間時間に読み進めていきます。

前準備、データ入れてるだけです。



●DataFrame.to_numpy()

DataFrame に複数の異なるデータ型(例えば、整数、浮動小数点数、文字列など)が含まれている場合、to_numpy() メソッドで変換すると、NumPy 配列はすべてのデータを扱うために最も一般的な型である「オブジェクト型(object)」になる。

つまりPandasをNumPyに変換することはできるけど、一つのDataFrameに豊富なデータ型を格納できるPandasに対して、NumPyは基本的に単一のデータ型しか認めないので、汎用性の高いオブジェクト型にしちゃうよということです。
VBAで言うところのVariant型に似てるんですかね?知らんけど。

●DataFrame.describe()でデータのサマリーが見れる

めちゃめちゃさらっと書いてあるけどめっちゃ便利じゃんと思ったので言及してみました。もはやこれだけでLinuxユーザーで普段Excel使ってる人(僕だけ?)はちょっとした分析ならもうこれで良くね?って思うレベルで簡単です。

●DataFrame.sort_indexについて

省略せずに書くと下記の通り
DataFrame.sort_index(axis=0, level=None, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)

axis:
ソートの軸の選択。
0 は行(インデックス)、1 は列(カラム)をソート。デフォルトは 0。

level:
マルチインデックスがある場合、特定のレベルでソート可能。
マルチインデックスとはインデックス自体に複数の階層があるような状態のことで、下記のような挙動をします。

ascending:
昇順 (True) または降順 (False) を指定。デフォルトはTrue。

inplace:
True にすると元の DataFrame が変更され、新しい DataFrame は返されない。つまり取り扱い注意ということ。デフォルトはもちろんFalse。

kind:
ソートのアルゴリズムを指定。’quicksort’、’mergesort’、’heapsort’ から選べる。デフォルトは’quicksort’。

na_position:
NaN の位置を指定。’last’ または ‘first’ から選べる。デフォルトは’last’。

●特定の値でソートも可能

B列でソートした例



■おわりに

今日はここまでです。絶望的に進んでないんですが、User Guide(10 minutes to pandas)はかなり簡素に書いてあるので某F1チーム御用達と巷で話題の某CascadeのUser Guideみがあるのですが、さすがは超大人気のPandas、疑問に思ったところのリンクをぽちっとするとボリュームたっぷりのリファレンスに飛んでくれて一切詰まることがありませんでした。おかげさまで10 minutesで1項目も進んでないのですが、割と理解は進んでるかなという感じです。

あれ、気づいたら勉強時間のほとんどでAPI Reference読んでた…

■参考文献

  1. Andreas C. Muller, Sarah Guido. Pythonではじめる機械学習. 中田 秀基 訳. オライリー・ジャパン. 2017. 392p.
  2. pandas user guide – pandas v2.2.2 documentation. pandas.pydata.org. 2024. https://pandas.pydata.org/docs/user_guide/index.html
  3. ChatGPT. 4o mini. OpenAI. 2024.
    https://chatgpt.com/


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です