Pandas User Guideを読んでみた #2


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

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


Pandas User Guideを読んでみた #1 はこちらをご参照ください。


■本日の進捗

●Pandas User Guideを勉強

■10 minutes to pandas

前回の続きから学んでいきます。

●データの選択

この項目、下記の注釈から始まります。(#selection

While standard Python / NumPy expressions for selecting and setting are intuitive and come in handy for interactive work, for production code, we recommend the optimized pandas data access methods, DataFrame.at()DataFrame.iat()DataFrame.loc() and DataFrame.iloc().

標準的なPythonやNumPyは直感的でデータを選択や設定したりするのに便利なんだけど、実務的にコードを書くならPandasのデータアクセスメソッドを使った方がいいっすよ?

つまりデータ操作(前処理と言った方が適切?)にはPandasを使った方がいいよってことだと解釈しました。
なお、ChatGPT大先生によると、

https://chatgpt.com

言語化すごい…
いまいち咀嚼できない事象があるなら今すぐこの記事もGoogle検索も閉じて大先生に聞いた方が早いですね。

要はデータを並べて理解して、前処理のために取捨選択したり変換したりはPandasで行うのがよくて、そのデータを使って数値計算するときはNumPyでやったら良いよってことですね。

●データ作成

df.locについて少し思うところがあったので検証してみました。

まず素直にUser Guideの通りにdf.locを実行すると下記のようになる。

ただ、D列に5を代入すれば全て5に入るんじゃないか?と思いました。
NumPy配列を作成することによって何か他の処理をするなら別だが、これではただ単に処理が重くなるのではないかと理解しきれなかった。
試した結果が下記の通り

なんか怒られました。
「それ、将来的にはダメにするかもだから配列にしてから代入して!」って言われてます。でもPandasさん優しいのでさっきと同じ結果を返してくれています。

ちなみに想定通りデータ型も変わらなかった。

まあ、こういう横着はやめておいた方がいいんでしょうね…

●欠損データを除外する

DataFrameの中に欠損データがある場合、それを簡単に除外することができる。
他の分野ではどうか分からないが、科学計算や実験においては非常に重要な操作になる。

User Guide通りに実行すると下記の通り

ほぼ消えた。
引数howには2通りの指定ができて、anyとallがあるらしい。

  • anyはどこか1つでもNaNがあればその行または列を削除する
  • allはすべての要素がNaNである行または列を削除する

ジャパニーズ的にはallでほとんど消えないのは違和感があるかもしれないが、「どう(how)いう時に消す?」という引数だと思えば理解しやすい。

●DataFrameのMerge

#concatの項目に下記の注意書きがあった。

Adding a column to a DataFrame is relatively fast. However, adding a row requires a copy, and may be expensive. We recommend passing a pre-built list of records to the DataFrame constructor instead of building a DataFrame by iteratively appending records to it.

DataFrameに列を追加するのは比較的早いけど、列を追加するのにはcopyが必要になるのでコストがかかるんよ。だから予めリスト化してからDataFrameを作った方がいいよ。って言ってます。

DataFrameの再構築は無駄に重くなるので、データ量が大規模なものに関しては行はfor文などで追加していくのはやめて、(せめてインデックスは)全てのデータを構築してからDataFrameを構築するようにしましょう。

■おわりに

次回、Pandas3日目、10 minutes to pandas ようやく半分です。
あれ?何分経った…?

■参考文献

  1. pandas user guide – pandas v2.2.2 documentation. pandas.pydata.org. 2024. https://pandas.pydata.org/docs/user_guide/index.html
  2. ChatGPT. 4o mini. OpenAI. 2024.
    https://chatgpt.com/

コメントを残す

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