无法使用Seaborn进行绘图

时间:2018-07-27 11:40:05

标签: python pandas seaborn scatter-plot pandas-groupby

嗨,我的数据集如下

username    switch_state    time    
abcd         sw-off         07:53:15 +05:00 
abcd         sw-on          07:53:15 +05:00

现在使用此功能,我需要确定在给定的一天中,一天中有多少次操作了开关状态,即打开还是关闭。我的测试代码如下所示

switch_off=df.loc[df['switch_state']=='sw-off']#only off switches
groupy_result=switch_off.groupby(['time','username']).count()['switch_state'].unstack#grouping the data on the base of time and username and finding the count on a given day. fair enough

此groupby子句的结果为

print(groupy_result)
username  abcd
time             
05:08:35        3
07:53:15        3
07:58:40        1

现在您可以看到,时间列中的计数是串联的。我需要将它们分开,以便可以使用Seaborn散点图进行绘制。我需要有x和y值,在我的情况下将是x = time,y = count 请帮我解决如何绘制此列。

`

1 个答案:

答案 0 :(得分:1)

您可以尝试以下操作以本身DataFrame的形式获取数据

df = df.loc[df['switch_state']=='sw-off']
df['count'] = df.groupby(['username','time'])['username'].transform('count')

这两行代码将为您提供一个更新的数据框df,它将添加一个名为count的列。

df = df.drop_duplicates(subset=['username', 'time'], keep='first')

以上行将删除重复的行。然后可以绘制df['time']df['count']

plt.scatter(df['time'], df['count'])