web-dev-qa-db-ja.com

すべてのpandas dataframe列を個別にプロットする

pandas数値列のみのデータフレームがあり、すべての機能に対して個別のヒストグラムを作成しようとしています

ind group people value value_50
 1      1    5    100    1
 1      2    2    90     1
 2      1    10   80     1
 2      2    20   40     0
 3      1    7    10     0
 3      2    23   30     0

しかし、私の実際のデータには50以上の列があります。それらすべてに対して個別のプロットを作成するにはどうすればよいですか

私が試してみました

df.plot.hist( subplots = True, grid = True)

それは私に重複する不明確なプロットを与えました。

pandas subplots = Trueを使用してそれらをどのように配置できますか?以下の例は、4列の(2,2)グリッドでグラフを取得するのに役立ちます。しかし、50列すべてに対して長い方法です

fig, [(ax1,ax2),(ax3,ax4)]  = plt.subplots(2,2, figsize = (20,10))
2
Manu Sharma

Pandas _subplots=True_は、単一の列に軸を配置します。

_import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

df = pd.DataFrame(np.random.Rand(7,20))

df.plot(subplots=True)

plt.tight_layout()
plt.show()
_

enter image description here

ここでは、_tight_layout_は適用されていません。これは、図が小さすぎて軸を適切に配置できないためです。より大きな図(figsize=(...))を使用することもできます。

グリッド上に軸を配置するには、layoutパラメータを使用できます。

_df.plot(subplots=True, layout=(4,5))
_

enter image description here

plt.subplots()を使用してAxesを作成する場合も同じことができます。

_fig, axes = plt.subplots(nrows=4, ncols=5)
df.plot(subplots=True, ax=axes)
_

それらを別々にプロットしたい場合は(これが私がここで終わった理由です)、あなたは使うことができます

for i in df.columns:
    plt.figure()
    plt.hist(df[i])
5
annhak

このタスクの代わりに、ハイパーパラメーター「レイアウト」を使用して「履歴」メソッドを使用することができます。 @ImportanceOfBeingErnestによって提供されるコードの一部を使用した例:

import numpy as np
import matplotlib.pyplot as plt
import pandas  as pd

df = pd.DataFrame(np.random.Rand(7,20))

df.hist(layout=(5,4), figsize=(15,10))

plt.show()
0
Ramon