Packages for representing time series data

DataFrames.jl seems to be the go to package for representing tabular data. It is very performant and well maintained.

However, if someone has strictly structured data like time series data (i.e. a vector of timestamp and value pairs) there is no specialization in Dataframes.jl.
Hence, in the Julia community several packages have emerged that address this.

Some of them are:

  • TimeSeries.jl, which is unmaintained (last commit from Jan 2022 and latest release from Jul 2021)
  • TSx.jl, which is not registered.
  • IndexedTables.jl as part of JuliaDB, which seems abandoned (last commit from Aug 2021). However, it can be used on its own.
  • TimeDag.jl Only has support for time series with one column.

Anything I missed?

All of them try to solve the problem of representing the time series data, merging, joining and be able to apply operations to it.

To me, representing time series data in Julia, seems like an important issue. Are there any plans of adding support for this to Dataframes.jl natively?
I think only very minimal code would be required, the rest may be handled by inheriting from an AbstractDataFrame.

3 Likes

A very nice package, however, not what I was looking for. As far as I can tell it uses DataFrames as input and assumes thar there is a column with the time stamps. I was looking for a package that validates this assumption via a type.

AFAICT the point of these packages is exactly to add what you want on top of DataFrames.jl. That is why we do not add it to DataFrames.jl to avoid duplication of the functionalities. Currently TSx.jl is most actively developed, you could ask @chiraganand for the current plans for its further development.

Hi @ohmsweetohm1, TSx.jl is being built to take DataFrames.jl functionality and build convenient interfaces for timeseries operations on top of it so you might find it useful.

The reason why it is not registered is because it needs some more basic timeseries related functionality and some more testing to ensure robustness of the code. Work is already on for achieving these, we are hoping to get a release out soon.

Till then one can try the package using the GitHub URL. We would love to hear from different users if the package satisfies their use case(s).

3 Likes

Thank you for your effort! I like the approach of re-using Dataframes.jl and not reinventing the wheel.

I think Matlab has a good and complete interface to draw inspiration from, see.

1 Like

Can you please ping me before the release? I would review the codebase then if you were willing to have such a check. Thank you!

4 Likes

It seems Matlab’s timeseries are deprecated and timetables are the successor.

Can you please ping me before the release? I would review the codebase then if you were willing to have such a check. Thank you!

@bkamins Yes, that would be great. Would love to have you review the code. Will be very helpful indeed.

Yes, there are some interesting ideas in timetables like time tolerance and vartype. We are anyway planning to include regularity related methods like isregular().

1 Like