data-loading · git:20260424.d50cf5a · 2026-04-24 · sha256 a9ee26d36ac8f61a
data-loading git:20260424.d50cf5aA
Immutable. This exact content never changes and is served at /api/v1/blob/a9ee26d36ac8f61a.
---
name: data-loading
description: Load and parse CSV/TXT files from travel database for itinerary planning
---
# Data Loading Skill
## Overview
This skill covers loading and parsing the travel database files used for building itineraries.
## Supported File Types
### TXT Files (Cities and States)
- `citySet_with_states.txt`: Format is `city_name,state`
- One entry per line
- Use for identifying valid city names and states
### CSV Files (Accommodations, Restaurants, Attractions)
- Header row included
- Standard CSV format (comma-separated)
- Handle missing/empty fields appropriately
## Python Code Example
```python
import csv
import json
from typing import List, Dict
# Load city data
def load_cities_with_states(filepath: str) -> List[Dict[str, str]]:
"""Load city and state mappings"""
cities = []
try:
with open(filepath, 'r') as f:
for line in f:
parts = line.strip().split(',')
if len(parts) == 2:
cities.append({'city': parts[0].strip(), 'state': parts[1].strip()})
except Exception as e:
print(f"Error loading cities: {e}")
return cities
# Load CSV data
def load_csv_data(filepath: str) -> List[Dict]:
"""Load CSV file and return list of dictionaries"""
data = []
try:
with open(filepath, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
if row:
data.append(row)
except Exception as e:
print(f"Error loading CSV: {e}")
return data
# Load distance matrix
def load_distance_matrix(filepath: str) -> Dict[str, Dict[str, float]]:
"""Load distance matrix and return nested dictionary"""
matrix = {}
try:
with open(filepath, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
from_city = row.get('from')
if from_city not in matrix:
matrix[from_city] = {}
# Parse remaining columns as distances to other cities
for city, distance in row.items():
if city != 'from' and distance:
try:
matrix[from_city][city] = float(distance)
except ValueError:
pass
except Exception as e:
print(f"Error loading distance matrix: {e}")
return matrix
```
## Key Considerations
1. **Encoding**: Use UTF-8 encoding for CSV files
2. **Headers**: CSV files include headers, use `DictReader` for easier access
3. **Missing Data**: Check for empty/null values before processing
4. **Data Types**: Convert numeric strings to appropriate types (int, float)
5. **Errors**: Wrap file operations in try-except blocks
## Usage Pattern
```python
# Load all necessary data
cities = load_cities_with_states('/app/data/background/citySet_with_states.txt')
accommodations = load_csv_data('/app/data/accommodations/clean_accommodations_2022.csv')
restaurants = load_csv_data('/app/data/restaurants/clean_restaurant_2022.csv')
attractions = load_csv_data('/app/data/attractions/attractions.csv')
distances = load_distance_matrix('/app/data/googleDistanceMatrix/distance.csv')
# Filter and process as needed
ohio_cities = [c for c in cities if c['state'] == 'Ohio']
```