Source Summary és Integritásvizsgálat
Ebben a fejezetben két olyan elemző funkció kerül bemutatásra, amelyek a teljesen összefésült D adatmodell minőségének és forráseloszlásának áttekintését szolgálják:
Forrásonkénti rekordmegoszlás (source summary)
Adatintegritás-ellenőrzés (integrity validation)
1. Forrásonkénti rekordösszesítő (source summary)
A merged master táblában minden sorhoz tartozik egy sources mező,
amely azt jelzi, hogy az adott rekord melyik eredeti datasetből
(A, B vagy C) származik. A következő függvény egy részletes
összesítőt készít:
hány rekord érkezett csak A-ból,
csak B-ből,
csak C-ből,
illetve ezek különböző kombinációiból (pl. “A,B”, “B,C”, “A,B,C”).
Az eredményt egy jól áttekinthető CSV táblázatba is elmenti.
A generált állomány itt érhető el:
source_summary.csv — Forrásonkénti rekordmegoszlás
def save_source_summary(d: pd.DataFrame, output_dir: str):
summary = d["sources"].value_counts().reset_index()
summary.columns = ["forrás_kombináció", "rekordok_száma"]
summary["tartalmaz_A"] = summary["forrás_kombináció"].str.contains("A")
summary["tartalmaz_B"] = summary["forrás_kombináció"].str.contains("B")
summary["tartalmaz_C"] = summary["forrás_kombináció"].str.contains("C")
output_file = os.path.join(output_dir, "source_summary.csv")
summary.to_csv(output_file, index=False, encoding="utf-8-sig")
logging.info(f"Source summary saved: {output_file}")
print(summary.to_string(index=False))
Ez az összesítő fontos szerepet játszik annak megértésében, hogy milyen mértékben fedik egymást a forrásadatok, illetve mennyire egyensúlyos az A–B–C hozzájárulás a végső D táblában.
2. Adatintegritás-ellenőrzés
Az integritásvizsgálat célja, hogy feltárja a leggyakoribb adatminőségi problémákat a merged táblában. A függvény a következő ellenőrzéseket végzi el:
duplikált appid értékek,
hiányzó appid értékek,
hiányzó játéknevek,
hiányzó forrásjelölés,
érvénytelen dátumformátumok a release_date mezőben.
Az eredmény egy külön CSV jelentésben kerül mentésre.
integrity_report.csv — Integritásvizsgálati összesítő
def validate_integrity(d: pd.DataFrame, output_dir: str):
results = []
results.append({
"ellenőrzés": "Duplikált appid-ek",
"hibák_száma": d["appid"].duplicated().sum()
})
results.append({
"ellenőrzés": "Hiányzó appid-ek",
"hibák_száma": d["appid"].isna().sum()
})
if "name" in d.columns:
results.append({
"ellenőrzés": "Hiányzó játéknevek",
"hibák_száma": d["name"].isna().sum()
})
if "sources" in d.columns:
results.append({
"ellenőrzés": "Hiányzó forrásjelölés",
"hibák_száma": (d["sources"] == "").sum()
})
if "release_date" in d.columns:
invalid = pd.to_datetime(d["release_date"], errors="coerce").isna().sum()
results.append({
"ellenőrzés": "Érvénytelen release_date",
"hibák_száma": invalid
})
integrity_df = pd.DataFrame(results)
output_file = os.path.join(output_dir, "integrity_report.csv")
integrity_df.to_csv(output_file, index=False, encoding="utf-8-sig")
logging.info(f"Integrity check completed, saved to {output_file}")
print(integrity_df.to_string(index=False))
Mindkét ellenőrzés a merged tábla minőségét segít értékelni, és kulcsfontosságú a normalizálási lépések biztonságos végrehajtásához.