Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/131.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.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
Pandas 有没有办法设置熊猫组箱线图中的顺序?_Pandas - Fatal编程技术网

Pandas 有没有办法设置熊猫组箱线图中的顺序?

Pandas 有没有办法设置熊猫组箱线图中的顺序?,pandas,Pandas,有没有一种方法可以对熊猫中的分组方框图的x轴进行排序?它似乎是按升序排序的,我希望它是基于其他列值排序的。如果您是按类别分组,请按所需顺序将其设置为有序类别 # create some data n = 50 a = pd.concat([pd.Series(['A']*n, name='cat'), pd.Series(np.random.normal(1, 1, n), name='val')], axis=1) b = pd.con

有没有一种方法可以对熊猫中的分组方框图的x轴进行排序?它似乎是按升序排序的,我希望它是基于其他列值排序的。

如果您是按类别分组,请按所需顺序将其设置为有序类别

# create some data
n = 50
a = pd.concat([pd.Series(['A']*n, name='cat'), 
               pd.Series(np.random.normal(1, 1, n), name='val')],
             axis=1)
b = pd.concat([pd.Series(['B']*n, name='cat'), 
               pd.Series(np.random.normal(.5, 1, n), name='val')],
             axis=1)
c = pd.concat([pd.Series(['C']*n, name='cat'), 
               pd.Series(np.random.normal(0, 1, n), name='val')],
             axis=1)
df = pd.concat([a, b, c]).reset_index(drop=True)

# unordered boxplot
df.boxplot(column='val', by='cat')

# get order by mean
means = df.groupby(['cat'])['val'].agg(np.mean).sort_values()
ordered_cats = means.index.values

# create categorical data type and set categorical column as new data type
cat_dtype = pd.CategoricalDtype(ordered_cats, ordered=True)
df['cat'] = df['cat'].astype(cat_dtype)

# ordered boxplot
df.boxplot(column='val', by='cat')
见下例: 这里创建了一个包含三个类别a、B和C的数据集,其中每个类别的平均值顺序为C、B、a。目标是按类别平均值的顺序绘制类别

关键是将类别转换为具有所需顺序的有序类别数据类型

# create some data
n = 50
a = pd.concat([pd.Series(['A']*n, name='cat'), 
               pd.Series(np.random.normal(1, 1, n), name='val')],
             axis=1)
b = pd.concat([pd.Series(['B']*n, name='cat'), 
               pd.Series(np.random.normal(.5, 1, n), name='val')],
             axis=1)
c = pd.concat([pd.Series(['C']*n, name='cat'), 
               pd.Series(np.random.normal(0, 1, n), name='val')],
             axis=1)
df = pd.concat([a, b, c]).reset_index(drop=True)

# unordered boxplot
df.boxplot(column='val', by='cat')

# get order by mean
means = df.groupby(['cat'])['val'].agg(np.mean).sort_values()
ordered_cats = means.index.values

# create categorical data type and set categorical column as new data type
cat_dtype = pd.CategoricalDtype(ordered_cats, ordered=True)
df['cat'] = df['cat'].astype(cat_dtype)

# ordered boxplot
df.boxplot(column='val', by='cat')

你能举一个简单的例子吗?