Python:Scatterplot列名

时间:2017-05-02 19:03:25

标签: python-2.7 pandas dataframe scatter-plot

我试图操纵我的数据帧,以便列名称(星期一,星期二)可以在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

1 个答案:

答案 0 :(得分:1)

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

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

你附上的图片是Seaborn生成的stripplot。

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)

enter image description here

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

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