今回はZeroDivisionErrorについてです。
どんな時に起こるのか
ZeroDivisionErrorは、文字通りゼロ(0)で割ろうとして起きるエラーです。例えば以下のような場合に起きます。
a = 1 / 0
>>
ZeroDivisionError: division by zero
数値を0で割るという概念は数学的に存在しえず、プログラム上でこのように0で割ろうとするとエラーが返されます。
基本的には演算する際に0で除算するケースを避けるようにプログラムを組むのが対策になります。
上記例のようにプログラム上で決め打ちでx / 0と記述することはまずないと思います。以下のようなケースで起こりがちなので、注意してください。
値を変数に入れて除算する場合
大体ZeroDivisionErrorが起こるのはこのケースだと思います。
変数にどのような値が入ってくるのかを確認しながらデバッグをしてみてください。
データフレームの列をまとめて演算する場合
大量データを扱うデータフレームで、列に対してまとめて演算を行う場合も要注意です。データに0が含まれていないか?含まれている場合は前処理をどうするか?といった検討をする必要があります。
for文で値を変えながら演算を繰り返す場合
こちらもよくありますが、繰り返し処理の中で、ある時点の値が0でエラーが起こるケースもあります。特に、for文の中で演算を複数実施して、その結果で除算する場合では、演算の結果0となるケースはあり得るか?0となりうる場合の対処はどうするか?を検討する必要があります。
Pythonでデータサイエンスするなら
Pythonでデータサイエンスをするなら、以下の書籍がおすすめです。Pandas、matplotlib、Numpy、scikit-learnといったデータサイエンスに必要なライブラリを、体系立てて一通り学ぶことができます。
ややお値段高めですが、これ1冊で十分という内容・ボリュームなので、損はしないと思います^^
まとめ
ZeroDivisionErrorの原因と対策についてまとめました。
原因は0で除算しようとしていることにあります。除算しようとしている変数や値が0を取りうるか?を検討し、確実にそのケースを排除するようにしましょう。
ではでは👋