A Python-based framework for comparing source and target CSV files to identify data discrepancies and generate comprehensive validation reports.
This framework provides automated data validation by comparing CSV files from source and target directories. It identifies differences in data, structure, and quality, generating actionable reports for data reconciliation.
- Schema Validation: Compare column names, data types, and structure
- Row Count Validation: Detect missing or extra rows between source and target
- Data Comparison: Identify row-level and column-level discrepancies
- Duplicate Detection: Flag duplicate records in datasets
- Null/Empty Analysis: Identify missing or null values
- Summary Reports: Generate human-readable validation summary with detailed discrepancy breakdown
- CSV Export: Export validation results for further analysis
data_validation_framework/
├── README.md
├── requirements.txt
├── config/
│ └── validation_config.yaml
├── src/
│ ├── __init__.py
│ ├── validator.py
│ ├── report_generator.py
│ └── utils.py
├── tests/
│ ├── __init__.py
│ ├── test_validator.py
│ └── test_report_generator.py
├── data/
│ ├── source/
│ │ └── source.csv
│ └── target/
│ └── target.csv
└── examples/
└── example_usage.py
# Clone the repository
git clone https://github.com/bbhuwanbhatt/data_validation_framework.git
cd data_validation_framework
# Create a virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txtfrom src.validator import DataValidator
# Initialize validator with source and target directories
validator = DataValidator(source_dir='data/source', target_dir='data/target')
# Run validation
results = validator.validate()
# Generate report
validator.generate_report(output_path='validation_report.txt')
# Print summary
print(validator.summary)Edit config/validation_config.yaml to customize validation behavior:
comparison:
case_sensitive: false
ignore_whitespace: true
null_as_empty: true
reporting:
max_discrepancies_shown: 100
include_duplicates: true
include_nulls: trueThe framework generates:
- Validation Summary: High-level metrics (total rows, matches, mismatches, etc.)
- Schema Differences: Column additions, removals, type mismatches
- Row-Level Discrepancies: Specific rows with differences
- Data Quality Issues: Duplicates, null values, inconsistencies
python examples/example_usage.py# Run all tests
pytest tests/
# Run with coverage
pytest --cov=src tests/Main class for data validation operations.
Methods:
validate(): Execute full validation pipelinegenerate_report(output_path): Generate text reportget_summary(): Return validation summary dictexport_results(csv_path): Export results to CSV
Handles report formatting and output.
Methods:
generate_text_report(): Create formatted text reportgenerate_html_report(): Create HTML report (future)format_discrepancies(): Format discrepancy details
- Fork the repository
- Create a feature branch (
git checkout -b feature/your-feature) - Commit changes (
git commit -am 'Add feature') - Push to branch (
git push origin feature/your-feature) - Create a Pull Request
MIT License - see LICENSE file for details
For issues or questions, please open an issue on GitHub.