Python:散点图列名称
Python: Scatterplot column names
我正在尝试操作我的数据框,以便可以在 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
要将数据从宽格式重新排列为长格式:
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)
但是,如果您仍然想操作数据,可以使用以下命令:
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 散点图(如下所示)的 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
要将数据从宽格式重新排列为长格式:
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)
但是,如果您仍然想操作数据,可以使用以下命令:
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