使用自定义分类索引顺序在Python中重新排序热图行
我有以下数据帧 指数是一周中的几天 这些列是每天0到23小时的数字 单元格值为计数使用自定义分类索引顺序在Python中重新排序热图行,python,pandas,seaborn,Python,Pandas,Seaborn,我有以下数据帧 指数是一周中的几天 这些列是每天0到23小时的数字 单元格值为计数 0 1 2 .... Mon 2 2 4 Tue 5 6 2 Wed 3 1 1 . . . 数据帧是 df.crosstab(df['DoW'],df['Hour']) 我试着用 hourdow.reindex(["Mon", "Tue", "Wed","Thu","Fri","Sat",'Sun']) 要对数据帧进行排序,但当我绘制图表时,仍然会在热图上按字母顺序对索引进行排序。
0 1 2 ....
Mon 2 2 4
Tue 5 6 2
Wed 3 1 1
.
.
.
数据帧是
df.crosstab(df['DoW'],df['Hour'])
我试着用
hourdow.reindex(["Mon", "Tue", "Wed","Thu","Fri","Sat",'Sun'])
要对数据帧进行排序,但当我绘制图表时,仍然会在热图上按字母顺序对索引进行排序。是否要对行重新排序?您可以先将df['DoW']设置为类别:
import seaborn as sns
import pandas as pd
days_order = ["Mon", "Tue", "Wed","Thu","Fri","Sat",'Sun']
df = pd.DataFrame({'Dow':np.random.choice(days_order,100),
'Hr':np.random.randint(0,4,100)})
df['Dow'] = pd.Categorical(df['Dow'],
categories=days_order,
ordered=True)
sns.heatmap(pd.crosstab(df['Dow'],df['Hr']))
您可以先将df['DoW']设置为类别:
import seaborn as sns
import pandas as pd
days_order = ["Mon", "Tue", "Wed","Thu","Fri","Sat",'Sun']
df = pd.DataFrame({'Dow':np.random.choice(days_order,100),
'Hr':np.random.randint(0,4,100)})
df['Dow'] = pd.Categorical(df['Dow'],
categories=days_order,
ordered=True)
sns.heatmap(pd.crosstab(df['Dow'],df['Hr']))
在创建交叉表之前,我必须将变量设置为分类变量?是的,没错。。或者你可以在做交叉表的时候设置它,例如,pd.crosstabpd.Categoricaldf['Dow']…..,所以我必须在创建交叉表之前将变量设置为categorical?是的,没错。。或者,您可以在执行交叉表时设置它,例如,pd.crosstabpd.Categoricaldf['Dow']。。。,。。。