.corr を使用して 2 つの列間の相関関係を取得します。質問する

.corr を使用して 2 つの列間の相関関係を取得します。質問する

次のパンダデータフレームがありますTop15:ここに画像の説明を入力してください

一人あたりの引用可能な文書の数を推定する列を作成します。

Top15['PopEst'] = Top15['Energy Supply'] / Top15['Energy Supply per Capita']
Top15['Citable docs per Capita'] = Top15['Citable documents'] / Top15['PopEst']

一人当たりの引用可能な文書数と一人当たりのエネルギー供給量の相関関係を知りたいです。そこで、次の.corr()方法(ピアソンの相関関係)を使用します。

data = Top15[['Citable docs per Capita','Energy Supply per Capita']]
correlation = data.corr(method='pearson')

単一の数値を返したいのですが、結果は次のようになります。ここに画像の説明を入力してください

ベストアンサー1

実際のデータがなければ質問に答えるのは難しいですが、次のようなものを探しているのだと思います。

Top15['Citable docs per Capita'].corr(Top15['Energy Supply per Capita'])

2つの列の相関関係を計算します 'Citable docs per Capita'そして'Energy Supply per Capita'

例を挙げると:

import pandas as pd

df = pd.DataFrame({'A': range(4), 'B': [2*i for i in range(4)]})

   A  B
0  0  0
1  1  2
2  2  4
3  3  6

それから

df['A'].corr(df['B'])

期待通りの結果が出ました1

ここで、例えば値を変更すると、

df.loc[2, 'B'] = 4.5

   A    B
0  0  0.0
1  1  2.0
2  2  4.5
3  3  6.0

コマンド

df['A'].corr(df['B'])

戻り値

0.99586

予想通り、依然として 1 に近い値です。

.corr()データフレームに直接適用すると、列間のすべてのペアワイズ相関を返します; そのため、1s行列の対角線を観察します (各列はそれ自体と完全に相関しています)。

df.corr()

したがって戻ってくる

          A         B
A  1.000000  0.995862
B  0.995862  1.000000

あなたが示したグラフでは、相関行列の左上隅のみが表現されています(と私は推測します)。

NaN解決策にsが含まれる場合があります- チェックこの郵便受け例えば。

特定のしきい値を超える/下回るエントリをフィルタリングしたい場合は、チェックを入れます。この質問相関係数のヒートマップをプロットしたい場合は、この答えそして軸ラベルが重なる問題に遭遇した場合は、次の投稿

おすすめ記事