エコシステム

データ準備、分析、可視化における特定のニーズに対応するために、pandasをベースにしたパッケージが増えています。これは、pandasがユーザーのデータタスクを処理するのに役立つだけでなく、開発者が強力でより焦点を絞ったデータツールを構築するためのより良い出発点を提供していることを意味するため、励みになります。pandasの機能を補完するライブラリを作成することで、pandasの開発は元の要件に焦点を当て続けることができます。

これは、PyData領域でツールを提供するためにpandasをベースに構築されたプロジェクトの、コミュニティによって維持されているリストです。pandasコア開発チームは、このリストにある特定のプロジェクトを必ずしも支持したり、特定のライブラリのメンテナンス状況について知識を持っているわけではありません。

pandasに依存するプロジェクトのより完全なリストについては、pandasのlibraries.io使用ページまたはpypiでpandasを検索を参照してください。

ユーザーがこれらのプロジェクトを見つけやすくしたいと考えています。もし、このリストに掲載されるべきだと思う重要なプロジェクトをご存知でしたら、お知らせください。

統計と機械学習

Statsmodels

Statsmodelsは、著名なPythonの「統計と計量経済学ライブラリ」であり、pandasと長年にわたる特別な関係があります。Statsmodelsは、pandasの範囲外である強力な統計、計量経済学、分析、モデリング機能を提供します。Statsmodelsは、計算の基盤となるデータコンテナとしてpandasオブジェクトを利用します。

Featuretools

Featuretoolsは、pandasをベースに構築された、自動特徴量エンジニアリングのためのPythonライブラリです。時間的およびリレーショナルデータセットを、再利用可能な特徴量エンジニアリング「プリミティブ」を使用して機械学習用の特徴量行列に変換することに優れています。ユーザーはPythonで独自のプリミティブを貢献し、コミュニティの他のメンバーと共有できます。

Compose

Composeは、データラベル付けと予測エンジニアリングのための機械学習ツールです。予測問題をパラメーター化し、時間駆動のリレーショナルデータを教師あり学習に使用できるカットオフ時間を持つターゲット値に変換することで、ラベル付けプロセスを構造化できます。

STUMPY

STUMPYは、現代の時系列分析のための強力でスケーラブルなPythonライブラリです。その中核として、STUMPYは、マトリックスプロファイルと呼ばれるものを効率的に計算します。これは、さまざまな時系列データマイニングタスクに使用できます。

可視化

Altair

Altairは、Python用の宣言的な統計可視化ライブラリです。Altairを使用すると、データとその意味を理解することに多くの時間を費やすことができます。AltairのAPIはシンプルで使いやすく、一貫性があり、強力なVega-Lite JSON仕様をベースに構築されています。このエレガントなシンプルさにより、最小限のコードで美しく効果的な可視化が作成されます。AltairはPandas DataFrameと連携します。

Bokeh

Bokehは、最新のWebテクノロジーをネイティブに使用する、大規模データセット用のPythonインタラクティブ可視化ライブラリです。その目標は、Protovis/D3のスタイルで斬新なグラフィックスのエレガントで簡潔な構築を提供しながら、大規模なデータに対する高性能なインタラクティブ性をシンクライアントに提供することです。

Pandas-Bokehは、次のようなネイティブPandasプロットバックエンドとしてロードできる、Bokeh用の高レベルAPIを提供します。

pd.set_option("plotting.backend", "pandas_bokeh")

これはmatplotlibのプロットバックエンドと非常によく似ていますが、インタラクティブなWebベースのチャートとマップを提供します。

pygwalker

PyGWalkerは、可視化、クリーニング、注釈ワークフローをサポートするGraphic Walker上に構築された、インタラクティブなデータ可視化および探索的データ分析ツールです。

pygwalkerは、インタラクティブに作成されたチャートをGraphic-WalkerおよびVega-Lite JSONに保存できます。

import pygwalker as pyg
pyg.walk(df)

seaborn

Seabornは、matplotlibに基づいたPython可視化ライブラリです。魅力的な統計グラフィックスを作成するための、高レベルでデータセット指向のインターフェースを提供します。seabornのプロット関数はpandasオブジェクトを理解し、pandasのグループ化操作を内部的に利用して、複雑な可視化の簡潔な指定をサポートします。Seabornはまた、プロット中に統計的推定を実行し、観測値を集計し、統計モデルの適合を可視化して、データセット内のパターンを強調するオプションを使用して、matplotlibとpandasを超えています。

