Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义分类索引顺序在Python中重新排序热图行_Python_Pandas_Seaborn - Fatal编程技术网

使用自定义分类索引顺序在Python中重新排序热图行

使用自定义分类索引顺序在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到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'])
要对数据帧进行排序,但当我绘制图表时,仍然会在热图上按字母顺序对索引进行排序。是否要对行重新排序?

您可以先将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']。。。,。。。