100
135

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データ解析用ライブラリ

Last updated at Posted at 2024-03-19

はじめに

皆さん、データ解析やデータ処理にどのライブラリを使用していますか?
恐らく、ほとんどの人がpandasを使用していると思います。
今回は、その他のデータ解析用ライブラリやデータ処理ライブラリについて紹介したいと思います(/・ω・)/

Pandas

言わずと知れたデータ解析用ライブラリですね。
データフレームとシリーズという2つの主要なデータ構造が提供されており、データの読み込みやフィルタリングなど、様々なデータ解析/処理に適しています。
中小規模のデータセットに適しており、大規模なデータの処理はメモリ不足や処理速度の問題からあまり向いていません。

Numpy

こちらも言わずと知れたライブラリです。
高速な多次元配列の処理とベクトル化演算のためのライブラリであり、配列の生成やブロードキャスティングなどの多彩な操作を提供しています。
線形代数や乱数生成、フーリエ変換などの科学技術計算に必要な機能も備えており、Pandasを含む多くの化学計算ライブラリの基盤となっています。

Dask

大規模のデータセットにを並列処理するためのライブラリです。
Pandasと似たデータフレームのAPIを提供しており、既存のPandasのコードを最小限の変更で分散処理することができます。
データを複数のチャンクに分割し、クラスターやマルチコアCPUで並列処理を行い、メモリに収まらない大規模なデータセットを処理することができます。
スケジューラを用いて並列処理を管理するそうです。

Polars

よくPandasと比較されるライブラリですね。
Rust言語で書かれているため、かなり早いとの噂です。
遅延評価とベクトル化演算を利用して、メモリ効率とCPU使用率を最適化しています。
比較的新しいライブラリなので、Pandasほどの機能はありませんが、十分実用的なライブラリだと思います。
以下に100本ノックの記事を参照しておきますので興味のある方は是非!

Vaex

こちらも大規模なデータセットを高速に処理するためのライブラリです。
データをメモリにロードせず、遅延評価とアウトオブコア処理を使用しているようです。
可視化機能も備えており、大規模なデータセットを対話的に探索することができるそうです。
また、GPUアクセラレーションをサポートしているとのこと。

Xarray

ラベル付きの多次元配列を処理するためのライブラリです。
NetCDF、HDF5、Zarr、OPeNDAPなどの多次元データフォーマットを読み書きすることができます。
Pandasのデータフレームと似た操作が可能で、データの結合、グループ化、リサンプリングなどができます。
気象学や海洋学、地球科学などの分野で使用されることが多いようですね。

Bottleneck

Numpyの配列操作を高速化するためのライブラリです。
Cythonで実装された高速な関数を提供することで高速化を図っています。
欠損値を含む配列の集約操作に特に効果的で、移動窓関数(または窓関数)も提供しています。

PyTables

HDF5ファイルフォーマットを使用した階層的なデータセットの管理ライブラリです。
大規模な多次元配列や表形式データ、時系列データなどを効率的に保存・読み込みできます。
NumpyPandasと緊密に結合されており、高速なI/Oが可能です。
データの圧縮やチャンク化、クエリなどの多彩な機能を提供しています。

Blaze

大規模データの処理と分析のためのライブラリです。
NumpyPandasと似たインターフェースを提供し、分散コンピューティングにも対応しています。
CSV、JSON、HDF5、SQLなど様々なデータソースを抽象化し、同じAPIで扱うことができます。
Daskをバックエンドとして使用し、並列処理と分散処理を実現します。

Numba

NumpyとPythonコードを高速化するJITコンパイラです。
でこれーたを使用して関数を最適化し、C言語に匹敵する速度を実現します。
CPUとGPUのどちらでも動作し、並列処理もサポートしています。
数行追加するだけで高速処理が可能なので個人的にかなり推しています!

Swifter

Pythonのデータフレームに対する処理を高速化するためのライブラリです。
applyapplymapmapなどの関数は大規模なデータセットに対して適用する際に非常に遅くなることがありますが、swifterはこれらの関数の処理を自動的に最適化し、コードの変更を最小限に抑えながら、処理速度を大幅に向上させることができます。
また、処理をマルチスレッドまたはマルチプロセスで並列化し、CPUリソースを最大限に利用しています。
ベクトル化演算やチャンク処理にも対応しています。

Modin

Pandasと互換性のある高速なデータ処理ライブラリです。
PandasのAPIを維持しながら、並列処理とデータ分割を利用してパフォーマンスを大幅に向上させています。
また、バックエンドを選択することができ、Pandasの他にも、DaskRayを選択することもできます。

まとめ

いかがだったでしょうか。
私の知る限りのデータ解析用ライブラリでした。
個人的にはPolarsNumbaSwifterあたりの学習を進めようと思っていますね!
皆様の参考になれば幸いです!
また良さげなライブラリがあれば紹介したいと思います(/・ω・)/
それでは!

100
135
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
100
135

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?