Два значения, показывающие корреляцию 0,66, но графики совершенно разные

#python #pandas

#python #панды

Вопрос:

У меня есть df, который выглядит так:

 A       B
1.8880  298.0
1.7604  380.0
1.5712  376.0
1.4029  381.0
1.0728  321.0
1.7830  266.0
1.4372  341.0
1.4500  372.0
2.0713  421.0
1.7357  402.0
1.8661  407.0
1.5329  340.0
1.7495  449.0
2.0789  438.0
1.5331  450.0
1.6800  449.0
2.1819  402.0
2.3827  358.0
2.2852  384.0
2.1007  392.0
1.7085  410.0
2.0433  476.0
2.9753  463.0
2.6881  532.0
2.6379  454.0
2.0774  538.0
2.7963  419.0
2.8351  488.0
2.7512  662.0
2.3574  555.0
2.7607  511.0
2.2983  572.0
2.3762  562.0
2.5631  582.0
2.3664  679.0
2.0931  518.0
2.5114  484.0
0.0000  335.0
0.0000  342.0
0.0000  300.0
0.0000  314.0
0.0000  321.0
 

Я вычисляю корреляцию, используя:

 df.corr().loc['A','B']
# 0.6650269816367731
 

Когда я строю графики:

 sns.lineplot(data=df[['A','B']])
 

Я получаю:

введите описание изображения здесь

Как это может иметь такую высокую корреляцию, когда график совершенно другой?

Редактировать

Когда я масштабирую данные следующим образом:

 df_scaled = pd.DataFrame(MinMaxScaler().fit_transform(df[all_dimensions_2]), columns=df[all_dimensions_2].columns)
df_scaled = pd.concat([df[['datestamp','device','country_code']],df_scaled],axis=1)
sns.lineplot(data=df_scaled[(df_scaled['country_code']=='PT')amp;(df_scaled['device']=='desktop')][['A','B']])
 

Я получаю:
введите описание изображения здесь

Ответ №1:

Столбцы данных имеют совершенно разные диапазоны значений. Если вы масштабируете данные, например, с помощью MinMaxScaler, вы можете увидеть, что они коррелируют.

Линейный график

Код для масштабирования данных и создания графика:

 from sklearn.preprocessing import MinMaxScaler
import matplotlib.pyplot as plt

df_scaled = pd.DataFrame(MinMaxScaler().fit_transform(df), columns=df.columns)
df_scaled.plot()
plt.show()
 

Комментарии:

1. Спасибо, могу ли я каким fit_transform -то образом поместить весь фрейм данных в нужные мне столбцы, а не использовать две строки?

2. Еще раз спасибо, по какой-то причине я получаю график, отличный от вашего, есть идеи, почему? Отредактировал мой вопрос.