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))
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()
_
ここでは、_tight_layout
_は適用されていません。これは、図が小さすぎて軸を適切に配置できないためです。より大きな図(figsize=(...)
)を使用することもできます。
グリッド上に軸を配置するには、layout
パラメータを使用できます。
_df.plot(subplots=True, layout=(4,5))
_
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])
このタスクの代わりに、ハイパーパラメーター「レイアウト」を使用して「履歴」メソッドを使用することができます。 @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()