簡體   English   中英

如何用正好兩個唯一值繪制數據框列?

[英]How to plot data frame columns with exactly two unique values?

我正在嘗試遍歷Pandas數據框,並僅為正好包含兩個唯一值的列生成條形圖。 我設想最終的條形圖在X軸和Y軸上包含兩個唯一值以顯示行數。

我已經能夠在數據框(df_clean)上生成一個Series,它向我顯示每列的唯一值數量:

    col_values = df_clean.apply(lambda x: len(x.unique()))

但是我完全不知道如何:

  • 遍歷我的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

嘗試使用Series.nuniqueSeries.value_counts

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')

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM