Closed takohei closed 4 months ago
この変更では、GTFSデータを扱う関数の入力方法が簡素化され、データ処理の効率が向上しました。また、データの整合性チェックが強化され、オプショナルな列にデフォルト値を設定する機能が追加されています。
ファイル | 変更内容 |
---|---|
.../__main__.py , gtfs.py |
GTFS 関数がgtfs_dir の代わりにgtfs_path を受け取るように変更。ZIPファイルの解凍と一時ディレクトリの使用を不要に。 |
aggregate.py |
__aggregate_similar_stops メソッドがservice_flag ではなくtrip_ids_filtered_by_day を使ってstop_times をフィルタ。__get_similar_stop_tuple でのparent_station のチェックがpd.isnull を使用するよう変更。__get_trips_on_a_date ではcalendar.txt が欠けている場合に空のシリーズを生成し、サービスと日付のフィルタリングロジックをリファクタ。 |
🐰✨ ぴょんぴょん跳ねる小さな足で
コードの森を駆け巡る
新しい道を切り開くたび
データの海はさらに明るく
ぴかぴかの未来へと続く🌟
🐇💻
gtfs_parser/aggregate.py (1)
108-108: Do not compare types, use `isinstance()`
gtfs_parser/gtfs.py (6)
`14-68`: `GTFS` 関数のリファクタリングが行われ、ディレクトリと zip ファイルの両方を処理し、ファイルをメモリ内で完全に処理するようになりました。必要なファイルのチェックや特定の列のキャストも行われています。 --- `31-37`: zip ファイルが見つからない場合に `FileNotFoundError` をスローするようになっていますが、エラーメッセージにパスを含めることで、問題の特定が容易になります。 --- `45-46`: 必要なファイルが不足している場合にエラーをスローする処理が追加されました。これにより、ユーザーはどのファイルが不足しているかを明確に知ることができます。 --- `54-56`: 特定の列をキャストする処理が追加されました。これにより、データの整合性が向上し、後続の処理でのエラーが減少する可能性があります。 --- `59-60`: `stops` テーブルの `parent_station` 列がオプショナルであることを考慮し、存在しない場合に None を設定するようになっています。これにより、データの柔軟性が向上します。 --- `64-68`: 単一のエージェンシーの場合に `agency_id` を設定する処理が追加されました。これにより、データの一貫性が保たれ、エージェンシー間でのデータの混在を防ぐことができます。gtfs_parser/__main__.py (1)
`55-55`: GTFS コンストラクタにソースディレクトリを直接渡すように変更されました。これにより、zip ファイルの展開や一時ディレクトリの使用が不要になり、入力ソースの取り扱いが簡素化されます。gtfs_parser/aggregate.py (3)
`48-50`: `stop_times` を `trip_ids_filtered_by_day` に基づいてフィルタリングするように変更されました。これにより、より正確なデータ処理が可能になります。 --- `160-160`: `parent_station` のチェックに `pd.isnull` を使用するように変更されました。これにより、より正確な null チェックが可能になり、データの整合性が向上します。 --- `409-439`: `calendar.txt` が欠落している場合に空のシリーズを生成し、サービスと日付のフィルタリングロジックをリファクタリングするようになりました。これにより、必須でないファイルが欠けていても処理を続行できるようになり、柔軟性が向上します。
Close Issues
Description
Allow missing of optional items.
Process zip files on memory without extracting them into directories
Add FileNotFound message
Read NaN-like strings as valid values instead of NaN
Refactoring
Manual Testing
Summary by CodeRabbit
calendar.txt
が存在しない場合の処理を追加し、サービスと日付のフィルタリングロジックをリファクタリングしました。