47 lines
1.2 KiB
Python
47 lines
1.2 KiB
Python
# scripts/list_time_gaps.py
|
|
from __future__ import annotations
|
|
|
|
from pathlib import Path
|
|
|
|
from meteo.dataset import load_raw_csv
|
|
from meteo.gaps import find_time_gaps
|
|
|
|
|
|
CSV_PATH = Path("data/weather_minutely.csv")
|
|
|
|
|
|
def main() -> None:
|
|
if not CSV_PATH.exists():
|
|
print(f"⚠ Fichier introuvable : {CSV_PATH}")
|
|
return
|
|
|
|
df = load_raw_csv(CSV_PATH)
|
|
print(f"Dataset minuté chargé : {CSV_PATH}")
|
|
print(f" Lignes : {len(df)}")
|
|
|
|
gaps = find_time_gaps(df)
|
|
total_missing = sum(g.missing_intervals for g in gaps)
|
|
|
|
print()
|
|
print("=== Gaps temporels détectés ===")
|
|
print(f"Nombre de gaps : {len(gaps)}")
|
|
print(f"Total minutes manquantes (théoriques) : {total_missing}")
|
|
print()
|
|
|
|
if not gaps:
|
|
print("✔ Aucun gap détecté, la série est parfaitement régulière.")
|
|
return
|
|
|
|
print("Top 10 des gaps les plus longs :")
|
|
gaps_sorted = sorted(gaps, key=lambda g: g.missing_intervals, reverse=True)[:10]
|
|
for g in gaps_sorted:
|
|
print(
|
|
f"- De {g.before} à {g.after} "
|
|
f"(durée: {g.duration}, manquants: {g.missing_intervals}, "
|
|
f"de {g.missing_start} à {g.missing_end})"
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|