2件のコメント概要PandasにはDataFrameが持つplotの他にpandas.plottingというメソッド群を持っており、これを使うことで通常のplotメソッドとは一風異なったグラフを作成することができます。これらは以下のページに多少の説明があるものの、全体を網羅した説明や中身の詳細は確認できずあまり使いこなせていませんでした。そこで本記事では、PandasのPlottingにあるグラフ描画をするための全メソッドを試して効果を検証してみました。Pandasのバージョンは0.23.4を使っています。https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.htmlメソッド一覧コンソール上でdir(pandas.plotting)と入力すると、メンバの一覧が取得できます。その中でグラフ描画をするためのメソッド(かつplotでは実装されていない)は以下7メソッドがありました。scatter_matrix上記を検証するために、irisのデータとsinの時系列データを使います。0.01)))それぞれのデータは以下のようになっています。plotとも呼ばれ、andrewsさんが考案した多変量データの可視化テクニックのようです。https://en.wikipedia.org/wiki/Andrews_plothttps://www.jstor.org/stable/2528964とりあえずまずは描画してみます。最初の引数にデータフレームを、2番目の引数にパターンの列を指定する必要があります。"Name")andrews_curvesグラフを見ると多数の曲線が引かれており、それぞれがIrisのNameに対応した色になっていますので、1本1本がデータの1行1行に対応していることが読み取れます。グラフの形状からなんとなくNameごとに分かれそうなことが見て取れるのですが、初めて見ると縦軸と横軸の意味が良く分からないです。マニュアルに当たると、以下の式に基づいて描画しているということが記載されていました。PetalLengthの値に差があると、基本周期の振幅や位相に差が出る、PetalWidthの値に差があると、2倍周期の振幅に差が出る、、、という具合に、多変量の違いを可視化できる手法であることが分かります。振幅に値を使うということで正規化が推奨されます。正規化の処理を組み込んでもう一度描画してみます。(正規化後)規化前と比べて、周波数2倍の成分(PetalWidth)の影響もよく見えるようになりました。このグラフでは要因の追求までは難しそう(どの周波数にどの説明変数が対応しているかを把握しておく必要があるため)ですが、この説明変数で分類できそうか?というのを見るときに有効な可視化手法といえそうです。autocorrelation_plotautocorrelationは自己相関という意味で、主に時系列データの周期性を確認するときに用いる可視化方法です。https://ja.wikipedia.org/wiki/自己相関とりあえずまずは描画してみます。最初の引数にシリーズを指定する必要があります。autocorrelation_plot(df_sin)autocorrelation_plot縦軸が相関係数、横軸がLag(時間ずれ)を表していることが分かります。フーリエ変換よりもお手軽に周期性をチェックしたいときに使える可視化方法と言えそうです。Pandasのドキュメントは見あたらなかったのですが、ソースコードを抜粋して見ると以下のようになっており、x軸にhを取り、最初からhまでのデータと最後からhまでのデータの共分散を計算して(h/n)倍した上で、データの分散で規格化しているようです。完全な繰り返し波形でも値は1にならず減衰していくことは知っておいたほうがよさそうです。灰色の線は1.959963984540054と2.5758293035489004と正規分布の95%ライン、99%ラインを示していそうですが、それと自己相関にどういう関係があるかは理解できませんでした。ご存知の方がいたら教えてください。samples(デフォルト500)を引数に与え、Seriesからsizeの数だけデータを抽出するのをsamples回繰り返し、各sampleの平均や、中央値、(最大-最小)÷2を可視化するメソッドのようです。samples=500)bootstrap_plotこれを見ると、irisのSepalLengthから50点のデータを選んで平均等を500回評価すると、平均(Mean)の最頻値は5.85程度で、最小で5.5程度、最大は6.1程度であることを読み取ることができます。ついてもそれぞれ確認できます。本プロットを使うと、交差検証をした際の各データの塊の平均等がとれだけ安定するか(内部共変量シフトがあるかどうか)を確認することができそうです。具体的には、サンプル数を減らすと平均等のばらつきが大きくなると考えられるので、ばらつきが大きくなり過ぎないサンプル数を把握すれば、そこから適切な交差検証の分割数を検討できるというイメージです。lag_plotlag_plotは、Seriesとlagを指定すると、lagだけずらした散布図を作成してくれるメソッドです。lag=50)lag_plot横軸にSeriesの値、縦軸にlagだけ時間をずらしたSeriesの値を取り、散布図が作成されています。これは分かりやすく説明は不要ですね。parallel_coordinatesparallel_coordinates(及び後述のradviz)はパターン分類の多変量解析でよく用いられる可視化方法と言えます。使うためには、最初の引数にデータフレームを、2番目の引数にパターンの列を指定する必要があります。'Name')parallel_coordinates上記グラフにおいては、各データ項目が横軸に並び、1本1本の線が1行1行のデータ(色はName)を表しています。これを使うことで、多変量の可視化も比較的容易にできますので私はよく使っています。本グラフは標準化しておいたほうが汎用的に使うことができます。'Name')parallel_coordinates(標準化後)標準化することで、先ほどはあまり変化が見えなかったSepalWidthの効果もよく見えるようになりました。radvizradvizもparallel_coordinatesと同様、パターン分類の多変量解析でよく用いられる可視化方法と言えます。使うためには、最初の引数にデータフレームを、2番目の引数にパターンの列を指定する必要があります。'Name')きちんと調べたわけではないのですが、各説明変数ごとに値をベクトル化し、合成した値をプロットしているものと考えられます。このプロットは分かりやすい反面、PetalLengthとSepalLengthのベクトルが同じだと打ち消しあって同じところにプロットされてしまうという問題もありますので注意が必要です。scatter_matrixscatter_matrixは全変数の組み合わせで散布図やヒストグラムを作成してくれるメソッドです。seabornをしなくても使える点はメリットといえるかもしれません。scatter_matrix(df_iris)scatter_matrixまとめPandasのPlottingにあるグラフ描画をするための全メソッドを試して効果を検証してみました。多変量や時系列に向いた可視化メソッドが多く含まれており、これらの機能も活用していきたいです。11:07非常に重宝しています。いつも利用させていただいています。00:07どうもありがとうございます!励みになります。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。プロフィール兵庫県在住の30代データサイエンティスト。Pythonを使った機械学習等によるデータ分析や、ウェブアプリ等のシステム開発に取り組んでいます。