<bdo id='n0EI1'></bdo><ul id='n0EI1'></ul>
      1. <tfoot id='n0EI1'></tfoot>

        <i id='n0EI1'><tr id='n0EI1'><dt id='n0EI1'><q id='n0EI1'><span id='n0EI1'><b id='n0EI1'><form id='n0EI1'><ins id='n0EI1'></ins><ul id='n0EI1'></ul><sub id='n0EI1'></sub></form><legend id='n0EI1'></legend><bdo id='n0EI1'><pre id='n0EI1'><center id='n0EI1'></center></pre></bdo></b><th id='n0EI1'></th></span></q></dt></tr></i><div id='n0EI1'><tfoot id='n0EI1'></tfoot><dl id='n0EI1'><fieldset id='n0EI1'></fieldset></dl></div>
      2. <small id='n0EI1'></small><noframes id='n0EI1'>

        <legend id='n0EI1'><style id='n0EI1'><dir id='n0EI1'><q id='n0EI1'></q></dir></style></legend>

        pandas 数据框至海运分组条形图

        时间:2024-08-20

        • <bdo id='wS1At'></bdo><ul id='wS1At'></ul>
        • <legend id='wS1At'><style id='wS1At'><dir id='wS1At'><q id='wS1At'></q></dir></style></legend>

          • <small id='wS1At'></small><noframes id='wS1At'>

                <tbody id='wS1At'></tbody>
                <tfoot id='wS1At'></tfoot>

                1. <i id='wS1At'><tr id='wS1At'><dt id='wS1At'><q id='wS1At'><span id='wS1At'><b id='wS1At'><form id='wS1At'><ins id='wS1At'></ins><ul id='wS1At'></ul><sub id='wS1At'></sub></form><legend id='wS1At'></legend><bdo id='wS1At'><pre id='wS1At'><center id='wS1At'></center></pre></bdo></b><th id='wS1At'></th></span></q></dt></tr></i><div id='wS1At'><tfoot id='wS1At'></tfoot><dl id='wS1At'><fieldset id='wS1At'></fieldset></dl></div>
                  本文介绍了 pandas 数据框至海运分组条形图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有以下数据框,这些数据框是我从一个较大的数据框中获得的,其中列出了最差的10个"基准收益率"及其相应的投资组合收益率和日期:

                  我已经设法使用以下脚本创建了一个Seborn条形图,其中列出了基准回报与其对应日期的对比:

                  import pandas as pd
                  import seaborn as sns
                  
                  df = pd.read_csv('L:\My Documents\Desktop\Data NEW.csv', parse_dates = True)
                  
                  df = df.nsmallest(10, columns = 'Benchmark Returns')
                  df = df[['Date', 'Benchmark Returns', 'Portfolio Returns']]
                  p6 = sns.barplot(x = 'Date', y = 'Benchmark Returns', data = df)
                  p6.set(ylabel = 'Return (%)')
                  for x_ticks in p6.get_xticklabels():
                      x_ticks.set_rotation(90)
                  

                  它会生成此图:

                  然而,我想要的是包含基准回报和投资组合回报的分组条形图,其中使用两种不同的颜色来区分这两个类别。

                  我尝试了几种不同的方法,但似乎都不起作用。

                  提前感谢您的帮助!

                  推荐答案

                  诀窍是将 pandas df从宽格式转换为长格式

                  第一步:准备数据

                  import seaborn as sns
                  
                  np.random.seed(123)
                  index = np.random.randint(1,100,10)
                  
                  x1 = pd.date_range('2000-01-01','2015-01-01').map(lambda t: t.strftime('%Y-%m-%d'))
                  dts = np.random.choice(x1,10)
                  
                  benchmark = np.random.randn(10)
                  portfolio = np.random.randn(10)
                  
                  df = pd.DataFrame({'Index': index,
                                     'Dates': dts,
                                     'Benchmark': benchmark,
                                     'Portfolio': portfolio},
                                      columns = ['Index','Dates','Benchmark','Portfolio'])
                  

                  第二步:从宽&q;到长";格式

                  df1 = pd.melt(df, id_vars=['Index','Dates']).sort_values(['variable','value'])
                  df1
                  
                      Index   Dates   variable    value
                  9   48  2012-06-13  Benchmark   -1.410301
                  1   93  2002-07-31  Benchmark   -1.301489
                  8   97  2005-01-21  Benchmark   -1.100985
                  0   67  2011-06-01  Benchmark   0.126526
                  4   84  2003-09-25  Benchmark   0.465645
                  3   18  2009-07-13  Benchmark   0.522742
                  5   58  2007-12-04  Benchmark   0.724915
                  7   98  2002-12-28  Benchmark   0.746581
                  6   87  2009-02-07  Benchmark   1.495827
                  2   99  2000-04-21  Benchmark   2.207427
                  16  87  2009-02-07  Portfolio   -2.750224
                  14  84  2003-09-25  Portfolio   -1.855637
                  15  58  2007-12-04  Portfolio   -1.779455
                  19  48  2012-06-13  Portfolio   -1.774134
                  11  93  2002-07-31  Portfolio   -0.984868
                  12  99  2000-04-21  Portfolio   -0.748569
                  10  67  2011-06-01  Portfolio   -0.747651
                  18  97  2005-01-21  Portfolio   -0.695981
                  17  98  2002-12-28  Portfolio   -0.234158
                  13  18  2009-07-13  Portfolio   0.240367
                  

                  第三步:绘图

                  sns.barplot(x='Dates', y='value', hue='variable', data=df1)
                  plt.xticks(rotation=90)
                  plt.ylabel('Returns')
                  plt.title('Portfolio vs Benchmark Returns');
                  

                  这篇关于 pandas 数据框至海运分组条形图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:在海运条形图顶部显示计数 下一篇:如何更改海运中的X轴范围

                  相关文章

                  <tfoot id='XkOAU'></tfoot>

                2. <i id='XkOAU'><tr id='XkOAU'><dt id='XkOAU'><q id='XkOAU'><span id='XkOAU'><b id='XkOAU'><form id='XkOAU'><ins id='XkOAU'></ins><ul id='XkOAU'></ul><sub id='XkOAU'></sub></form><legend id='XkOAU'></legend><bdo id='XkOAU'><pre id='XkOAU'><center id='XkOAU'></center></pre></bdo></b><th id='XkOAU'></th></span></q></dt></tr></i><div id='XkOAU'><tfoot id='XkOAU'></tfoot><dl id='XkOAU'><fieldset id='XkOAU'></fieldset></dl></div>

                  <small id='XkOAU'></small><noframes id='XkOAU'>

                  • <bdo id='XkOAU'></bdo><ul id='XkOAU'></ul>

                3. <legend id='XkOAU'><style id='XkOAU'><dir id='XkOAU'><q id='XkOAU'></q></dir></style></legend>