Python 如何使用两个唯一的值绘制数据框列?

Python 如何使用两个唯一的值绘制数据框列?,python,pandas,Python,Pandas,我试图循环一个Pandas数据框,并仅为包含两个唯一值的列生成条形图。我设想最终的条形图包含X轴上的两个唯一值,Y轴显示行数 我已经能够从我的数据框(df_clean)中生成一个系列,它显示了每列的唯一值的数量: col_values = df_clean.apply(lambda x: len(x.unique())) 但我完全不知道如何: 通过my df_clean循环,仅打印具有两个唯一值的列 如何在一个图中生成多个图(我认为matplotlib子图会有所帮助?) 在相同的代

我试图循环一个Pandas数据框,并仅为包含两个唯一值的列生成条形图。我设想最终的条形图包含X轴上的两个唯一值,Y轴显示行数

我已经能够从我的数据框(df_clean)中生成一个系列,它显示了每列的唯一值的数量:

    col_values = df_clean.apply(lambda x: len(x.unique()))
但我完全不知道如何:

  • 通过my df_clean循环,仅打印具有两个唯一值的列
  • 如何在一个图中生成多个图(我认为matplotlib子图会有所帮助?)
在相同的代码中,我成功地循环了df_clean并成功地绘制了所有int和float类型的列。我正在为如何修改上述问题的工作代码而苦苦挣扎

    i = 1
    c_num_cols = len(df_clean.select_dtypes(["int64","float64"]).columns)
    for column in df_clean.select_dtypes(["int64","float64"]).columns:
        plt.subplot(c_num_cols,(c_num_cols % 2) + 1,i)
        plt.subplots_adjust(hspace=0.5)
        df_clean[column].plot(kind = 'hist', figsize = [15,c_num_cols * 4], title = column)
        i += 1
尝试使用和:


例子

是的,这正是我需要的。非常感谢@我很高兴这对巴迪有帮助
binary_cols = df.nunique()[lambda x: x == 2].index

for i, col in enumerate(binary_cols):
    plt.subplot(len(binary_cols), (len(binary_cols) % 2) + 1, i+1)
    plt.subplots_adjust(hspace=0.5)
    df[col].value_counts().plot(kind='bar')
# Setup 
df = pd.DataFrame({'col1': list('aaaaaaabbbbbbbb'),
                   'col2': list('aaabbbcccdddeee'),
                   'col3': [1] * 9 + [3] * 6})


binary_cols = df.nunique()[lambda x: x == 2].index

for i, col in enumerate(binary_cols):
    plt.subplot(len(binary_cols), (len(binary_cols) % 2) + 1, i+1)
    plt.subplots_adjust(hspace=0.5)
    df[col].value_counts().plot(kind='bar')