Filtering¶
FeedFilteringMixin ¶
Mixin providing Feed.filter_by_date_range/filter_by_date/filter_by_time_range/filter_by_route_type/filter and the calendar_new_start_date/calendar_new_end_date helpers.
filter_by_date_range ¶
filter_by_date_range(start_date: datetime | date | None = None, end_date: datetime | date | None = None, date_type: str | list[str] | None = None) -> pl.LazyFrame
Filters a LazyFrame based on a date range.
It uses the Calendar object to find all service_ids active within
the specified date range and then semi-joins the input data with these
service IDs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start_date
|
datetime
|
The start of the date range (inclusive). |
None
|
end_date
|
datetime
|
The end of the date range (inclusive). |
None
|
Returns:
| Type | Description |
|---|---|
LazyFrame
|
pl.LazyFrame: The filtered LazyFrame. |
Source code in pyGTFSHandler/analysis/filtering.py
filter_by_date ¶
Filters a LazyFrame based on a date.
It uses the Calendar object to find all service_ids active within
the specified date range and then semi-joins the input data with these
service IDs.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
date
|
datetime
|
The desired date. |
required |
Returns:
| Type | Description |
|---|---|
LazyFrame
|
pl.LazyFrame: The filtered LazyFrame. |
Source code in pyGTFSHandler/analysis/filtering.py
filter_by_time_range ¶
filter_by_time_range(start_time: datetime | time = time(hour=0), end_time: datetime | time = time(hour=23, minute=59, second=59)) -> pl.LazyFrame
Filters a LazyFrame based on a time-of-day range.
It handles trips defined by frequencies.txt differently from those with
explicit schedules.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start_time
|
datetime
|
The start of the time range. Defaults to 00:00:00. |
time(hour=0)
|
end_time
|
datetime
|
The end of the time range. Defaults to 23:59:59. |
time(hour=23, minute=59, second=59)
|
Returns:
| Type | Description |
|---|---|
LazyFrame
|
pl.LazyFrame: The filtered LazyFrame. |
Source code in pyGTFSHandler/analysis/filtering.py
filter_by_route_type ¶
Filters self.lf down to rows whose route_type matches route_types.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
route_types
|
list | int | str
|
One or more route type names (e.g. |
required |
Returns:
| Type | Description |
|---|---|
LazyFrame
|
pl.LazyFrame: |
Source code in pyGTFSHandler/analysis/filtering.py
filter ¶
filter(start_date: datetime | date | None = None, end_date: datetime | date | None = None, date: datetime | date | None = None, date_type: str | list[str] | None = None, start_time: datetime | time = time(hour=0), end_time: datetime | time = time(hour=23, minute=59, second=59), route_types: list | int | str | None = None, frequencies: bool = True, in_aoi: bool = False, delete_last_stop: bool = False) -> pl.LazyFrame
Filters the integrated feed LazyFrame (self.lf) by date/time/route/AOI.
Central helper used by most Feed analysis methods
(get_headway_at_stops, get_headway_at_edges, etc.) to narrow
self.lf down to a single service window before aggregating.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
start_date
|
datetime | date | None
|
Inclusive start of a date range filter. Ignored if
|
None
|
end_date
|
datetime | date | None
|
Inclusive end of a date range filter. Ignored if
|
None
|
date
|
datetime | date | None
|
A single service date; takes precedence over
|
None
|
date_type
|
str | list[str] | None
|
Optional weekday/weekend/holiday classification
filter (see |
None
|
start_time
|
datetime | time
|
Start of the daily time window. |
time(hour=0)
|
end_time
|
datetime | time
|
End of the daily time window. |
time(hour=23, minute=59, second=59)
|
route_types
|
list | int | str | None
|
Optional route type filter. |
None
|
frequencies
|
bool
|
If |
True
|
in_aoi
|
bool
|
If |
False
|
delete_last_stop
|
bool
|
If |
False
|
Returns:
| Type | Description |
|---|---|
LazyFrame
|
pl.LazyFrame: The filtered LazyFrame. |
Source code in pyGTFSHandler/analysis/filtering.py
calendar_new_end_date ¶
calendar_new_end_date(new_end_date: datetime | date, file_id: int | None = None, gtfs_name: str | None = None)
Overwrites end_date in self.calendar.lf (calendar.txt rows), in place.
Useful for extending/truncating a feed's validity window (e.g. before combining several historical feeds) without re-loading from disk.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_end_date
|
datetime | date
|
Replacement end date. |
required |
file_id
|
int | None
|
If given, only rows loaded from this source file index are updated. |
None
|
gtfs_name
|
str | None
|
If given (and |
None
|
Source code in pyGTFSHandler/analysis/filtering.py
calendar_new_start_date ¶
calendar_new_start_date(new_start_date: datetime | date, file_id: int | None = None, gtfs_name: str | None = None)
Overwrites start_date in self.calendar.lf (calendar.txt rows), in place.
Mirror of calendar_new_end_date for the start of the validity
window; see that method for the file_id/gtfs_name selection
semantics.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
new_start_date
|
datetime | date
|
Replacement start date. |
required |
file_id
|
int | None
|
If given, only rows loaded from this source file index are updated. |
None
|
gtfs_name
|
str | None
|
If given (and |
None
|
Source code in pyGTFSHandler/analysis/filtering.py
See also Edge & filtering methodology.