Pandas はこれまでのところ、データ前処理の段階で私たちを助けてくれています。ただし、ある例では、ヒストグラムの作成中に Pandas の別のモジュールも利用しました。 plotting
.
これまでのところ、これを意図的に避けてきました。これは、これを早期に導入すると、答えよりも多くの疑問が生じる可能性があるためです。つまりパンダ および Matplotlib は非常に一般的であり、どこにでも存在するため、Pandas は Matplotlib の機能を統合し始めました。それ 重く は実際のプロットを行うために Matplotlib に依存しており、多くの Matplotlib 関数がソース コードにラップされていることがわかります。あるいは、プロットに他のバックエンドを使用することもできます。 プロット および ぼけ味.
ただし、Pandas はいくつかのプロットも紹介します。 ではありません Matplotlib の標準プロット タイプの一部 (たとえば、 KDE, アンドリュース・カーブス, ブートストラップ プロット および 散布行列.
plot()
パンダの機能 DataFrame
で指定されたバックエンドを使用します plotting.backend
、およびに応じて kind
引数 – 指定されたライブラリを使用してプロットを生成します。これらの多くは重複しているため、次のようなプロット タイプをカバーすることに意味はありません。 line
, bar
, hist
および scatter
。これまで Matplotlib で行ってきたのと同じコードで、ほぼ同じプロットが生成されます。
簡単に見ていきます。 plot()
根底にあるメカニズムはこれまでに研究されてきたため、その機能は明らかです。代わりに、私たちが作成したいくつかのプロットに焦点を当てましょう。 することはできません Matplotlib を使用すると、すでに簡単に実行できます。
Pandas のプロットおよび視覚化機能は Matplotlib に比べて劣るため、これは非常に短い章になります。しかし、これらの機能のいくつかを知っておくこと、また、からプロットする機能について知っておくことは依然として役立ちます。 DataFrame
直接。
DataFrame.plot() 演算
plot()
関数は受け入れます x
および y
特徴と、 kind
口論。あるいは、次のことを避けるために、 kind
引数を呼び出すこともできます DataFrame.plot.kind()
代わりに、 x
および y
機能。
受け入れられる値は、 kind
引数は次のとおりです。 line
, bar
, barh
(水平バー)、 hist
, box
, kde
, density
(の同義語 kde
), area
, pie
, scatter
および hexbin
(ヒートマップに似ています)。
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] df_eu.plot.bar(x = 'Year', y = 'Value')
df_eu.plot.line(x = 'Year', y = 'Value')
df_eu.plot.box(x='Value') plt.show()
を提供する代わりに、 Series
Matplotlib の場合と同様に、インスタンスを提供するだけで十分です。 列名を呼び出しているので、 plot()
上の機能 DataFrame
視覚化すると、Pandas がこれらの文字列値を適切な列名にマッピングするのが簡単になります。
これらの呼び出しのそれぞれで、新しい Figure
インスタンスを作成し、それに適切な値をプロットします。
複数の軸を同じ上にプロットするには Figure
、あなたは作ることができます Figure
そしてXNUMXつ以上の Axes
、 plt.subplots()
そして適切な値を割り当てます Axes
ax
それぞれの主張 plot.plot_type()
コール:
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] fig, ax = plt.subplots(3, 1) df_eu.plot.box(x='Value', ax = ax[0])
df_eu.plot.line(x = 'Year', y = 'Value', ax = ax[1])
df_eu.plot.bar(x = 'Year', y = 'Value', rot = 45, ax = ax[2]) plt.show()
標準引数の一部 (例: rotation
引数は実際には異なります plot()
呼び出します。例えば、 rotation
に短縮されます rot
。これにより、少し難しくなります ただ切り替えてください Matplotlib と Pandas の間では、最終的にはドキュメント ページに行き、どの引数が適用可能でどの引数が適用できないかを確認することになるでしょう。
さて、新しいものを作成する代わりに、 Figure
or Axes
たとえば、これらの各プロットは適切な場所に配置されます。 Axes
私たちが提供したインスタンス:
一般に、Pandas を使用したプロットは便利で迅速ですが、それでも、棒グラフ、折れ線グラフ、箱ひげ図をプロットする場合は、おそらく Matplotlib を使用することをお勧めします。これは、Pandas が必然的に使用する基礎となるエンジンであり、さらに多くのカスタマイズ オプションも備えており、Pandas プロットで使用できる新しい引数のセットを覚える必要はありません。
そうは言っても、プロットによっては、 パンダなぜなら、これらは Matplotlib で手動で作成する必要があり、KDE 行など、作成するのが非常に面倒で労力に値しないものもあります。
パンダさん 作図 モジュール
この試験は DataFrame
が視覚化の観点から提供しなければならないことは、私たちにとってそれほど新しいことではありません。ただし、彼らが呼び出す基礎となるモジュールは、 pandas.plotting
します。 の plotting
module には使用できる関数がいくつかあります。 autocorrelation_plot()
, bootstrap_plot()
, scatter_matrix()
.
これらはそれぞれ、次のいずれかを受け入れます。 Series
または DataFrame
、作成するビジュアライゼーションのタイプ、およびプロット仕様とスタイル設定の目的のための特定のパラメーターに応じて異なります。
ブートストラッププロット
ブートストラッピング データセットをランダムに (置換して) サンプリングし、次のような精度の尺度を計算するプロセスです。 バイアス, 分散 および 信頼区間 ランダムサンプルの場合。 「置換あり」とは、実際には、ランダムに選択された各要素を再度選択できることを意味します。 交換なし これは、要素がランダムに選択されるたびに、次のサンプルのプールから削除されることを意味します。
A ブートストラッププロットPandas によって作成され、サンプルに基づいてデータセットの平均、中央値、中間範囲の統計をブートストラップします。 size
、その後、プロットは次のように表示されます。 plt.show()
。のデフォルトの引数 size
および samples
50
および 500
。
これは、特徴に対してサンプリングを行うことを意味します。 50
価値観。次に、それらの 50 個の値に対して 50 要素のサブサンプル (合成データ) が生成され、それらの要約統計量 (平均/中央値/中間範囲) が計算されます。このプロセスが繰り返される 500
回なので、最終的には 500 件の概要統計が得られます。
import pandas as pd
from matplotlib import pyplot as plt df = pd.read_csv('./datasets/gdp_csv.csv')
df_eu = df.loc[df['Country Name'] == 'European Union'] pd.plotting.bootstrap_plot(df_eu['Value']) plt.show()
自己相関プロット
自己相関プロット 時系列データのデータのランダム性をチェックするために使用されます。複数 自己相関 は異なるタイムスタンプに対して計算され、データが本当にランダムであれば、相関関係はゼロに近くなります。そうでない場合、相関関係はゼロより大きくなります。
2 つの自己相関プロットをプロットしてみましょう - 1 つは私たちのものです 値 機能と、 Series
ランダムな値で埋められます:
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('gdp_csv.csv')
# Filter DataFrame for the EU
df_eu = df.loc[df['Country Name'] == 'European Union']
# Generate 50 random integers between 0 and 100, and turn into a Series
random_series = pd.Series(np.random.randint(0, 100, size=50)) # Plot Autocorrelation Plot for the *Value* feature
pd.plotting.autocorrelation_plot(df_eu['Value'])
# Plot Autocorrelation Plot for the *random_series*
pd.plotting.autocorrelation_plot(random_series) plt.show()
の自己相関プロット random_series
を中心に回転するはずです 0
、これはランダムなデータであるため、プロットは Value
この機能は以下のことを行いません:
自己相関が 1 つの値を測定することは注目に値します。 フォーム ランダム性は無相関ですが、非ランダムなデータは存在します。ランダムではないが、有意な相関関係がない場合、自己相関プロットはデータがランダムであることを示します。
散布行列
散布行列 プロットする グリッド すべての特徴に対するすべての特徴の散布図。これにより必然的に各機能もそれ自体と比較されるため、 対角線 これが発生する箇所は通常、 ヒストグラム 散布図ではなく、その特徴の。 散布行列 としても知られています ペアプロットSeaborn は、 pairplot()
このためだけの機能。
scatter_matrix()
関数は DataFrame
すべての数値特徴の散布行列を生成し、次の 2D 配列を返します。 Axes
散布行列を構成するインスタンス。それらについて何かを調整するには、それらを反復処理する必要があります。
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt df = pd.read_csv('worldHappiness2019.csv') axes = pd.plotting.scatter_matrix(df, diagonal='hist') for ax in axes.flatten(): # Rotate back to 0 degrees since they're automatically rotated by 90 ax.yaxis.label.set_rotation(0) # As to not overlap with the Axes instances, set the ticklabel # alignment to 'right' ax.yaxis.label.set_ha('right') plt.show()
これにより、他のすべての特徴に対するすべての特徴のかなり大きな散布行列が生成されます。
で渡すこともできます diagonal
引数を受け入れる 'hist'
or 'kde'
対角線上にプロットする分布プロットのタイプを指定するだけでなく、 alpha
、散布図のマーカーの半透明度を指定します。