# 2025년의 데이터 검증 환경(Landscape)

> Clean Markdown view of GeekNews topic #19734. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19734](https://news.hada.io/topic?id=19734)
- GeekNews Markdown: [https://news.hada.io/topic/19734.md](https://news.hada.io/topic/19734.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-03-13T23:41:39+09:00
- Updated: 2025-03-13T23:41:39+09:00
- Original source: [aeturrell.com](https://aeturrell.com/blog/posts/the-data-validation-landscape-in-2025)
- Points: 5
- Comments: 0

## Summary

2025년 데이터 검증 환경에서는 데이터의 품질을 자동 또는 반자동으로 확인하는 다양한 도구들이 사용되며, 각 도구는 특정 상황에 맞게 추천됩니다. Great Expectations는 생산 등급 수준의 강력한 도구로 복잡한 설정이 필요하지만 자동화 기능을 제공하며, Pandera는 간단한 검증에 적합하고 통계적 가설 검정 기능을 지원합니다. Pointblank는 직관적인 문법을 제공하는 최신 도구로 다양한 데이터 소스를 지원하며, Pydantic과 Cerberus는 각각 비정형 데이터와 단순 검증에 적합한 도구로 추천됩니다.

## Topic Body

- 현 시점(2025년)의 **주요 데이터 검증 도구**에 대한 설명 및 **상황 별 추천**   
- **데이터 검증(유효성 검사)** 은 데이터의 품질을 자동 또는 반자동으로 확인하는 과정임  
  - 데이터 유형 확인, 누락된 값 수 확인, 비정상적인 값 탐지  
- 데이터프레임의 행뿐만 아니라 API 입력값이나 폼 제출 값도 검증 가능  
- 사용자는 특정 열의 값이 특정 범위에 있어야 한다는 등의 규칙을 설정 가능  
- 검증 실패 시: 오류 발생, 검증 보고서 생성 후 수동 또는 자동 처리 가능  
  
### 왜 데이터 검증이 중요한가  
- 공공기관의 분석 작업은 다음 두 가지로 나뉨:  
  - **애드혹 분석** – 일회성 분석 작업  
  - **정기 통계 생성** – 정기적으로 새로운 데이터 수집 및 처리  
- 데이터 오류가 분석 결과에 영향을 주기 전에 검증이 필요함  
- 데이터 검증은 오류 위험을 줄이고 정확도를 높이는 데 효과적임  
  
### 주요 데이터 검증 도구  
#### 1. Great Expectations  
- **생산 등급 수준의 강력한 데이터 검증 도구**  
- 오픈 소스 패키지가 있으며, 유료 클라우드 서비스도 제공  
- 고급 기능 제공:  
  - 검증 실패 시 Slack 메시지 전송 등 자동화 가능  
- **설정이 복잡하고 데이터 과학 기술이 필요한 경우가 많음**  
- **예제 코드**:  
  ```python  
  import great_expectations as gx  
  import pandas as pd  
  
  context = gx.get_context()  
  df = pd.read_csv("https://raw.githubusercontent.com/great-expectations/gx_tutorials/main/data/yellow_tripdata_sample_2019-01.csv")  
  
  data_source = context.data_sources.add_pandas("pandas")  
  data_asset = data_source.add_dataframe_asset(name="pd dataframe asset")  
  batch_definition = data_asset.add_batch_definition_whole_dataframe("batch definition")  
  batch = batch_definition.get_batch(batch_parameters={"dataframe": df})  
  
  # 값이 1~6 사이인지 검증  
  expectation = gx.expectations.ExpectColumnValuesToBeBetween(column="passenger_count", min_value=1, max_value=6)  
  validation_result = batch.validate(expectation)  
  ```  
  
  **검증 실패 시 Slack 알림 설정 예제**:  
  ```python  
  from gx.actions import SlackNotificationAction, UpdateDataDocsAction  
  
  action_list = [  
      SlackNotificationAction(  
          name="send_slack_notification_on_failed_expectations",  
          slack_token="${validation_notification_slack_webhook}",  
          slack_channel="${validation_notification_slack_channel}",  
          notify_on="failure",  
          show_failed_expectations=True,  
      ),  
      UpdateDataDocsAction(name="update_all_data_docs"),  
  ]  
  ```  
  
#### 2. Pointblank  
- **2024년 출시된 최신 Python 데이터 검증 도구** (RStudio → Posit 제작)  
- Great Expectations의 영향을 받았으며 직관적인 문법 제공  
- Polars, Pandas, DuckDB 등 다양한 데이터 소스 지원  
- **예제 코드**:  
  ```python  
  import pointblank as pb  
  
  validation = (  
      pb.Validate(data=pb.load_dataset(dataset="small_table"))  
      .col_vals_gt(columns="d", value=100)  
      .col_vals_le(columns="c", value=5)  
      .col_exists(columns=["date", "date_time"])  
      .interrogate()  
  )  
  ```  
- **후속 작업 자동화 기능 부족** → 후속 작업을 수동으로 처리해야 함  
  
#### 3. Pandera  
- Great Expectations와 유사한 API 제공  
- **통계적 가설 검정 기능 지원**  
- Polars, Geopandas, Pyspark 등 다양한 데이터 소스 지원  
- **예제 코드**:  
  ```python  
  import pandas as pd  
  import pandera as pa  
  
  df = pd.DataFrame({  
      "column1": [1, 4, 0, 10, 9],  
      "column2": [-1.3, -1.4, -2.9, -10.1, -20.4],  
      "column3": ["value_1", "value_2", "value_3", "value_2", "value_1"],  
  })  
  
  schema = pa.DataFrameSchema({  
      "column1": pa.Column(int, checks=pa.Check.le(10)),  
      "column2": pa.Column(float, checks=pa.Check.lt(-1.2)),  
      "column3": pa.Column(str, checks=[  
          pa.Check.str_startswith("value_"),  
          pa.Check(lambda s: s.str.split("_", expand=True).shape[1] == 2)  
      ]),  
  })  
  
  validated_df = schema(df)  
  ```  
  
- **통계적 가설 검정 예제**:  
  ```python  
  from scipy import stats  
  
  schema = pa.DataFrameSchema({  
      "height_in_feet": pa.Column(float, [  
          pa.Hypothesis.two_sample_ttest(  
              sample1="M",  
              sample2="F",  
              groupby="sex",  
              relationship="greater_than",  
              alpha=0.05,  
              equal_var=True  
          )  
      ]),  
      "sex": pa.Column(str)  
  })  
  
  schema.validate(df)  
  ```  
  
#### 4. Pydantic  
- **데이터프레임이 아닌 딕셔너리 기반 검증 도구**  
- JSON 및 비정형 데이터 검증에 적합  
- FastAPI와 같은 API 프레임워크와 통합 가능  
- **예제 코드**:  
  ```python  
  from pydantic import BaseModel, PositiveInt  
  from datetime import datetime  
  
  class User(BaseModel):  
      id: int  
      name: str = 'John Doe'  
      signup_ts: datetime | None  
      tastes: dict[str, PositiveInt]  
  
  external_data = {  
      'id': 123,  
      'signup_ts': '2019-06-01 12:22',  
      'tastes': {'wine': 9, 'cheese': 7, 'cabbage': '1'}  
  }  
  
  user = User(**external_data)  
  ```  
  
#### 5. Cerberus  
- **딕셔너리 기반 검증 도구**  
- 간단한 규칙 기반 설정  
- True/False 값 반환 → 오류를 던지지 않음  
- **예제 코드**:  
  ```python  
  from cerberus import Validator  
  
  schema = {'name': {'type': 'string'}}  
  v = Validator(schema)  
  document = {'name': 'john doe'}  
  v.validate(document)  
  # True  
  ```  
  
#### 6. jsonschema  
- **JSON 데이터 검증 도구**  
- 스키마 기반 정의  
- **예제 코드**:  
  ```python  
  from jsonschema import validate  
  
  schema = {  
      "type": "object",  
      "properties": {  
          "price": {"type": "number"},  
          "name": {"type": "string"}  
      }  
  }  
  
  validate(instance={"name": "Eggs", "price": 34.99}, schema=schema)  
  ```  
  
### 공공 부문에서 어떤 도구를 사용할 것인가  
- **데이터프레임 또는 데이터베이스 검증**:  
  - 생산 시스템에서 사용 → Great Expectations 추천  
  - 간단한 검증 → Pandera 추천  
  - 최신 도구 시도 → Pointblank 추천  
- **API나 사용자 입력 검증**:  
  - 비정형 데이터 → Pydantic 추천  
- **단순 JSON 검증**:  
  - jsonschema 추천  
- **단순 검증이 필요하면**:  
  - Cerberus 추천

## Comments



_No public comments on this page._
