绘制数据框由一列分组,色调由另一列分组

时间:2016-06-15 19:17:42

标签: python pandas dataframe seaborn

我有以下DataFrame并希望创建单独的折线图(每个" Cluster" 1),其中x轴是"周",y-轴是"槽请求"和色调是" Group"。

要获取我想要绘制的数据,我使用

ffmpeg -y -i $ORIGINAL \
       -af "atrim=45:duration=30,asetpts=N/SR/TB,afade=in:d=2,afade=out:st=28:d=2" \
       -ab 64k $TRIMMED

上面的代码段会返回"Slot Request", dtype = int64。从这里开始,我有点卡住了。

由于我没有成功绘制上面的结果,我尝试将其导出为.csv,然后重新导入(将其重新导入数据帧,因为我还不知道如何做到这一点,对不起亵渎)。

我能想出的唯一可行的代码如下,但这并不是我需要得到的。使用FacetGrid也没有运气。

summed = full_df.groupby(["Group", "Cluster", "Week"])["Slot Request"].sum()

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

summed = full_df.groupby(["Group", "Cluster", "Week"])["Slot Request"].sum().reset_index() #reset_index turns this back into a normal dataframe
g = sns.FacetGrid(summed, col="Group") #create a new grid for each "Group"
g.map(sns.pointplot, 'Week', 'Slot Request') #map a pointplot to each group where X is Week and Y is slot request

答案 1 :(得分:0)

非常感谢@Sam的想法。我会在评论中发帖,但代码格式不明确。

使用以下内容:

summed = full_df.groupby(["Group", "Cluster", "Week"])["Slot Request"].sum().reset_index()
g = sns.FacetGrid(summed, row ="Cluster", hue = "Cluster", sharex = False)
g.map(sns.pointplot, "Week", "Slot Request", "Group", scale=0.2, palette = sns.color_palette("muted"))
g.set(xticks = np.arange(1, number_of_weeks+2,week_span))
g.set_xticklabels([w for w in range(1, number_of_weeks+2, week_span)])

我设法获得: enter image description here

但是,我不确定为所有3个图设置x_ticks和x_tick_labels,也不确定如何为颜色添加图例(每种颜色都是不同的" Group")。有什么建议吗?