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)
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.
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).
Yes, there are some interesting ideas in timetables like time tolerance and vartype. We are anyway planning to include regularity related methods like isregular().
I have some naive questions: how does a topic get its own “space” in the Julia ecosystem, like JuliaStats? For example, JuliaStats groups together several packages related to statistical computing. How and when does a package or area get merged into one of these “spaces”?
For instance, I noticed that the TimeSeries.jl package is part of JuliaStats, but compared to other specialized .jl packages, it seems to lack many features. So I’m wondering:
What determines whether a package belongs to an existing space like JuliaStats, or that it gets added into?
How does a topic grow to the point of getting its own space?
Is this something decided by the community, maintainers, or some formal process?