Привет, Мой набор данных выглядит следующим образом
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
Теперь, когда вы видите, что счетчик соединен в столбце времени. Мне нужно разделить их так, чтобы я мог построить его, используя график рассеяния на море. Мне нужно иметь значения x и y, которые в моем случае будут x = время, y = count. Пожалуйста, помогите мне в том, как я могу построить этот столбец.
'
Вы можете попробовать следующее, чтобы получить данные как сам 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'])