Я хочу создать корреляционную матрицу из числа значений столбцов строк.Так что здесь у меня есть серьезность аварии и время.Я пытаюсь показать корреляцию между временем суток и серьезностью аварии
Часть кадра данных Панд (df):
+-----------------------+-------------------+------------------+
| Accident_Index | Time | Accident_Severity|
+-----------------------+-------------------+------------------+
| 200501BS00001 | Morning | Serious |
| 200501BS00002 | Night | Slight |
| 200501BS00003 | Evening | Slight |
| 200501BS00004 | Afternoon | Fatal |
+-----------------------+-------------------+------------------+
Мой ожидаемый результат выглядит примерно так:
+---------+-----------+-------+---------+-----------+
| | Morning | Night | Evening | Afternoon |
+---------+-----------+-------+---------+-----------+
| Serious | 0.9 | 0.3 | 0.3 | 0.3 |
| Slight | 0.8 | 1 | 0.2 | 0.5 |
| Fatal | 0.4 | 0.3 | 1 | 0.3 |
+---------+-----------+-------+---------+-----------+
Я пробовал подобные вещи:
s_corr = df.Accident_Severity.str.get_dummies(' ').corrwith(df.Time.value_counts() / df.Time.value_counts().max())
print(s_corr)
Вывод:
- Фатальный NaN
- Серьезный NaN
- Небольшой NaN
и это:
corrs = df.pivot('Time','Accident_Severity').T.corr().stack()
corrs.index.names = 'Time', 'Accident_Severity'
corrs.reset_index()
print(corrs)
Вывод:
- ValueError: Индекс содержит повторяющиеся записи, не может изменить форму
и это:
corrs = df.reset_index().pivot_table('Time','Accident_Severity').T.corr().stack()
print(corrs)
Вывод:
- pandas.core.base.DataError: Нет числовых типов для агрегирования
и это:
acc = df['Accident_Severity'].value_counts()
ti = df['Time'].value_counts()
print(acc.corr(ti))
Вывод: