def analyse_by_day()

in tools/analysis/ping-patterns/ping-patterns.py [0:0]


def analyse_by_day(data):
    """
    Find the "issues" notated in the `notes` field on each ping and generate
    a graph of their frequencies over time.
    """
    data_by_day = {}
    for ping in data:
        if ping["ping_type"] == "metrics":
            day = ping["end_time_local"].replace(hour=0, minute=0, second=0)
            data_by_day.setdefault(day, {})
            day_data = data_by_day[day]
            day_data.setdefault("total", 0)
            day_data["total"] += 1
            for note in ping["notes"]:
                day_data.setdefault(note, 0)
                day_data[note] += 1
            for i, fix in enumerate(FIXES):
                if ping["version_date"] is not None and ping["version_date"] >= fix[1]:
                    fix_id = f"fix{i}"
                    day_data.setdefault(fix_id, 0)
                    day_data[fix_id] += 1

    # Trim the first and last couple of days, since they aren't meaningful
    data_by_day = sorted(list(data_by_day.items()))[2:-2]

    return data_by_day