Применение функции корреляции к нескольким подмножествам кадра данных и объединение результатов в одном кадре - PullRequest
0 голосов
/ 04 марта 2020

У меня есть Pandas фрейм данных под названием "df" со следующими столбцами:

    Income  Income_Quantile Score_1 Score_2 Score_3
0   100000              5     75      75    100
1   70000               4     55      77    80
2   50000               3     66      50    60
3   12000               1     22      60    30
4   35000               2     61      50    53
5   30000               2     66      35    77

У меня также есть "for-l oop" для выбора подмножеств фрейма данных с использованием "Income_Quantile переменная Затем l oop отбрасывает переменную Income_Quantile, которая использовалась для нарезки основного фрейма данных; «ДФ».

Вот код:

for level in df.Income_Quantile.unique():
    df_s = df.loc[df.Income_Quantile == level].drop('Income_Quantile', 1)

Теперь я хочу вычислить ранговую корреляцию копейщика для переменной «Доход» с переменными «Счет_1», «Счет_2» и «Счет_3» в "df_s".

Я также хотел бы объединить результаты в одном кадре со следующей структурой:

            Income Quantile  Score_1    Score_2     Score_3
correlation         ….         ….          ….          ….
p-value             ….         ….          ….          ….
t-statistic         ….         ….          ….          ….

Я думаю, что подход ниже, из предыдущего вопроса Я спросил, может быть полезно:

result = dict({key: correlations(val) for key, val in df_s.items()}) '''"correlations" will be a helper function for calculating the Spearman's rank correlation of each of the subsets to the "Income" variable and outputing the p-value and t-statistic of the test for each each variable.'''

Но в настоящее время у меня нет никаких подсказок о том, как повлиять на следующие шаги.

Есть ли у кого-нибудь какие-либо указатели на то, как я могу получить откуда я в настоящее время я там, где я хочу быть? Это моя самая слабая область в Python, и я застрял.

1 Ответ

1 голос
/ 04 марта 2020

Это то, что вы ожидаете?

cols = ['Score_1','Score_2','Score_3']
df_result = pd.DataFrame(columns=cols)
df_result.loc['t-statistic'] = [ttest_ind(df['Income'], df[x])[0] for x in cols]
df_result.loc['p-value'] = [ttest_ind(df['Income'], df[x])[1] for x in cols]
df_result.loc['correlation']= [spearmanr(df['Income'], df[x])[1] for x in cols]
print(df_result)

Вывод:

              Score_1   Score_2   Score_3
t-statistic  3.842307  3.842281  3.841594
p-value      0.003253  0.003253  0.003257
correlation  0.257369  0.227784  0.041563

Здесь df_result['Score_1'] - результат t-statisti c, p-value и spearman соотношение df['Income'] & df['Score_1']. Дайте мне знать, если это поможет.

...