分别绘制所有熊猫数据框列

Man*_*rma 0 python matplotlib pandas subplot

我有一个只包含数字列的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
Run Code Online (Sandbox Code Playgroud)

但是在我的现实生活数据中有50多个列,如何为所有列创建单独的图

我试过了

df.plot.hist( subplots = True, grid = True)
Run Code Online (Sandbox Code Playgroud)

它给了我一个重叠的不清楚的情节。

如何使用pandas subplots = True排列它们。下面的示例可以帮助我获取(2,2)网格中四列的图形。但对于所有50列来说,这都是一个漫长的方法

fig, [(ax1,ax2),(ax3,ax4)]  = plt.subplots(2,2, figsize = (20,10))
Run Code Online (Sandbox Code Playgroud)

ann*_*hak 13

如果你想分别绘制它们(这就是我在这里结束的原因),你可以使用

for i in df.columns:
    plt.figure()
    plt.hist(df[i])
Run Code Online (Sandbox Code Playgroud)


Imp*_*est 10

熊猫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()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在此tight_layout不应用,因为该图形太小而无法很好地排列轴。不过,您可以使用更大的数字(figsize=(...))。

为了使轴在网格上,可以使用layout参数,例如

df.plot(subplots=True, layout=(4,5))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

如果通过创建轴可以达到相同的目的。 plt.subplots()

fig, axes = plt.subplots(nrows=4, ncols=5)
df.plot(subplots=True, ax=axes)
Run Code Online (Sandbox Code Playgroud)


Ram*_*mon 7

此任务的替代方法是使用具有超参数“布局”的“hist”方法。使用@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()
Run Code Online (Sandbox Code Playgroud)