Skip to content

Cum să validezi scheme de date în Python

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să validezi scheme de date în Python. We cover key concepts, practical examples, and best practices.

Validarea schemelor de date în Python cu Great Expectations și pandera asigură că seturile de date respectă tipurile, constrângerile și regulile de business așteptate înainte de analiză.

The Problem

Datele care intră într-un sistem nu respectă întotdeauna formatul așteptat. Coloane lipsă, tipuri greșite, valori în afara domeniului sau NULL-uri neașteptate pot distruge analizele și pot cauza erori greu de depanat. Fără validare, descoperi problemele mult prea târziu.

The Wrong Way

import pandas as pd

df = pd.read_csv("date_intrare.csv")
# Presupui că datele sunt corecte și continui
df["pret"] * df["cantitate"]  # crapă dacă "pret" e string

Problemă: Fără validare explicită, erorile apar în producție, nu la intrarea în pipeline.

The Right Way

import pandera as pa
from pandera import Column, DataFrameSchema, Check

schema = DataFrameSchema({
    "id": Column(int, Check.greater_than(0)),
    "nume": Column(str, Check.str_length(1, 100)),
    "pret": Column(float, Check.greater_than(0)),
    "data": Column(pd.DatetimeTZDtype(), nullable=True)
})

df = pd.read_csv("date_intrare.csv")

try:
    schema.validate(df, lazy=True)
    print("Validare trecută cu succes!")
except pa.errors.SchemaErrors as e:
    print("Erori de validare:\n", e.failure_cases)

Output:

Erori de validare:
    index  column     check  failure_case
0     12    pret  greater_than          -5
1     45    nume  str_length        None

Step-by-Step Fix

1. Definește schema cu pandera

Stabilește tipurile și constrângerile pentru fiecare coloană.

schema = DataFrameSchema({
    "varsta": Column(int, Check.in_range(0, 120)),
    "email": Column(str, Check.str_matches(r"^[a-z@.]+$"))
})

2. Validează datele

df_validat = schema.validate(df, lazy=True)

3. Folosește Great Expectations pentru validări complexe

import great_expectations as ge

df_ge = ge.dataset.PandasDataset(df)
df_ge.expect_column_values_to_be_between("pret", 0, 100000)
df_ge.expect_column_values_to_not_be_null("id")
results = df_ge.validate()
print(results)

Prevention Tips

  • Validează datele imediat după citire, înainte de orice transformare
  • Folosește lazy=True pentru a colecta toate erorile odată
  • Definește scheme ca fișiere YAML separare pentru reutilizare

Common Mistakes

  1. Validare după transformare — nu mai știi dacă eroarea e din sursă sau din cod
  2. Fără lazy=True — validarea se oprește la prima eroare
  3. Constrângeri prea permisive — schema nu prinde date invalide
  4. Ignorarea erorilor de validaretry/except gol care înghite excepțiile
  5. Fără versionarea schemei — când datele se schimbă, schema trebuie actualizată

FAQ

### Ce diferență este între pandera și Great Expectations?

Pandera se concentrează pe validarea schemelor de tipuri și constrângeri. Great Expectations oferă validări mai complexe și profiling automat al datelor.

### Pot valida fișiere Parquet?

Da, ambele biblioteci funcționează cu orice DataFrame pandas, indiferent de formatul de intrare.

### Cum versionez schemele de date?

Salvează schemele pandera ca fișiere YAML și adnotează-le cu versiunea setului de date.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu pandas pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro