尝试创建主胜/客胜/平局的热图

问题描述 投票:0回答:1

使用Kaggle EPL数据集和

epl=df.dropna().reset_index(drop=True)
。 我正在尝试创建类似于此的热图:

从数据集创建热图所需的列如下:

季节 |主队 |客队 | FTHG(Fulltime HomeGoal) | FTAG(Fulltime AwayGoal) | FTR(全日制成绩)

给定的参考图像是 2000-01 赛季所以我希望交换季节以检索它相应的热图。

顶部的缩写名称也不是必需的,我可以将 x 轴名称标签放在底部并旋转 90 度。

python pandas heatmap
1个回答
0
投票

这是一个带有 旋转和 Styler 的命题:

df = pd.read_csv("results.csv", encoding="latin-1",
                 usecols=["Season", "HomeTeam", "AwayTeam", "FTHG", "FTAG", "FTR"])

df["FinalScore"] = df["FTHG"].astype(str).str.cat(df["FTAG"].astype(str), sep="-")

df = df[df["Season"].eq("2000-01")] #feel free to change the filter's value

dfp_vals = (df.pivot(index="HomeTeam", columns="AwayTeam", values="FinalScore")
                .fillna("").rename_axis(index=None, columns="Home / Away"))
dfp_mask = df.pivot(index="HomeTeam", columns="AwayTeam", values="FTR").fillna("")

def heatmap(df):
    d_map = {"H": f"background-color: #bbf3ff", # Home Win
             "D": f"background-color: #ffffbb", # Draw
             "A": f"background-color: #ffbbbb", # Away Win
             "":  f"background-color: #bbbbbb"}
    return dfp_mask.replace(d_map)

dfp_vals.style.apply(heatmap, axis=None)

输出:

© www.soinside.com 2019 - 2024. All rights reserved.