【问题标题】:Python: Scatterplot column namesPython:散点图列名
【发布时间】:2017-05-02 19:03:25
【问题描述】:

我正在尝试操作我的数据框,以便可以在 seaborn 散点图的 x 轴上使用列名(例如星期一、星期二)(如下所示)。现在我有这个:

          week  Sun  Mon  Tues  Wed  Thur  Fri  Sat  
0   2016-05-08    0    0     0    3     1    5    1    
1   2016-05-15    0    0     0    1     0    0    1     
2   2016-05-22    0    0     1    2     3    0    0      
3   2016-05-29    0    0     1    0     0    0    0     
4   2016-06-05    0    0     3   19    19   14    1     
5   2016-06-12    0   40    30   14     0    0    0     
6   2016-06-19    3   16    10   26    38   17   17    
7   2016-06-26    0    4     3    1     1    4    0

我唯一能想到的就是改变我的数据格式,让它变成这样:

 week             day      amount
 2016-05-08       Sun           1
 2016-05-15       Sun          30
 2016-05-22       Sun           0
 2016-05-29       Mon           6
 2016-06-19       Mon          40

我有点困惑如何拆开它。

如果我能做到这一点,我将不胜感激。

Scatterplot

【问题讨论】:

  • 你可以尝试做一些非常新颖的反透视,或者只是将行处理成新的结构。

标签: python-2.7 pandas dataframe scatter-plot


【解决方案1】:

要将数据从宽格式重新排列为长格式:

df.set_index('week').stack().rename_axis(('week','day')).reset_index().rename(columns={0:'amount'})

您附上的图片是 Seaborn 生成的带状图。

Seaborn 无需数据处理。

import seaborn as sns  
print(df)
             week     day  amount
0  2016-05-08  Sunday       1
1  2016-05-15  Sunday      30
2  2016-05-22  Sunday       0
3  2016-05-29  Monday       6
4  2016-06-19  Monday      40

_ = sns.stripplot('day', 'amount', data=df)

但是,如果您仍然想操作数据,可以使用以下命令:

df_out = df.set_index(['week','day']).unstack()
df_out.columns = df_out.columns.droplevel()
print(df_out)

输出:

day        Monday Sunday
week                    
2016-05-08    NaN    1.0
2016-05-15    NaN   30.0
2016-05-22    NaN    0.0
2016-05-29    6.0    NaN
2016-06-19   40.0    NaN

【讨论】:

  • 感谢您的快速回复。我的数据框的当前格式还不能被 seaborn 使用。有什么线索可以重塑我的数据,以便所有列日(周一、周二、周三)都在一个列下?
  • df.set_index('week').stack().rename_axis(('week','day')).reset_index(level=1).rename(columns={0:'amount '})
  • @CaptamMorgan 编辑解决方案,展示如何将您的数据从宽改成长,以便与 Seaborn 一起使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-30
相关资源
最近更新 更多