遍历数据框并绘制每列

时间:2019-07-15 16:45:18

标签: python pandas seaborn subplot

我正在分析一些调查数据,这些数据包含一周中每一天的一列。列中只能有两个值:如果受访者当天从事工作,则为1;否则,则为0。我希望能够对一周中的每一天进行计数。但是,当我运行以下代码时,前七个子图为空白,第八个子图显示计数图。最后一个绘图的标题,如果X轴标记为星期一,则为星期一。

f, ax = plt.subplots(nrows = 4, ncols = 2, figsize=(12,18))
work_days = df[['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']]
row = 0
col = 0
for i in work_days:
    g = sns.countplot(x=i,data=work_days)
    g.set(title = column)
    col += 1
    if col == 2:
        col = 0
        row += 1

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=.5)

我也尝试了以下代码:

f, ax = plt.subplots(nrows = 4, ncols = 2, figsize=(12,18))
work_days = df[['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']]
row = 0
col = 0
for i, col in enumerate(work_days):
    g = sns.countplot(x=i,data=work_days)
    g.set(title = column)
    col += 1
    if col == 2:
        col = 0
        row += 1

plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=.5)

此代码产生TypeError:'int'对象不可迭代。

任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果我正确理解:

df = pd.DataFrame(data = np.random.randint(low=0,high=2,size=(10,5)),
                  columns=['Mon','Tues','Weds','Thurs','Fri'])
df2 = df.melt(var_name='day', value_name='worked')
g = sns.FacetGrid(data=df2, col='day', col_wrap=3)
g.map(sns.countplot, 'worked', order=[0,1])
plt.show()

enter image description here