Корреляция в новый файл CSV - PullRequest
0 голосов
/ 23 июня 2019

У меня есть сто CSV-файл:

Merge_Prediction_Groundtruth_Speed1.0_Buffer100.csv
Merge_Prediction_Groundtruth_Speed1.0_Buffer200.csv
Merge_Prediction_Groundtruth_Speed1.0_Buffer300.csv
Merge_Prediction_Groundtruth_Speed2.0_Buffer100.csv
Merge_Prediction_Groundtruth_Speed2.0_Buffer200.csv
Merge_Prediction_Groundtruth_Speed2.0_Buffer300.csv
...............

Все данные CSV имеют данные о структуре:

BS      Prediction  Ground truth
BS1-BS1  0          0
BS1-BS2  0          2
BS1-BS3  2         35
BS1-BS4  0          0
BS1-BS5  0          0
BS1-BS6  0          2
BS1-BS7  0          0
BS1-BS8  0          2
BS1-BS9  0          0
BS2-BS1  0          1
...............

Я хочу проанализировать корреляцию между столбцом прогноза и столбцом наземной истины. Я использовал этот код:

df['Prediction'].corr(df['Ground truth'])

Если я проанализировал один за другим, это займет вечность. Можно ли проанализировать корреляцию один раз и одновременно встроить в один файл CSV на основе последнего заголовка файла? Мой ожидаемый результат выглядит так:

Files               Correlation
Speed1.0_Buffer100  0.65
Speed1.0_Buffer200  0.51
Speed1.0_Buffer300  0.73
Speed2.0_Buffer100  0.36
Speed2.0_Buffer200  0.59
Speed2.0_Buffer300  0.44
...............

Заранее спасибо.

1 Ответ

2 голосов
/ 23 июня 2019

Вы можете CSV-файл в вашей папке, читать их

l=['Merge_Prediction_Groundtruth_Speed1.0_Buffer100.csv',
'Merge_Prediction_Groundtruth_Speed1.0_Buffer200.csv'
...]

как:

d={x: pd.read_csv(x) for x in l }

Затем с помощью concat с groupby

pd.concat(d).groupby(level=0).apply(lambda x : x['Prediction'].corr(x['Groundtruth']))
...