#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. Еще раз спасибо, по какой-то причине я получаю график, отличный от вашего, есть идеи, почему? Отредактировал мой вопрос.