import seaborn as sns
sns.set_theme()

plotnine

Hadley Wickhamのggplot2は、R言語の基礎的な探索的可視化パッケージです。「グラフィックスの文法」に基づいて、あらゆる種類のデータのオーダーメイドのプロットを生成するための、強力で宣言的かつ非常に一般的な方法を提供します。他の言語へのさまざまな実装が利用可能です。Pythonユーザーに適した実装はhas2k1/plotnineです。

IPython Vega

IPython Vegaは、Vegaを活用して、Jupyter Notebook内でプロットを作成します。

Plotly

PlotlyのPython APIは、インタラクティブな図とWeb共有を可能にします。マップ、2D、3D、およびライブストリーミンググラフは、WebGLとD3.jsでレンダリングされます。ライブラリは、pandas DataFrameからの直接プロットと、クラウドベースのコラボレーションをサポートしています。matplotlib、Python用のggplot、およびSeabornのユーザーは、図をインタラクティブなWebベースのプロットに変換できます。プロットは、IPython Notebooksで描画したり、RまたはMATLABで編集したり、GUIで変更したり、アプリやダッシュボードに埋め込んだりできます。Plotlyは無制限の共有が無料であり、プライベートな使用のためにクラウドオフライン、またはオンプレミスのアカウントがあります。

Lux

Luxは、視覚的なデータ探索プロセスを自動化することにより、データを使った迅速かつ簡単な実験を促進するPythonライブラリです。Luxを使用するには、pandasと一緒にインポートを追加するだけです

import lux
import pandas as pd

df = pd.read_csv("data.csv")
df  # discover interesting insights!

データフレームを出力することにより、Luxは、データフレーム内の興味深い傾向とパターンを強調する一連の視覚化を自動的に推奨します。ユーザーは、コードを変更することなく、既存のpandasコマンドを利用しながら、同時にpandasデータ構造(DataFrame、Series、Indexなど)を可視化できます。Luxはまた、ユーザーがコードレベルで考えることなく、Altair、matplotlib、またはVega-Liteの視覚化を作成できる、強力で直感的な言語を提供します。

D-Tale

D-Taleは、pandasデータ構造を可視化するための軽量なWebクライアントです。多くのpandas機能(クエリ、ソート、記述、相関など)のラッパーとして機能する豊富なスプレッドシートスタイルのグリッドを提供するため、ユーザーはデータをすばやく操作できます。また、Plotly Dashを使用したインタラクティブなチャートビルダーもあり、ユーザーは優れたポータブルな可視化を構築できます。D-Taleは、次のコマンドで呼び出すことができます。

import dtale

dtale.show(df)

D-Taleは、Jupyterノートブック、Pythonターミナル、Kaggle、Google Colabとシームレスに統合されます。グリッドのデモをいくつかご紹介します。

hvplot

hvPlotは、HoloViews上に構築された、PyDataエコシステム用の高レベルプロットAPIです。次のようにして、ネイティブpandasプロットバックエンドとしてロードできます。

pd.set_option("plotting.backend", "hvplot")

IDE

IPython

IPythonは、インタラクティブなコマンドシェルと分散コンピューティング環境です。IPythonタブ補完は、Pandasメソッドと、DataFrame列のような属性の両方で機能します。

Jupyter Notebook / Jupyter Lab

Jupyter Notebookは、Jupyterノートブックを作成するためのWebアプリケーションです。Jupyterノートブックは、コード、テキスト、数学、プロット、リッチメディアを含むことができる、順序付けられた入出力セルのリストを含むJSONドキュメントです。Jupyterノートブックは、Webインターフェースの「名前を付けてダウンロード」とシェルでのjupyter convertを通じて、多くのオープンスタンダード出力形式(HTML、HTMLプレゼンテーションスライド、LaTeX、PDF、ReStructuredText、Markdown、Python)に変換できます。

Pandas DataFrameは、Jupyter Notebookが(省略された)HTMLまたはLaTeXテーブルを表示するために使用する_repr_html_および_repr_latexメソッドを実装しています。LaTeX出力は適切にエスケープされます。(注:HTMLテーブルは、HTML以外のJupyter出力形式と互換性がない場合があります。)

pandasのdisplay.設定については、オプションと設定を参照してください。

Spyder

