GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

quantopian

qgrid – JupyterノートブックでDataFramesをソート、フィルタリング、編集するためのインタラクティブなグリッド

投稿日:

JupyterノートブックでDataFramesをソート、フィルタリング、編集するためのインタラクティブなグリッド

qグリッド

Qgridは、Jupyterノートブック内でSlickGridを使ってパンダのデータフレームをレンダリングするJupyterノートウィジェットです。 これにより、直感的なスクロール、並べ替え、フィルタリングコントロールを使用してDataFramesを探索し、セルをダブルクリックしてDataFramesを編集することができます。

私たちはもともと2014年の秋にQuantopianのホスティングされた研究環境で使用するqgridを開発しましたが、しばらくの間、バックバーナーに置かなければならなかったので、優先度の高いプロジェクトに集中することができました。

qgridがipywidgetsの最新の進歩(特にipywidget 7.x)を利用できるようにするために、私たちが大規模なリファクタリングプロジェクトを開始した2017年の夏、Qgridの開発が再び開始されました。 このリファクタリングの一環として、qgridのソートや、クライアント(JavaScript)からサーバー(Python)へのロジックのフィルタリングも行いました。 この新しいバージョンはqgrid 1.0と呼ばれ、以降の手順はこの新しいバージョン用です。

デモ

以下のバッジをクリックして、ライブサンプルのノートブックでqgridを試してください:

Jupyterlabでqgridを試すには、次のバッジをクリックしてください:

両方のバインダーリンクでは、サーバーがクラウド内に作成されている間に簡単な読み込み画面が表示されます。 これは1分以上かかることはありません。通常は10秒以内で完了します。

実際にqgridを試すために別のページに行くのではない人のために、ここにはtldrがあります。 バージョン:

APIドキュメント

APIドキュメントはreadthedocsでホストされています

インストール

pipでインストールする:

pip install qgrid
jupyter nbextension enable --py --sys-prefix qgrid

# only required if you have not enabled the ipywidgets nbextension yet
jupyter nbextension enable --py --sys-prefix widgetsnbextension

condaでインストールする:

# only required if you have not added conda-forge to your channels yet
conda config --add channels conda-forge

conda install qgrid

ジュピターラブのインストール

まず、ノートブックでqgridを使用するときの通常のインストール手順を実行します。 jupyterlabをまだインストールせずにipywidgetsを有効にしている場合は、まず以下の行を追加してください:

pip install jupyterlab
jupyter labextension install @jupyter-widgets/jupyterlab-manager

qgrid-jupyterlab拡張をインストールし、有効にします。

jupyter labextension install qgrid

この時点で、jupyter labを ‘jupyter lab’コマンドで正常に実行すると、通常どおりにqgridをノートブックで使用できるはずです。

注意:Jupyterlabのサポートは、jupyterlab 0.30.5とjupyterlab-manager 0.31.3でテストされています。問題がある場合は、それらのバージョンをインストールしてみてください。 qgridがいずれかの依存関係の新しいバージョンで動作していないことがわかったら、問題を提出してください。

依存関係

QgridはPython 2または3で動作します。 また、以下のインストール手順のためにpipが必要です。

Qgridは次の3つのPythonパッケージに依存します:

ジュピターノート
これは、qgridが動作するインタラクティブなPython環境です。
ipywidgets
Jupyterノートブックがウィジェットを実行できるようにするには、このipywidgetsパッケージもインストールする必要があります。 これは、Jupyterノートブックを作成したJupyter組織によって維持管理されています。
パンダ
Python用の強力なデータ分析/操作ライブラリ。 Qgridでは、インタラクティブグリッドとしてレンダリングされるデータをpandas DataFrameの形式で提供する必要があります。

これらはrequirement.txtにリストされていて、qgridがpip経由でインストールされている場合は、必要に応じて自動的にインストールされます。

互換性

qグリッド IPython / Jupyterノート ipywidgets ジュピターラブ
0.2.0 2.x N / A N / A
0.3.x 3.x N / A N / A
0.3.x 4.0 4.0.x N / A
0.3.x 4.1 4.1.x N / A
0.3.2 4.2 5.x N / A
0.3.3 5.x 6.x N / A
1.0.x 5.x 7.x 0.30.x

デモノートをローカルで実行する

