{datetime.datetime(2020, 5, 25, 0, 0): '519',
datetime.datetime(2020, 5, 26, 0, 0): '223',
datetime.datetime(2020, 5, 27, 0, 0): '203',
datetime.datetime(2020, 5, 29, 0, 0): '265',
datetime.datetime(2020, 5, 30, 0, 0): '262',
datetime.datetime(2020, 5, 31, 0, 0): '510',
datetime.datetime(2020, 6, 2, 0, 0): '329',
datetime.datetime(2020, 6, 3, 0, 0): '486',
datetime.datetime(2020, 6, 4, 0, 0): '766',
datetime.datetime(2020, 6, 7, 0, 0): '343',
datetime.datetime(2020, 6, 8, 0, 0): '372'}
вы можете собрать линк словарь где найти разницу между каждой парой данных
{datetime.datetime(2020, 5, 25, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 26, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 27, 0, 0): datetime.timedelta(days=-2),
datetime.datetime(2020, 5, 29, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 30, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 5, 31, 0, 0): datetime.timedelta(days=-2),
datetime.datetime(2020, 6, 2, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 6, 3, 0, 0): datetime.timedelta(days=-1),
datetime.datetime(2020, 6, 4, 0, 0): datetime.timedelta(days=-3),
datetime.datetime(2020, 6, 7, 0, 0): datetime.timedelta(days=-1)}
ну и по этой дельте, вы можете понимать если первая дельта равная -1 то это смена, если вторая то подработка.
а дальше уже чет придумывать и разделить на однородные данные
>>> d= {v: v ** 2 for v in range(10)}
>>> d
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
>>> k = list(range(12))
>>> al = [v**2 for v in range(12)]
>>> def get_values(dict_:dict, keys, alters):
... return [dict_.get(key, alter) for key, alter in zip(keys, alters)]
...
>>> get_values(d, k, al)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121]
из соответственно можно разделить это на несколько массивов исходя из этой логике. И по ней вы можете дальше чет делать и строить