Jeff
Jeff

Reputation: 69

Unable to Plot using Seaborn

Hi there My dataset is as follows

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

Now using this i need to find that on a given day how many times in a day the switch state is manipulated i.e switch on or switch off. My test code is given below

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

the result of this groupby clause is given as

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

Now as you can see that the count is concatenated in the time column. I need to separate them so that i can plot it using Seaborn scatter plot. I need to have the x and y values which in my case will be x=time,y=count Kindly help me out that how can i plot this column.

`

Upvotes: 1

Views: 118

Answers (1)

Van Peer
Van Peer

Reputation: 2167

You can try the following to get the data as a DataFrame itself

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

The two lines of code will give you an updated data frame df, which will add a column called count.

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

The above line will remove the duplicate rows. Then you can plot df['time'] and df['count'].

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

Upvotes: 1

Related Questions