べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【Python Coding】numpyの「info」で数値型データの範囲を知る

code python

こんにちは、TAKです。

今回は、pythonのnumpyを使って、「数値型データ」が取り得る値の範囲を知る方法を紹介していきたいと思います。数値型データとは、整数を扱う「int型」や小数点を扱う「float型」のことを意味します。

【こんな人に読んで欲しい記事です】

● 数値型データ(int型やfloat型)が取り得る値の範囲を確認出来るようになりたい方

● numpyにある機能「np.iinfo()」や「np.finfo()」の意味や使い方を知りたい方

先にお伝えしておくと、今回の記事は少しニッチな内容かなと思います。
pythonやデータサイエンスの勉強を始めたばかりの方であれば、正直知らなくても支障はないです。

ただ、いずれより良いデータ分析をする上では知っておくと便利になるので、「こんな方法もあるんだ」という軽い気持ちで読んで頂ければ幸いです。

数値型データのレンジ(値の範囲)を知る必要性

最初に、「int型」や「float型」が扱えるデータ範囲を知る意義について簡単に紹介しておきます。
一言で言えば、Kaggleなどで扱うビッグデータの容量を圧縮する余地があるかを判断する場面で使えます。

Kaggleのようなデータ分析コンペで提供されるデータだけでなく、クライアントが持つビッグデータを分析するような場面でも使えます。

既存のファイルやデータベースをpythonで扱う場合、通常はpandasなどを用いてデータフレーム化することが一般的です。そして、データフレームのデータ型を確認すると、(使用PCの環境によりますが)「int64」や「float64」になっていることがわかるはずです。

数値型データの種類|「int」「float」(ドキュメントより引用

これは、デフォルトではどんな値でも読み込めるように「一番容量の大きい型」になるように設定されているためです。言い換えれば、「そんなに大きい型じゃなくてもいいのに、無駄に容量が大きくなっている」可能性があるということです。

このように、数値型データの範囲を知っておけば、「今扱っているデータはそこまで大きくないから、データサイズを圧縮出来るかも」と判断の助けになるということを、頭の片隅にでも入れておいてください。

「np.iinfo」を使う|「int型」の場合

では実際に、「int型」が取り得る値の範囲を確認する方法を見ていきましょう。
「int型」関連の情報を取得するためには、`np.iinfo()`を用いる必要があります。

「int8」を例にして、どのように使うかをコードで確認した結果が以下となります。
np.iinfoの引数に「確認したいint型」を指定し、「min」で最小値、「max」で最大値を確認出来ます。

「np.iinfo()」の簡単な使い方

先ほど紹介した表の値と一致しているか確認してみた結果が以下です。
print関数を使うことで、「min」と「max」を自動的に表示してくれます。

「int型」が取り得る値の範囲を確認した結果
ドキュメント記載の内容と一致していることがわかる

コード結果と表を見比べてみると、取り得る値の範囲が一致していることがわかりますね。

「np.finfo」を使う|「float型」の場合

続いて、「float型」が取り得る値の範囲を確認する方法を見ていきましょう。
「float型」関連の情報を取得するためには、`np.finfo()`を用いる必要があります。

「int型」と同様に、表の値と一致しているか確認してみた結果が以下となります。
「int型」よりも細かい情報が表示されている点が特徴的ですね。

「float型」が取り得る値の範囲を確認した結果
ドキュメント記載の内容と一致していることがわかる (exp部分)

以上が、「np.iinfo()」と「np.finfo()」の使い方でした。
各データ型の最小値と最大値を閾値として利用することで、データサイズの変換などに活かしてみてください。

まとめ

今回は、numpyの「iinfo」や「finfo」を用いて、数値型データが取る値の範囲を見てきました。

あまり意識しなくてもデータ分析上は差し支えないですが、知っておくと便利になるときが来るハズなので参考にしてみてください。

では今回はこのへんで。