我有这样的 pandas DataFrame:
actual | predicted
------ + ---------
Apple | Apple
Apple | Apple
Apple | Banana
Banana | Orange
Orange | Apple
我想要这个:
| Apple | Banana | Orange
------ + ------- + ------- + -------
Apple | 2 | 1 | 0
Banana | 0 | 0 | 1
Orange | 1 | 0 | 0
groupby
与聚合 size
和 unstack
MultiIndex
:
df = df.groupby(['actual','predicted']).size().unstack(fill_value=0)
print (df)
predicted Apple Banana Orange
actual
Apple 2 1 0
Banana 0 0 1
Orange 1 0 0
crosstab
:
df = pd.crosstab(df.actual, df.predicted)
print (df)
predicted Apple Banana Orange
actual
Apple 2 1 0
Banana 0 0 1
Orange 1 0 0
pandas.pivot_table
>>> df.pivot_table(index='actual', columns='predicted', aggfunc=len).fillna(0).astype('int')
predicted Apple Banana Orange
actual
Apple 2 1 0
Banana 0 0 1
Orange 1 0 0
有点黑暗,但我认为你正在寻找一个混淆矩阵
from sklearn.metrics import confusion_matrix
print confusion_matrix(df['actual'], df['predicted'])