Spyderは、ソフトウェア開発ツールの編集、分析、デバッグ、プロファイリング機能を、MATLABやRstudioのような科学環境のデータ探索、インタラクティブな実行、詳細な検査、豊富な可視化機能と組み合わせた、クロスプラットフォームのPyQtベースのIDEです。

その変数エクスプローラーを使用すると、ユーザーはpandasのIndexSeries、およびDataFrameオブジェクトを「スプレッドシート」のように表示、操作、編集でき、値のコピーと変更、ソート、「ヒートマップ」の表示、データ型の変換などが含まれます。Pandasオブジェクトの名前を変更したり、複製したり、新しい列を追加したり、クリップボード間でコピー/ペーストしたり(TSVとして)、ファイルとの間で保存/ロードしたりすることもできます。Spyderはまた、高度なインポートウィザードを介して、さまざまなプレーンテキストファイルとバイナリファイル、またはクリップボードから新しいpandas DataFrameにデータをインポートできます。

ほとんどのpandasクラス、メソッド、およびデータ属性は、SpyderのエディターIPythonコンソールでオートコンプリートできます。また、Spyderのヘルプペインは、Sphinxでpandasオブジェクトに関するNumpydocドキュメントをリッチテキストで自動的にもオンデマンドでも取得およびレンダリングできます。

API

pandas-datareader

pandas-datareaderは、pandas用のリモートデータアクセスライブラリです(PyPI:pandas-datareader)。これは、pandas.io.dataおよびpandas.io.wbに配置されていた機能に基づいていますが、v0.19で分割されました。詳細については、pandas-datareaderのドキュメントを参照してください。

次のデータフィードが利用可能です

pandaSDMX

pandaSDMXは、統計局、中央銀行、国際機関などの機関で広く使用されているISO標準であるSDMX 2.1で普及している統計データとメタデータを取得および取得するためのライブラリです。pandaSDMXは、データフロー、コードリスト、データ構造定義を含む、データセットと関連する構造メタデータを、pandas SeriesまたはMultiIndexed DataFramesとして公開できます。

fredapi

fredapiは、セントルイス連邦準備銀行が提供する連邦準備経済データ(FRED)へのPythonインターフェースです。FREDデータベースと、時点データ(つまり、過去のデータ改訂)を含むALFREDデータベースの両方で動作します。fredapiは、FRED HTTP APIへのPythonのラッパーを提供し、ALFREDからの時点データを解析および分析するための便利なメソッドもいくつか提供します。fredapiはpandasを利用し、データをSeriesまたはDataFrameで返します。このモジュールには、FRED Webサイトで無料で入手できるFRED APIキーが必要です。

ドメイン固有

Geopandas

Geopandasは、地理情報をpandasのデータオブジェクトに追加し、幾何学的演算をサポートします。もしあなたの仕事が地図や地理座標を扱い、pandasが好きなら、Geopandasを詳しく調べてみるべきです。

gurobipy-pandas

gurobipy-pandasは、pandasとgurobipyを接続するための便利なアクセサーAPIを提供します。これにより、ユーザーはDataFrameやSeriesに格納されたデータから、より簡単かつ効率的に数理最適化モデルを構築し、解をpandasオブジェクトとして直接読み込むことができます。

staircase

staircaseは、pandasとnumpyを基盤として構築された、数学的なステップ関数のモデリングと操作のためのデータ分析パッケージです。実数、datetime、timedeltaドメインで定義されたステップ関数に対して、豊富な算術演算、関係演算、論理演算、統計演算、集計を提供します。

xarray

xarrayは、pandasのラベル付きデータの能力を物理科学にもたらすために、pandasのコアデータ構造のN次元バリアントを提供します。pandasが得意とする表形式データではなく、多次元配列の分析のためのpandasのような、pandas互換のツールキットを提供することを目指しています。

IO

NTV-pandas

NTV-pandasは、pandasが直接サポートするよりも多くのデータ型をサポートするJSONコンバーターを提供します。

以下のデータ型をサポートしています。

インターフェースは常に可逆的(変換の往復)であり、2つの形式(JSON-NTVとJSON-TableSchema)に対応しています。

import ntv_pandas as npd

jsn = df.npd.to_json(table=False)  # save df as a JSON-value (format Table Schema if table is True else format NTV )
df  = npd.read_json(jsn)  # load a JSON-value as a `DataFrame`

