2017-01-24 8 views
5

データフレームdf1に列(col1、col2、col3)のセットがあります データフレームdf2に別の列セット(col4、col5、col6)があります この2つのデータフレームに同じ数の行。カテゴリの列間の相関を実行する方法

df1とdf2のペア間相関を行う相関テーブルを生成するにはどうすればよいですか?

表は、私がdf1.corrwith(df2)を使用

col1 col2 col3 
col4 .. .. .. 
col5 .. .. .. 
col6 .. .. .. 

のようになります、必要に応じて、テーブルを生成していないようです。

私はここで似たような質問をしています: How to perform Correlation between two dataframes with different column names しかし今はカテゴリカルを扱っています。

もしそれが直接比較できないのであれば、(get_dummiesのように)比較可能な標準的な方法がありますか?すべてのフィールドを自動的に処理する(すべてがカテゴリであると仮定して)、その相関関係を計算するより速い方法です。

+0

get_dummiesを使用しています。相関関数をそれらに適用することができます。 – epattaro

+0

ピアソン相関では、データを数値にする必要があります。バイナリデータで計算した相関関係は意味を持ちません。カテゴリデータに関する関連付けの措置を探してください。 – ayhan

答えて

4

相関関係を取得するには、pd.get_dummiesが必要であることが間違いありません。以下は、私は2つのカテゴリの列を持ついくつかの偽のデータを作成し、その後、変数はバイナリになるだろうcorrwith

df = pd.DataFrame({'col1':np.random.choice(list('abcde'),100), 
        'col2':np.random.choice(list('xyz'),100)}, dtype='category') 
df1 = pd.DataFrame({'col1':np.random.choice(list('abcde'),100), 
        'col2':np.random.choice(list('xyz'),100)}, dtype='category') 

dfa = pd.get_dummies(df) 
dfb = pd.get_dummies(df1) 
dfa.corrwith(dfb) 

col1_a -0.057735 
col1_b 0.002513 
col1_c 0.137956 
col1_d -0.095050 
col1_e -0.114022 
col2_x 0.022568 
col2_y -0.081699 
col2_z -0.128350 
関連する問題