qgrid-notebooksリポジトリには、qgridが提供する機能に慣れ親しむのに役立ついくつかのデモ・ノートがあります。 qgrid-notebooksリポジトリをクローンしてデモ用ノートブックを開く手順は次のとおりです。

  1. 上記の「 インストール」セクションの手順に従ってqgridをインストールします。

  2. GitHubからqgrid-notebooksリポジトリをクローン:

    git clone https://github.com/quantopian/qgrid-notebooks.git
    
  3. リポジトリの開発環境をインストールし、ノートブックサーバを起動します:

    cd qgrid-notebooks
    pip install -r requirements_dev.txt
    jupyter notebook
    
  4. ブラウザのノートブックUIに表示されている2つのノートブック( index.ipynbまたはexperimental.ipynb )のいずれかをクリックします。

ソースからの実行と変更のテスト

qgridに貢献したい場合や、独自の目的でソースコードを変更したい場合は、このリポジトリを複製し、リポジトリのローカルコピーからqgridを実行することをお勧めします。 以下の手順でこれを行う方法を説明します。

  1. GitHubからリポジトリをクローンし、最上位のディレクトリにcdします:

    git clone https://github.com/quantopian/qgrid.git
    cd qgrid
    
  2. 現在のプロジェクトを編集可能なモードでインストールします。

    pip install -e .
    
  3. qgridが依存するノードパッケージをインストールし、webpackを使用してqgridのjavascriptをビルドします。

    cd js && npm install .
    
  4. あなたのローカルjupyterノートブック環境にqgridのjavascriptをインストールして有効にしてください:

    jupyter nbextension install --py --symlink --sys-prefix qgrid && jupyter nbextension enable --py --sys-prefix qgrid
    
  5. 次のコマンドを使用して通常どおりにノートブックを実行します。

    jupyter notebook
    

サーバー側の変更を手動でテストする

変更が必要なコードがqgridのpythonコードにある場合は、現在のノートブックのカーネルを再起動し、qgridセルを再実行して変更が有効になるようにしてください。

クライアント側の変更を手動でテストする

変更する必要のあるコードがqgridのjavascriptまたはcssコードにある場合は、ステップ3を繰り返してqgridのnpmパッケージを再構築し、ノートブックを表示しているブラウザタブを更新して変更が有効になるようにします。

自動テストの実行

リポジトリのルートフォルダにコマンドpytestを実行することで、ローカルで実行できる小さなpythonテストスイートがあります。

ドキュメントの作成

read-the-docsページは、sphinxを使用して生成されます。 doc文字列を変更した場合、またはread-the-docsページに何かを追加する場合は、次のコマンドを使用してPRを送信する前に、変更をローカルでプレビューできます。

pip install sphinx sphinx_rtd_theme
cd docs && make html

これにより、 docs/_build/htmlフォルダに新しいバージョンのread-the-docsサイトが設定されます。 ブラウザでindex.htmlファイルを開くと、変更内容をプレビューできるはずです。

実験デモ

qgrid 1.0以降、qgridを他のウィジェット/ビジュアライゼーションと併用することができる興味深い方法がいくつかあります。 1つの例はqgridを使用して、別の視覚化によっても表示されているDataFrameをフィルタリングすることです。

現在、qgridを使用するこれらの方法は、APIドキュメントには記載されておらず、広範にテストされていないため、実験的なものと考えられています。 詳細は、 実験ノートを参照してください。

実験ノートを試してみるために別のページに行くのではない人のために、ここにはtldrがあります。 バージョン:

引き続きqgrid 0.3.3を使用する

qgrid 0.3.3のインストールと使用方法、およびそれに付随するサンプルノートをお探しの場合は、このリポジトリのqgrid 0.3.3タグを参照してください。 インストール手順はほとんど同じです。 唯一の違いは、 “pip install”を実行すると、バージョン0.3.3をインストールすることを明示的に指定する必要があるということです。

pip install qgrid==0.3.3

APIドキュメントをお探しの場合は、 readthedocsページのqgrid 0.3.3をご覧ください

0.3.3のデモ用ノートブックを探しているなら、それはまだnbviewerで利用可能です。

Qgrid 0.3.3はipywidgets 7と互換性がないので、ipywidgets 7のサポートが必要な場合は、qgrid 1.0を使用する必要があります。

貢献する

すべての寄稿、バグ報告、バグ修正、ドキュメントの改善、拡張、アイデアは大歓迎です。 ローカルqgrid開発の詳細については、上記のソースから実行と変更のテストのセクションを参照してください。

qgridコードベースの使用を開始するには、GitHubの[Issues]タブに移動して、興味深い問題を調べます。

あなたの質問に問題を提出して質問をしてください。







-quantopian

執筆者: