# Packages for representing time series data

**URL:** <https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699>\
**Category:** Data\
**Tags:** dataframes, time-series\
**Created:** [July 24, 2022, 8:47am UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699 "2022-07-24T08:47:18Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![ohmsweetohm1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ohmsweetohm1/32/49126_2.png) [@ohmsweetohm1](https://discourse.julialang.org/u/ohmsweetohm1)\
**Post date:** [July 24, 2022, 8:47am UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/1 "2022-07-24T08:47:18Z")

</div>

`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`](https://github.com/JuliaStats/TimeSeries.jl), which is unmaintained (last commit from Jan 2022 and latest release from Jul 2021)
- [`TSx.jl`](https://github.com/xKDR/TSx.jl), which is not registered.
- [`IndexedTables.jl`](https://github.com/JuliaData/IndexedTables.jl) as part of [`JuliaDB`](https://github.com/JuliaData/JuliaDB.jl), which seems abandoned (last commit from Aug 2021). However, it can be used on its own.
- [`TimeDag.jl`](https://github.com/invenia/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`.

---

<div class="post-metadata">

**Author:** ![JeffreySarnoff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jeffreysarnoff/32/1980_2.png) [@JeffreySarnoff](https://discourse.julialang.org/u/JeffreySarnoff)\
**Post date:** [July 24, 2022, 9:09am UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/2 "2022-07-24T09:09:59Z")

</div>

> **[GitHub - IBM/TSML.jl: A package for time series data processing,...](https://github.com/IBM/TSML.jl)**
>
> A package for time series data processing, classification, clustering, and prediction. - GitHub - IBM/TSML.jl: A package for time series data processing, classification, clustering, and prediction.

---

<div class="post-metadata">

**Author:** ![ohmsweetohm1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ohmsweetohm1/32/49126_2.png) [@ohmsweetohm1](https://discourse.julialang.org/u/ohmsweetohm1)\
**Post date:** [July 24, 2022, 10:40am UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/3 "2022-07-24T10:40:01Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [July 24, 2022, 12:49pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/4 "2022-07-24T12:49:48Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![chiraganand](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chiraganand/32/32787_2.png) [@chiraganand](https://discourse.julialang.org/u/chiraganand)\
**Post date:** [July 24, 2022, 7:03pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/5 "2022-07-24T19:03:24Z")

</div>

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).

---

<div class="post-metadata">

**Author:** ![ohmsweetohm1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ohmsweetohm1/32/49126_2.png) [@ohmsweetohm1](https://discourse.julialang.org/u/ohmsweetohm1)\
**Post date:** [July 24, 2022, 7:33pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/6 "2022-07-24T19:33:01Z")

</div>

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](https://www.mathworks.com/help/matlab/time-series-objects.html#:~:text=What%20Are%20Time%20Series%3F,evolution%20of%20a%20dynamic%20process.&text=There%20are%20two%20types%20of,object%20and%20a%20tscollection%20object.).

---

<div class="post-metadata">

**Author:** ![bkamins](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bkamins/32/208538_2.png) [@bkamins](https://discourse.julialang.org/u/bkamins)\
**Post date:** [July 24, 2022, 8:48pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/7 "2022-07-24T20:48:04Z")

</div>

> [@chiraganand](#):
>
> we are hoping to get a release out soon.

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!

---

<div class="post-metadata">

**Author:** ![ohmsweetohm1](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ohmsweetohm1/32/49126_2.png) [@ohmsweetohm1](https://discourse.julialang.org/u/ohmsweetohm1)\
**Post date:** [July 25, 2022, 9:30am UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/8 "2022-07-25T09:30:56Z")

</div>

It seems Matlab’s `timeseries` are deprecated and [`timetables`](https://de.mathworks.com/help/matlab/timetables.html?s_tid=CRUX_lftnav) are the successor.

---

<div class="post-metadata">

**Author:** ![chiraganand](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chiraganand/32/32787_2.png) [@chiraganand](https://discourse.julialang.org/u/chiraganand)\
**Post date:** [July 25, 2022, 5:00pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/9 "2022-07-25T17:00:47Z")

</div>

> 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.

---

<div class="post-metadata">

**Author:** ![chiraganand](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chiraganand/32/32787_2.png) [@chiraganand](https://discourse.julialang.org/u/chiraganand)\
**Post date:** [July 25, 2022, 5:14pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/10 "2022-07-25T17:14:52Z")

</div>

> [@ohmsweetohm1](#):
>
> I think Matlab has a good and complete interface to draw inspiration from, [see](https://www.mathworks.com/help/matlab/time-series-objects.html#:~:text=What%20Are%20Time%20Series%3F,evolution%20of%20a%20dynamic%20process.&text=There%20are%20two%20types%20of,object%20and%20a%20tscollection%20object.).

> [@ohmsweetohm1](#):
>
> It seems Matlab’s `timeseries` are deprecated and [`timetables`](https://de.mathworks.com/help/matlab/timetables.html?s_tid=CRUX_lftnav) are the successor.

Yes, there are some interesting ideas in `timetables` like [time tolerance](https://in.mathworks.com/help/matlab/ref/withtol.html) and [vartype](https://in.mathworks.com/help/matlab/ref/vartype.html). We are anyway planning to include regularity related methods like `isregular()`.

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [September 22, 2025, 10:54am UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/11 "2025-09-22T10:54:40Z")

</div>

Here is the main thread with resources:

> [@Time-series in Julia (working list)](https://discourse.julialang.org/t/time-series-in-julia-working-list/62539):
>
> Here is a summary of time series in Julia. (Ported from [this thread](https://discourse.julialang.org/t/how-can-we-create-a-leaner-ecosystem-for-julia/32904).) This is a Julia version of [CRAN Task View: Time Series Analysis](https://cran.r-project.org/web/views/TimeSeries.html). TL;DR [ARCHModels](https://github.com/s-broda/ARCHModels.jl) is the most developed volatility model pkg in Julia (it also fits ARMA models & does auto tuning) [StateSpaceModels](https://github.com/LAMPSPUC/StateSpaceModels.jl) is the most developed univariate TS pkg in Julia [TSAnalysis](https://github.com/fipelle/TSAnalysis.jl) is the most developed multivariate TS pkg in Julia Please comment w/ relevant code I missed 1: Working with TS data in Julia: Package Description Note [T…](https://github.com/JuliaStats/TimeSeries.jl)

---

<div class="post-metadata">

**Author:** ![PedroPizarro](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pedropizarro/32/216074_2.png) [@PedroPizarro](https://discourse.julialang.org/u/PedroPizarro)\
**Post date:** [September 22, 2025, 8:18pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/12 "2025-09-22T20:18:41Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [September 22, 2025, 8:25pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/13 "2025-09-22T20:25:26Z")

</div>

Off-topic. Please start a separare thread to avoid polluting this one.

---

<div class="post-metadata">

**Author:** ![PedroPizarro](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/pedropizarro/32/216074_2.png) [@PedroPizarro](https://discourse.julialang.org/u/PedroPizarro)\
**Post date:** [September 22, 2025, 8:55pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/14 "2025-09-22T20:55:41Z")

</div>

#[When should a package be added to JuliaStats](https://discourse.julialang.org/t/when-should-a-package-be-added-to-juliastats/10380)

There was a post with a pretty similar question.

---

<div class="post-metadata">

**Author:** ![ArchieCall](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/archiecall/32/206_2.png) [@ArchieCall](https://discourse.julialang.org/u/ArchieCall)\
**Post date:** [September 23, 2025, 12:55pm UTC](https://discourse.julialang.org/t/packages-for-representing-time-series-data/84699/15 "2025-09-23T12:55:50Z")

</div>

I would ignore the comment about **polluting**. You are not!
