Back to Polars

Parsing

docs/user-guide/transformations/time-series/parsing.md

latest2.6 KB
Original Source

Parsing

Polars has native support for parsing time series data and doing more sophisticated operations such as temporal grouping and resampling.

Datatypes

Polars has the following datetime datatypes:

  • Date: Date representation e.g. 2014-07-08. It is internally represented as days since UNIX epoch encoded by a 32-bit signed integer.
  • Datetime: Datetime representation e.g. 2014-07-08 07:00:00. It is internally represented as a 64 bit integer since the Unix epoch and can have different units such as ns, us, ms.
  • Duration: A time delta type that is created when subtracting Date/Datetime. Similar to timedelta in python.
  • Time: Time representation, internally represented as nanoseconds since midnight.

Parsing dates from a file

When loading from a CSV file Polars attempts to parse dates and times if the try_parse_dates flag is set to True:

{{code_block('user-guide/transformations/time-series/parsing','df',['read_csv'])}}

python
--8<-- "python/user-guide/transformations/time-series/parsing.py:setup"
--8<-- "python/user-guide/transformations/time-series/parsing.py:df"

On the other hand binary formats such as parquet have a schema that is respected by Polars.

Casting strings to dates

You can also cast a column of datetimes encoded as strings to a datetime type. You do this by calling the string str.strptime method and passing the format of the date string:

{{code_block('user-guide/transformations/time-series/parsing','cast',['read_csv','strptime'])}}

python
--8<-- "python/user-guide/transformations/time-series/parsing.py:cast"

The strptime date formats can be found here..

Extracting date features from a date column

You can extract data features such as the year or day from a date column using the .dt namespace on a date column:

{{code_block('user-guide/transformations/time-series/parsing','extract',['year'])}}

python
--8<-- "python/user-guide/transformations/time-series/parsing.py:extract"

Mixed offsets

If you have mixed offsets (say, due to crossing daylight saving time), then you can use utc=True and then convert to your time zone:

{{code_block('user-guide/transformations/time-series/parsing','mixed',['strptime','convert_time_zone'])}}

python
--8<-- "python/user-guide/transformations/time-series/parsing.py:mixed"