df.equals(npd.read_json(df.npd.to_json(df)))  # `True` in any case, whether `table=True` or not

BCPandas

BCPandasは、pandasからMicrosoft SQL Serverへの高性能な書き込みを提供し、ネイティブのdf.to_sqlメソッドのパフォーマンスをはるかに凌駕します。内部的にはMicrosoftのBCPユーティリティを使用しますが、複雑さはエンドユーザーから完全に抽象化されています。厳密にテストされており、df.to_sqlの完全な代替となります。

Deltalake

Deltalake Pythonパッケージを使用すると、SparkやJVMを使用せずに、PythonでDelta Lakeに格納されたテーブルにネイティブにアクセスできます。DeltaテーブルをPandasデータフレームに変換するためのdelta_table.to_pyarrow_table().to_pandas()メソッドを提供します。

アウトオブコア

Cylon

Cylonは、pandasのようなPython DataFrame APIを備えた、高速でスケーラブルな分散メモリ並列ランタイムです。「Core Cylon」は、メモリ内のデータを表現するためにApache Arrow形式を使用してC++で実装されています。Cylon DataFrame APIは、merge、filter、join、concat、group-by、drop_duplicatesなど、pandasのコア演算子のほとんどを実装しています。これらの演算子は、アプリケーションをスケーリングするために数千のコアで動作するように設計されています。pandasからデータを読み込んだり、データをpandasに変換したりすることで、pandas DataFrameアプリケーションの一部を選択的にスケーリングすることができます。

from pycylon import read_csv, DataFrame, CylonEnv
from pycylon.net import MPIConfig

# Initialize Cylon distributed environment
config: MPIConfig = MPIConfig()
env: CylonEnv = CylonEnv(config=config, distributed=True)

df1: DataFrame = read_csv('/tmp/csv1.csv')
df2: DataFrame = read_csv('/tmp/csv2.csv')

# Using 1000s of cores across the cluster to compute the join
df3: Table = df1.join(other=df2, on=[0], algorithm="hash", env=env)

print(df3)

Dask

Daskは、分析のための柔軟な並列コンピューティングライブラリです。Daskは、アウトオブコア、並列、および分散コンピューティングのための使い慣れたDataFrameインターフェースを提供します。

Dask-ML

Dask-MLは、既存の機械学習ライブラリ(Scikit-Learn、XGBoost、TensorFlowなど)と並行してDaskを使用した並列および分散機械学習を可能にします。

Ibis

Ibisは、複数のエンジンで実行できる分析コードを作成するための標準的な方法を提供します。ローカルのPython環境(pandasなど)と、Hadoopコンポーネント(HDFS、Impala、Hive、Sparkなど)やSQLデータベース(Postgresなど)のようなリモートストレージおよび実行システムとの間のギャップを埋めるのに役立ちます。

Koalas

Koalasは、Apache Sparkの上に使い慣れたpandas DataFrameインターフェースを提供します。これにより、ユーザーは1台のマシンのマルチコアまたはマシンのクラスターを活用して、DataFrameコードを高速化またはスケーリングできます。

Modin

modin.pandas DataFrameは、pandasの並列および分散型のドロップイン代替です。これは、既存のpandasコードでModinを使用したり、既存のpandas APIで新しいコードを作成したりできることを意味します。Modinは、マシン全体またはクラスターを活用して、データの取り込み(read_csvread_excelread_parquetなど)などの従来時間のかかるタスクを含め、pandasのワークロードを高速化およびスケーリングできます。

# import pandas as pd
import modin.pandas as pd

df = pd.read_csv("big.csv")  # use all your cores!

Pandarallel

Pandarallelは、コードを1行変更するだけで、すべてのCPUでpandasの操作を並列化する簡単な方法を提供します。また、進行状況バーも表示されます。

from pandarallel import pandarallel

pandarallel.initialize(progress_bar=True)

# df.apply(func)
df.parallel_apply(func)

Vaex

ますます多くのパッケージがpandasの上に構築され、データ準備、分析、および視覚化の特定のニーズに対応しています。Vaexは、Out-of-Core DataFrame(Pandasに似ている)のためのPythonライブラリであり、大規模な表形式データセットを視覚化および探索するために使用されます。1秒あたり最大10億(10^9)個のオブジェクト/行のN次元グリッドで、平均、合計、カウント、標準偏差などの統計量を計算できます。視覚化は、ヒストグラム、密度プロット、および3Dボリュームレンダリングを使用して行われ、ビッグデータのインタラクティブな探索を可能にします。Vaexは、最高のパフォーマンス(メモリの無駄がない)のために、メモリマッピング、ゼロメモリコピーポリシー、および遅延計算を使用します。

