回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>什么是Pythonic/pandas在pandas中对列中的“levels”进行排序的方式,以便在bar plot中给出酒吧的特定顺序。</p>
<p>例如,给定:</p>
<pre><code>import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'a', 'a', 'a', 'a', 'a',
'b', 'b', 'b', 'b', 'b', 'b', 'b'],
'day': ['Mon', 'Tues', 'Fri', 'Thurs', 'Sat', 'Sun', 'Weds',
'Fri', 'Sun', 'Thurs', 'Sat', 'Weds', 'Mon', 'Tues'],
'amount': [1, 2, 4, 2, 1, 1, 2, 4, 5, 3, 4, 2, 1, 3]})
dfx = df.groupby(['group'])
dfx.plot(kind='bar', x='day')
</code></pre>
<p>我可以生成以下两个图:</p>
<p><img src="https://i.stack.imgur.com/qLn5M.png" alt="Disordered bar charts"/></p>
<p>条形图的顺序遵循行顺序。</p>
<p>什么是对数据重新排序的最佳方式,以便柱状图在周一到周日有柱状图排序?</p>
<p>更新:这个垃圾解决方案很管用,但它使用额外的排序列的方式远不够优雅:</p>
<pre><code>df2 = pd.DataFrame({
'day': ['Mon', 'Tues', 'Weds', 'Thurs', 'Fri', 'Sat', 'Sun'],
'num': [0, 1, 2, 3, 4, 5, 6]})
df = pd.merge(df, df2, on='day')
df = df.sort_values('num')
dfx = df.groupby(['group'])
dfx.plot(kind='bar', x='day')
</code></pre>
<p>进一步概括:</p>
<p>是否有一个解决方案也可以确定“闪避”条形图中条形图的顺序:</p>
<pre><code>df.pivot('day', 'group', 'amount').plot(kind='bar')
</code></pre>
<p><img src="https://i.stack.imgur.com/L4P8O.png" alt="enter image description here"/></p>