我想扩展我现有的代码,这样我就可以在绘图中添加另一个维度(semi-3D->;semi-4D)
我当前的代码如下所示:
df = df[(['T_id'] == 3)] # Pick just t_id = 3 data
df_grouped = df.groupby(['Timestamp', 'Pos_id'], as_index = False)[['Error']]
df_sum = df_grouped .agg('sum').pivot('Timestamp', 'Pos_id')["Error"] # Counting all errors
df_count = df_grouped .agg('count').pivot('Timestamp', 'Pos_id')["Error"] # Counting all entries
df_error_rate = df_date_sum.div(df_count) # err_rate = errors / total
df_error_rate = df_date_error_rate.fillna(0)
fig, ax = plt.pyplot.subplots()
sns.heatmap(df_error_rate.T)
上面的代码将错误率绘制为热图,其中x轴表示时间轴(“时间戳”),y轴表示位置(“位置id”),颜色表示错误率(df_日期错误率-0%-100%)
本例仅针对T_id=3(代码中的第一行)进行打印,但我希望删除第一行,为T_id添加另一个维度,并对所有可用的T_id进行相同的计算
热图将具有以下维度:
Axis | Old | New
--------+--------------+-------------
X | Timestamp | Timestamp
Y | Pos_id | Pos_id
Z | not existing | T_id
Color | error_rate | error_rate
创建三维热图有不同的方法,如:
我目前的问题是创建新的透视表。作为第一种天真的方法,我只是在pivot命令中添加了“T_id”:
df_grouped = df.groupby(['Timestamp', 'T_id', 'Pos_id'], as_index = False)[['Error']]
df_sum = df_grouped .agg('sum').pivot('Timestamp', 'T_id', 'Pos_id')["Error"]
df_count = df_grouped .agg('count').pivot('Timestamp', 'T_id', 'Pos_id')["Error"]
df_error_rate = df_date_sum.div(df_count)
# …
但这并不奏效
我想pivot不适合这个。我怎么做
目前没有回答
相关问题 更多 >
编程相关推荐