Hail Query

遺伝学コミュニティにサービスを提供する、アウトオブコアでプリエンプティブセーフな分散データフレームライブラリ。Hail Queryには、ディスク上のデータ形式、メモリ内のデータ形式、式コンパイラ、クエリプランナー、およびゲノムシーケンスデータの大きな行列に対するクエリを高速化するように設計された分散ソートアルゴリズムが付属しています。

Hailによって生成された要約統計量やその他の小さな集計を操作するには、pandasを使用するのが最も簡単な場合がよくあります。このため、Hailはpandas DataFramesとのネイティブなインポートとエクスポートを提供しています。

データのクリーニングと検証

pyjanitor

Pyjanitorは、メソッドチェーンを使用してデータをクリーニングするためのクリーンなAPIを提供します。

Pandera

Panderaは、データフレームでデータ検証を実行し、データ処理パイプラインをより読みやすく堅牢にするための柔軟で表現力豊かなAPIを提供します。データフレームには、Panderaが実行時に明示的に検証する情報が含まれています。これは、本番環境で重要なデータパイプラインや再現可能な研究設定で役立ちます。

拡張データ型

Pandasは、NumPyの型システムを拡張するための拡張型を定義するためのインターフェースを提供します。次のライブラリは、そのインターフェースを実装して、NumPyまたはpandasにはない型を提供し、pandasのデータコンテナーとうまく連携します。

awkward-pandas

Awkward-pandasは、pandasのSeriesおよびDataFrame内にAwkward Arraysを格納するための拡張型を提供します。また、Awkward型のSeriesでAwkward関数を使用するためのアクセサーも提供します。

Pandas-Genomics

Pandas-Genomicsは、ゲノミクスデータを操作するための拡張型と拡張配列を提供します。また、ゲノミクスデータのQCおよび分析に関連する多くの有用なプロパティとメソッドのためのgenomicsアクセサーも含まれています。

Physipandas

Physipandasは、物理量(スカラーやnumpy.ndarrayなど)を物理単位(メートルやジュールなど)およびphysipyアクセサーをpandas SeriesおよびDataframeに統合するための追加機能と関連付けて操作するための拡張機能を提供します。

Pint-Pandas

Pint-Pandasは、単位付きの数値配列を格納するための拡張型を提供します。これらの配列は、pandasのSeriesおよびDataFrame内に格納できます。pintの拡張配列を使用するSeriesとDataFrameの列間の操作は、単位を認識します。

テキスト拡張

Text Extensions for Pandasは、自然言語データを表現するための一般的なデータ構造をカバーする拡張型と、一般的な自然言語処理ライブラリの出力をPandas DataFrameに変換するライブラリ統合を提供します。

アクセサー

拡張アクセサーを提供するプロジェクトのディレクトリ。これは、ユーザーが新しいアクセサーを発見し、ライブラリ作成者が名前空間で連携するためのものです。

ライブラリ アクセサー クラス
awkward-pandas ak Series
pdvega vgplot Series, DataFrame
pandas-genomics genomics Series, DataFrame
pint-pandas pint Series, DataFrame
physipandas physipy Series, DataFrame
composeml slice DataFrame
gurobipy-pandas gppd Series, DataFrame
staircase sc Series, DataFrame
woodwork slice Series, DataFrame

開発ツール

pandas-stubs

pandasリポジトリは部分的に型付けされていますが、パッケージ自体はこの情報を外部で使用できるように公開していません。pandas APIの基本的な型カバレッジを有効にするには、pandas-stubsをインストールしてください。

これらの問題144682676628142を読んで詳しく学んでください。

GitHubページでインストールと使用方法の手順を参照してください。

Hamilton

Hamiltonは、Stitch Fixから生まれた宣言型データフローフレームワークです。これは、特に機械学習モデルの機能エンジニアリングに関して、Pandasコードベースの管理を支援するために設計されました。

これは、すべてのコードが以下のようになるように、独断的なパラダイムを規定します。

これにより、保守コストを低く抑えながら、pandasコードベースをスケールすることができます。

詳細については、ドキュメントを参照してください。