A systematic review of Python packages for time series analysis

Julien Siebert1[0000−0002−7696−0046], Janek Groß1[0000−0002−6306−711X], and Christof Schroth1[0000−0003−0828−4063]

Fraunhofer-Institut f¨urExperimentelles Software Engineering

Abstract. This paper presents a systematic review of Python packages focused on time series analysis. The objective is first to provide an overview of the different time series analysis tasks and preprocessing methods implemented, but also to give an overview of the development characteristics of the packages (e.g., dependencies, community size, etc.). This review is based on a search of literature databases as well as GitHub repositories. After the filtering process, 40 packages were analyzed. We classified the packages accord- ing to the analysis tasks implemented, the methods related to data preparation, and the means to evaluate the results produced (methods and access to evaluation data). We also reviewed the licenses, the packages community size, and the dependencies used. Among other things, our results show that forecasting is by far the most implemented task, that half of the packages provide access to real datasets or allow generating synthetic data, and that many packages depend on a few libraries (the most used ones being , and ). One of the lessons learned from this review is that the process of finding a given implementation is not inherently simple, and we hope that this review can help practitioners and researchers navigate the space of Python packages dedicated to time series analysis.

1 Introduction

A time series is a set of data points generated from successive measurements over time. The anal- ysis of this type of data has found applications in many fields, from finance to health, including the monitoring of computer networks or the environment. The current trend of decreasing costs of sensors and data storage, the increasing performance of big-data and technologies such as machine learning or data mining, are opening up more and more possibilities to acquire and analyze temporal data. For example, a simple search on Scopus or Web of Science with the following search string (restricted to documents titles) "time series" AND ("analysis" OR "data mining" OR "machine learning") shows an increasing trend in the number of publi- cations within the last 10 years (see figure 1). Moreover, as the number of time series analysis application cases rises, more and more data scientists, data engineers, analysts, and software engineers have to use dedicated time series analysis libraries. In this article, we systematically review Python packages dedicated to time series analysis. Python is one of the programming languages of choice for Data Scientists1. Data Scientists arXiv:2104.07406v1 [cs.MS] 15 Apr 2021 are not only responsible for analyzing data, their task is also to ensure that services based on these analysis reach a sufficient level of maturity to be deployed and maintained in production. In this context, we review not only the analysis tasks implemented in the packages, but also several factors external to the tasks alone, such as which dependencies are used or how big is the community behind the development of the package in question. Our goal is not to evaluate the quality of the implementations themselves but to provide a structured overview that is useful

1 See the survey performed by Kaggle in 2018: https://www.kaggle.com/kaggle/kaggle-survey-2018. 2 Julien Siebert, Janek Groß, and Christof Schroth

1000 700 Scopus WoS 0.24 600 800 0.16 0.22 500 0.20 0.14 600 0.18 400 0.12 Trend (WoS) Trend (Scopus) 0.16 400 300

2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 200 200

100 Time Series Publications (WoS) Time Series Publications (Scopus)

0 0 1940 1960 1980 2000 2020 Year

Fig. 1: Number of documents retrieved by Scopus (left axis) and Web Of Science (WoS, right axis) with the search string (restricted to documents titles): ”time series” AND (”analysis” OR ”data mining” OR ”machine learning”) over time. The inlet represents the trend (in %) over the last 20 years (the trend is normalized over the total publications in DBLP (the data is accessible in https://dblp.org/statistics/publicationsperyear.html). both to data scientists confronted with time series analysis (and confronted with the choice of which packages to rely on), as well as to the scientific community and to the community of Python developers working in this field.

2 Related Work

Time series analysis is a broad research field covering many application domains. The literature contains many reviews, either focusing on the analysis tasks and methods (see for instance the following reviews on forecasting [32,49,57,79], clustering and classification [1,2,7,27,76], anomaly detection [6,15,90], changepoint analysis [66,4,84], pattern recognition [88,83], or dimensional- ity reduction [61]) or focusing on a specific application domain (see for instance the following surveys on finance [65], IoT and Industry 4.0 [54,45,93], or health [92]). Over time, several for- mal definitions and reviews of time series analysis tasks have been published, see for example [25,24,36]. However, existing implementations (software packages or libraries) are often listed - usually in a non-systematic way - in textbooks (like [16,70] for R, or [56] for Python) or grey literature (for example, Towards Data Science2, KDnuggets3 or Machine Learning Mastery4). Some pa- pers review the state of the open source implementations for a given topic. For example, Shen et al. surveyed open source implementations of clinical software available in GitHub [67]. Both Dozmorov and Russel et al. [60,22] use GitHub to survey open source implementations of bioin- formatics software. Few papers actually systematically review packages or libraries in a specific language. For example [35] review packages for analyzing animal movements data in R, and [72] survey R packages for hydrology. With respect to Python, we found several reviews of packages

2 https://towardsdatascience.com/ 3 https://www.kdnuggets.com/ 4 https://machinelearningmastery.com/ A systematic review of Python packages for time series analysis 3 for different domains: social media content scrapping [81], topological data analysis [58], or data mining [75]. For time series analysis in Python, the only related work we could find is [34] where the authors review packages focusing on forecasting. There is, to the best of our knowledge, no systematic review of Python packages for generic time series analysis.

3 Methodology

On January 2021, we conducted a systematic literature review with a snowballing strategy follow- ing the guidelines from Kitchenham et al. [38,39,37] and Wohlin [89]. However, these guidelines focus on printed literature, not on software packages. We also followed the recommendation from Crowston [17,18] regarding mining software repositories. Our search process is illustrated by the figure 2 and was performed both in literature databases and code repositories (GitHub). The following sections provide more details on the different steps of the search itself.

Github search 115 Removing 81 Is a Python 59 Focuses on time (IC:1, 2.1, 2.2) duplicates Package? (IC2.3) series? (IC3)

47

Literature Checking Removing + search (IC:1, 3) 104 Github (IC2.*) 12 duplicates 5

52 Generic vs Snowballing Analysis Domain spe- (IC1, 2.*, 3) 40 cific (IC4) 67

Fig. 2: Search and filtering process overview. Edges labels indicate the number of repositories left after each step.

3.1 Research questions We already stated our goal and the context we set for this review in the introduction. We formalize this context as follows: we want to analyze Python packages dedicated to time series analysis, for the purpose of structuring the available implementations (we explicitly exclude the purpose of evaluating them), with respect to the implemented time series analysis tasks, from the viewpoint of practitioners, in the context of building data-driven services on top of these implementations. Our research questions are: – RQ1 Which time series analysis tasks exist, and which of these are currently implemented in maintained and supported Python packages? – RQ2 How do the packages support the evaluation of the produced results? – RQ3 What insights can we gain to estimate the durability of a given package and make an informed choice about its long-term use?

3.2 Inclusion criteria To guide our review and filter relevant packages, we defined the following inclusion criteria (IC): The package should be open source, written in Python, available on GitHub (IC1). The 4 Julien Siebert, Janek Groß, and Christof Schroth package should be actively maintained (last commit in less than 6 months, i.e., after July 2020) (IC2.1); it should have more than 100 GitHub stars (IC2.2); and it should be listed in PyPI5 and be installable via pip6 or conda7 (IC2.3). The package should target explicitly time series analysis (IC3). This inclusion criteria implies that we exclude packages that allows for time series analysis but whose focus is not primarily time series analysis in itself (for example, generic scientific computing packages such as scipy or numpy, packages dedicated to data manipulation or storage such as pandas, or generic machine learning or data mining packages such as scikit- learn). Finally, we focused our search on packages offering methods that tend to be domain agnostic (IC4). Domain specific packages are packages aiming to solve time series analysis in a specific domain (for example, audio, finance, geoscience, etc.). They usually focus on specific types and formats of time series and domain related analysis tasks. On the contrary, packages classified as generic are those that offer methods that tend to be domain agnostic.

3.3 Searching open source repositories in GitHub

In order to filter GitHub repositories, we selected a list of topics8, filtered the results by language (Python, IC1), by number of stars (at least 100, IC2.2), and considered only repositories that were updated after July 2020 (IC2.1). In order to select a list of relevant topics, we first manually selected a list of known time series analysis packages (i.e., seeds) as well as a sample of the packages using the topic ”time-series”. We examined the topics that these packages used and then extended this list of topics with different spellings while manually double checking their existence in GitHub. We considered a total of 16 different topics. The full list of topics as well as the query used to retrieve the packages are both given in appendix A.1 and A.2 respectively. Figure 3 displays the number of repositories returned prior to any data cleaning (duplicates removal, exclusion). The first search led to a total of 115 repositories.

Removing duplicates We found 24 unique repositories that were duplicated (i.e., listed in more than one topic). Appendix A.3 provides the list of duplicates. After duplicate removal, there were 81 unique repositories remaining.

Checking if the repository contains the code of a Python package We restrict ourselves to pack- ages that are referenced by PyPI and can be installed with pip or conda (IC2.3). Note, that the repository name may not reflect the package name (if this one exists). For example, the repos- itory https://github.com/PyWavelets/pywt contains the source code for the package named pywavelets. The repository https://github.com/angus924/rocket does not contain the source code for the Python package rocket. We therefore checked each of the 81 repositories manually and excluded 22 repositories for a total of 59 remaining repositories that contain the source code of a Python package.

Including only packages focused on time series analysis Finally, we manually checked whether the focus of the package is time series analysis (IC3). After exclusion, 47 remaining packages were kept for further analysis. The list of excluded packages is given in appendix A.4.

5 PyPI is the Python Package Index, a repository of software for the Python programming language, see https://pypi.org/. 6 pip is the Python Package Installer, see https://pip.pypa.io/en/stable/ 7 conda is a Python package management system and environment management provided by the Ana- conda distribution, see https://docs.conda.io/en/latest/. 8 https://github.com/topics A systematic review of Python packages for time series analysis 5

time-series 44 signal-processing 20 timeseries 15 time-series-analysis 12 time-series-forecasting 7 time-series-classification 7 timeseries-analysis 3 time-series-regression 2 time-series-prediction 2 Topics time-series-segmentation 1 time-series-data-mining 1 time-series-clustering 1 timeseries-forecasting 0 time-series-visualization 0 time-series-forecast 0 time-series-decomposition 0

0 10 20 30 40 Number of repositories

Fig. 3: Number of repositories returned for each topics (before any duplicate removal)

3.4 Searching scientific bibliography databases

The search for packages only in repository may not be sufficient to cover all existing packages. For example, one of our seed package (namely tsfresh) was not uncovered by the search. Hence, we extended our search to existing literature and software databases. We used the following bibliography databases: IEEE explore9, ACM digital library10, Web of Science11, Scopus 12, as well as the following sources: The journal of open source software (JOSS)13, and Zenodo14. For IEEE explore, ACM digital library, Web of Science, and Scopus, we limited ourselves to the search string "Python" AND "time series" in documents title. For the journal of open source software (JOSS) we first used the key words "time series" and then filtered the results by language (here is the query used: https://joss.theoj.org/papers/search?q=time+series). For Zenodo, we also used the search string "Python" AND "time series", limited the search to the software category and removed the duplicates (e.g., different versions of the same software). Here is the full query for Zenodo: https://zenodo.org/search?page=1&size=200&q=%22time% 20series%22%20AND%20%22python%22&sort=mostrecent&type=software. We only included references that matched out our inclusion criteria IC1, IC2.*, and IC3. Table 1 summarizes the search results obtained. We manually cross checked the results obtained from GitHub with the results obtained by our literature search. From the 11 packages resulting form our literature search, only 5 repositories were not already in the GitHub search results: tsfresh, neurodsp, EoN, nolds, and pastas.

9 https://ieeexplore.ieee.org 10 https://dl.acm.org/ 11 https://www.webofknowledge.com 12 https://www.scopus.com/ 13 https://joss.theoj.org/ 14 https://zenodo.org/ 6 Julien Siebert, Janek Groß, and Christof Schroth

Data Source Number of Number of in- Included References hits (after cluded docu- duplicates ments removal) IEEEexplore 1 0 ACM digital library 2 1 [20] Web of Science 10 4 [12,3,20,26] Scopus 12 4 [12,3,20,26] JOSS 21 1 [43] zenodo 68 6 [73,53,14,63,80,71] Table 1: Literature search results

3.5 Snowballing In order to extend our search, we used a snowballing approach. We first manually reviewed the package documentations to find links to similar packages. Only two packages: tsfresh15 and sktime16 actually document related packages. From this list of related packages, we manually reviewed the corresponding documentations and GitHub repositories in order to find related papers. We finally reviewed the papers and performed a single backward snowballing pass in order to include more packages. A total of 15 new packages were included after the snowballing phase, for a total of 67 packages (see table 5 for the full list). The list of 15 included packages is given in appendix A.5.

3.6 Generic vs. Domain specific packages (IC4) Finally we classified the packages in two categories: domain specific and generic. As previously defined, we consider domain specific packages as packages aiming to solve time series analysis in a specific domain (for example, audio, finance, geoscience, etc.) and generic packages as those offering methods that tend to be domain agnostic. From the 67 packages, 27 packages were categorized as domain specific and 40 packages were categorized as generic. Table 2 shows the domain specific packages together with the extracted domains.

Domain Number Packages names finance 6 AlphaPy, jhTAlib, deepdow, ffn, ta, ta-lib neuroscience 5 NeuroKit, neurodsp, mne-python, nitime, sigpy astronomy 4 pycbc, exoplanet, lightkurve, sunpy audio 4 pyAudioAnalysis, surfboard, nara wpe, librosa geoscience 4 obspy, MintPy, PyRate, pastas bio-signal 2 BioSPPy, yasa epidemiology 1 eon molecular dynamics 1 PyEMMA Table 2: List of packages categorized as domain specific.

15 https://tsfresh.readthedocs.io/en/latest/text/introduction.html# what-else-is-out-there 16 https://www.sktime.org/en/latest/related_software.html A systematic review of Python packages for time series analysis 7

4 Results

In total we analyzed 40 Python packages.

4.1 RQ1: implementation of the time series analysis tasks

In order to answer our research question RQ1 (What time series analysis tasks do exist, and which one are implemented in Python?), we use both a top down approach where we reviewed the formal definitions of tasks given in the literature and an iterative and bottom-up approach, where we scanned the packages documentation and code (when necessary) in order to extract time series analysis tasks present in the packages.

Formal tasks definitions time series analysis tasks are formally defined in the literature. Generic time series data-mining reviews like [25,24,28,36] define the following tasks. Indexing (query by content): given a time series and some similarity measure, find the nearest matching time series [25,24,36]. Clustering: find groups (clusters) of similar time series [25,24,36]. Classification: assign a time series to a predefined class [25,24,36]. Segmentation (Summarization): create an accurate approximation of a time series, by reducing its dimensionality while retaining its essential features [25,24,36]. Forecasting (Prediction): given a time series dataset up to a given time tn, forecast the next values [25,24]. Anomaly Detection: find abnormal data points or subsequences (also called discords) [25,24]. Motif Discovery: find every subsequences (called motif) that appears recurrently in a time series [25,24]. Rules Discovery (Rule mining): find the rules that may govern associations between sets of time series or subsequences [28,25] Esling and Agon also define ”implementation components” [24]: preprocessing (e.g., filtering noise, removing outliers, or imputing missing values), representation (e.g., dimensionality reduc- tion, finding fundamental shape characteristics), similarity measures, and indexing schemes.

Implemented tasks categories While analyzing the packages, we found packages explicitly men- tioning the tasks corresponding to our literature review. We found 20 packages explicitly pro- viding forecasting methods (T1), 6 packages providing classification methods (T2), 6 packages providing clustering methods (T3), 5 packages providing anomaly detection methods (T4), and 4 packages providing segmentation methods (T5). We classified 4 packages under the category pattern recognition (T6) that encompass both the indexing and motif discovery tasks. We also classified 5 packages under the category change point detection (T7) that was not in our literature review. Finally, we could not find any package explicitly mentioning the rules discovery task. Considering the ”implementation components”, we found 4 packages explicitly providing di- mensionality reduction methods (DP1), 17 packages explicitly providing missing values imputa- tion methods (DP2), 16 packages explicitly providing decomposition methods (e.g., decomposing time series into trends, seasonal components or frequency components) (DP3), 24 packages ex- plicitly providing generic transformation and features generation methods (DP4), and 7 packages explicitly providing methods for computing similarity measures (DP5). Table 3 gives an overview of our categorization of the packages.

Forecasting is by far the most implemented task. There is no significant difference, in terms of number of packages, between the other tasks. We need to be cautious when interpreting these numbers. First, the tasks as formally defined in the literature may not be explicitly mentioned in the packages documentation or code. Second, the delineation between a task and the methods used to implement it, is sometimes blurry and context dependent. For example, one can perform change point detection for the sake of finding time points where some time series properties change 8 Julien Siebert, Janek Groß, and Christof Schroth and, as a consequence, raising alarms in a production system, or it can be used as a preprocessing step for segmenting a time series into different phases. Another example are forecasting models that can also be applied for outliers detection.

4.2 RQ2: Evaluation

In order to answer our research question RQ2 (Given a certain task, how do the packages support the evaluation of the produced results?) we analyzed the 40 packages classified as generic in order to extract information about the evaluation of the results computed with the packages. We came up with two main clusters: functions that facilitates the evaluation itself (E1, E2, E3) and function to either generate synthetic data or to download existing datasets (D1, D2). We found 13 packages explicitly providing methods for model selection, hyperparameters search or features selection (E1), 20 packages explicitly providing evaluation metrics and statistical tests (E2), and 25 packages providing visualization methods (E3). Concerning the data, we found 16 packages explicitly providing functions to generate synthetic time series data (D1), and 19 packages providing access to time series datasets (D2). A large majority of the packages provide a way to evaluate the results produced. Only 4 packages have not been classified in any of the E or D classes.

4.3 RQ3: Packages

Our research question RQ3 (What insights can we gain to estimate the durability of a given package and make an informed choice about its long-term use?) it is probably too broad to be answered in a single article and will require further research. However, GitHub provides many statistics about a repository (e.g., the number of stars, forks, issues) that can be used to get a first idea of the liveliness of the different packages. We used the number of GitHub stars and forks in order to estimate the community behind each package. Figure 4 shows the distribution of stars and forks for all the 40 packages.

stars 4 prophet (12256, 3506) 10 forks statsmodels (5931, 2144)

tsfresh (5326, 846) 103

sktime (3467, 426)

hmmlearn (2185, 633)

103

102 Stars (log scale) Forks (log scale)

2 10 101 0 5 10 15 20 25 30 35 40 Package rank

Fig. 4: Distribution of stars and forks for all 40 repositories. The number of stars is displayed in a log scale. The repositories are ranked by their stars numbers, in descending order. A systematic review of Python packages for time series analysis 9

Package Tasks Data preparation Evaluation Data Name T1 T2 T3 T4 T5 T6 T7 DP1 DP2 DP3 DP4 DP5 E1 E2 E3 D1 D2 arch + + + + atspy + + + + + + + banpei + + darts + + + + + + + + dtaidistance + + + flood-forecast + + + + gluonts + + + + + + + hcrystalball + + + + + + + + hypertools + + + + + luminaire + + + + + + + matrixprofile + + + + + + + + neuralprophet + + + + + pmdarima + + + + + + + pyaf + + + + + + + + pycwt + + pydlm + + + + EMD-signal + + pyFTS + + + + + + + pyodds + + + + pytorchts + + + + + + pyts + + + + + + + + + + + PyWavelets + + + + ruptures + + + + seglearn + + sktime + + + + + + + + + sktime-dl + + + statsmodels + + + + + + + + + stumpy + + + tftb + + + + + tslearn + + + + + + + + tsfresh + + + + + nolds + + + + cesium + deeptime + + + + + + + + deltapy + + + + + + hmmlearn + + + linearmodels + + mcfly + + + prophet + + + + + scikit-multiflow + + + + + + + + Total 20 6 6 5 4 4 5 4 17 16 24 7 13 20 25 16 19 Table 3: Packages classification. Tasks: T1 (forecasting), T2 (classification), T3 (clustering), T4 (anomaly detection), T5 (segmentation), T6 (pattern recognition), T7 (change point detection). Data preparation (also called implementation components): DP1 (dimensionality reduction), DP2 (missing values imputation), DP3 (decomposition), DP4 (preprocessing), DP5 (similar- ity measures). Evaluation: E1 (model selection, hyperparameters search, features selection), E2 (metrics and statistical tests), E3 (visualization). Datasets: D1 (synthetic data generation), and D2 (contains datasets). 10 Julien Siebert, Janek Groß, and Christof Schroth

Another information relevant to practitioners are the licenses under which the implementa- tions are available. Figure 5 shows the distribution of the licenses used among the 40 repositories.

MIT License 10

Other 9

BSD 3-Clause "New" or "Revised" License 8

Apache License 2.0 5

None 3 Licenses

GNU General Public License v3.0 2

BSD 2-Clause "Simplified" License 2

GNU Lesser General Public License v3.0 1

0 2 4 6 8 10 Number of repositories

Fig. 5: Distribution of licenses (number of repositories per license). None means that no license information was available from GitHub directly.

We also investigated the dependencies used by each of the selected 40 packages. We use the Python program johnnydep17 to automatically collect the dependencies without installing the packages directly. We only looked at direct dependencies required for the installation of the package. We did not consider specific installation options like, for example, dev or test. We did not search for all dependencies recursively. Here is an example of how we called the program johnnydep PACKAGENAME --fields=ALL --no-deps --output-format=json. The dependencies of 2 packages could not be retrieved automatically (cesium and deeptime). We also manually cross-checked the dependencies and filled the missing ones.Table 4a shows which dependencies are used the most by the packages and table 4b shows, within the selected 40 packages, which ones are used as dependencies. Almost all packages depends upon numpy (37/40). The top 5 dependencies are numpy, scipy (scientific computing), pandas (data manipulation), scikit-learn (machine learning) and mat- plotlib (visualization).

5 Threat to validity

In this section, we discuss the choices that have been made and may affect the validity of this review. This review focuses on GitHub. Gitlab and Sourceforge were checked manually, but we decided not to include them as sources due to the insufficient number of results: only one more package could have been included, although statistics such as stars from one software repository to another are not comparable. We have limited ourselves to packages with at least 100 stars. This somehow arbitrary limit lead us to exclude packages with a number of stars close to 100 (e.g., the Stingray package: 93

17 https://pypi.org/project/johnnydep/ A systematic review of Python packages for time series analysis 11

Package Name Used Rank numpy 37 1 scipy 30 2 pandas 23 3 Package Name Is used by scikit-learn 21 4 gluonts atspy 16 5 pmdarima atspy statsmodels 8 6 sktime sktime-dl tqdm 7 7 statsmodels arch, atspy, deltapy, torch 6 8 linearmodels, lumi- numba 6 8 naire, pmdarima, cython 6 8 sktime, tsfresh tensorflow 5 9 tsfresh atspy seaborn 4 10 (b) Packages used as dependency. future 4 10 joblib 4 10 (a) Ranking of the most used dependen- cies. Table 4: Dependencies

stars at the time of the study). We excluded packages that were not maintained but could have been relevant for practitioners. An example is the pyflux package (forecasting). We also excluded repositories that are not Python packages. This lead us to discard interesting repositories like ad examples (providing a state of the art anomaly detection methods) and many repositories containing code scripts associated with scientific papers. Concerning the search process, We used a mix of literature database and GitHub topics together with a snowballing approach to find relevant packages. This is due to the fact that several known packages could not be found automatically. For example, the package cesium does not list any topic and therefore was not found in our first GitHub search. It was found after snowballing. Another example is tsfresh, that was missing in the first GitHub search and was found from the literature search. The problem may be the language filter (strictly Python) as tsfresh lists some of the topics we searched for (”time-series”). We tried to automate some of the tasks (e.g., filtering repositories that contains Python packages or finding the dependencies), using both PyPI and GitHub API, or the johnnydep tool. There were false positives and false negatives. This led us to manually cross check the results obtained from our automated search. Whether a package focuses on time series analysis or not can sometimes be fuzzy. For exam- ple, we decided to leave the topic of survival analysis out of this review. We initially found 2 lifelines and scikit-survival. The same apply to the boundary between generic and domain specific packages. We took a conservative approach to keep our survey sufficiently focused. As already mentioned, the definition of what should be considered a tasks vs. an ”implemen- tation component” is difficult as a strict boundary may not even exist. Moreover, it is sometimes not clear what methods the packages provide without actually installing them and testing them. Indeed the documentation may not be complete or the vocabulary used can differ from a package to another one. A solution was to check the code itself. Here again the search strings used play an important role in order to avoid false negatives. 12 Julien Siebert, Janek Groß, and Christof Schroth

6 Conclusion

This paper presented a systematic review of Python packages dedicated to time series analysis. The search process led to a total of 40 packages that were further analyzed. We proposed a categorization of the packages based on the analysis tasks implemented, the methods related to data preparation, the means to evaluate the results produced, and further looked into some development aspects (licenses, stars, dependencies). We also discussed the search process with its possible bias and the challenges we encountered while searching for and reviewing the relevant packages. The scope of this survey does however not include the evaluation of the implementations and the results they would produce, for example, on benchmark datasets. We hope that this review can help practitioners and researchers navigate the space of Python packages dedicated to time series analysis.

References

1. Abanda, A., Mori, U., Lozano, J.A.: A review on distance based time series classification. Data Mining and Knowledge Discovery 33(2), 378–412 (2019). https://doi.org/10.1007/s10618-018-0596- 4 2. Aghabozorgi, S., Seyed Shirkhorshidi, A., Ying Wah, T.: Time-series clustering – A decade review. Information Systems 53, 16–38 (2015). https://doi.org/10.1016/j.is.2015.04.007 3. Alexandrov, A., Benidis, B., Bohlke-Schneider, M., Flunkert, V., Gasthaus, J., Januschowski, T., Maddix, D.C., Rangapuram, S., Salinas, D., Schulz, J., Stella, L., T¨urkmen,A.C., Wang, Y.: Glu- onTS: Probabilistic and Neural Time Series Modeling in Python. Journal of Machine Learning Research 21(116), 1–6 (2020) 4. Aminikhanghahi, S., Cook, D.J.: A Survey of Methods for Time Series Change Point Detection. Knowledge and information systems 51(2), 339–367 (2017). https://doi.org/10.1007/s10115-016- 0987-z 5. Andrew C. Heusser, Kirsten Ziman, Lucy L. W. Owen, Jeremy R. Manning: HyperTools: a Python Toolbox for Gaining Geometric Insights into High-Dimensional Data. Journal of Machine Learning Research 18(152), 1–6 (2018) 6. Ayadi, A., Ghorbel, O., Obeid, A.M., Abid, M.: Outlier detection approaches for wireless sensor networks: A survey. Computer Networks 129, 319–333 (2017). https://doi.org/10.1016/j.comnet.2017.10.007 7. Bagnall, A., Lines, J., Bostrom, A., Large, J., Keogh, E.: The great time series classification bake off: a review and experimental evaluation of recent algorithmic advances. Data Mining and Knowledge Discovery 31(3), 606–660 (2017). https://doi.org/10.1007/s10618-016-0483-9 8. Beyreuther, M., Barsch, R., Krischer, L., Megies, T., Behr, Y., Wassermann, J.: ObsPy: A Python Toolbox for Seismology. Seismological Research Letters 81(3), 530–533 (2010). https://doi.org/10.1785/gssrl.81.3.530 9. Biwer, C.M., Capano, C.D., De, S., Cabero, M., Brown, D.A., Nitz, A.H., Raymond, V.: Py- CBC Inference: A Python-based Parameter Estimation Toolkit for Compact Binary Coales- cence Signals. Publications of the Astronomical Society of the Pacific 131(996), 024503 (2019). https://doi.org/10.1088/1538-3873/aaef0b 10. Carlos Carreiras, Ana Priscila Alves, Andr´eLouren¸co,Filipe Canento, Hugo Silva, Ana Fred, et al.: BioSPPy: Biosignal Processing in Python (2015–) 11. Chakraborty, S., Shah, S., Soltani, K., Swigart, A., Yang, L., Buckingham, K.: Building an Auto- mated and Self-Aware Anomaly Detection System 12. Christ, M., Braun, N., Neuffer, J., Kempa-Liehr, A.W.: Time Series FeatuRe Extraction on basis of Scalable Hypothesis tests (tsfresh – A Python package). Neurocomputing 307, 72–77 (2018). https://doi.org/10.1016/j.neucom.2018.03.067 13. Cole, S., Donoghue, T., Gao, R., Voytek, B.: NeuroDSP: A package for neural digital signal process- ing. Journal of Open Source Software 4(36) (2019). https://doi.org/10.21105/joss.01272 A systematic review of Python packages for time series analysis 13

14. Collenteur, R., Bakker, M., Calj´e,R., Schaars, F.: Pastas: open-source software for the analysis of hydrogeological time series (2020). https://doi.org/10.5281/ZENODO.4277358 15. Cook, A.A., Misirli, G., Fan, Z.: Anomaly Detection for IoT Time-Series Data: A Survey. IEEE Internet of Things Journal 7(7), 6481–6494 (2020). https://doi.org/10.1109/JIOT.2019.2958185 16. Cowpertwait, P.S.P., Metcalfe, A.V.: Introductory time series with R. Use R!, Springer, Dordrecht and New York (2009) 17. Crowston, K., Wei, K., Howison, J., Wiggins, A.: Free/libre open-source software development: What we know and what we do not know. ACM Computing Surveys (CSUR) 44(2), 1–35 (2008) 18. Crowston, K., Wei, K., Howison, J., Wiggins, A.: Free/libre open-source software develop- ment: What we know and what we do not know. ACM Comput. Surv. 44(2) (Mar 2008). https://doi.org/10.1145/2089125.2089127, https://doi.org/10.1145/2089125.2089127 19. Daniel Foreman-Mackey, Arjun Savel, Rodrigo Luger, Ian Czekala, Eric Agol, Adrian Price-Whelan, Emily Gilbert, Timothy D. Brandt, Tom Barclay, Luke Bouma: exoplanet-dev/exoplanet v0.4.4 (2021). https://doi.org/10.5281/zenodo.1998447 20. David Burns, C.W.: Seglearn: A Python Package for Learning Sequences and Time Series. arXiv (2018) 21. Defferrard, M., Martin, L., Pena, R., Perraudin, N.: Pygsp: Graph Signal Processing In Python (2017). https://doi.org/10.5281/ZENODO.1003158 22. Dozmorov, M.G.: Github statistics as a measure of the impact of open-source bioin- formatics software. Frontiers in Bioengineering and Biotechnology 6, 198 (2018). https://doi.org/10.3389/fbioe.2018.00198, https://www.frontiersin.org/article/10.3389/ fbioe.2018.00198 23. Drude, L., Heymann, J., Boeddeker, C., Haeb-Umbach, R.: NARA-WPE: A Python package for weighted prediction error dereverberation in Numpy and Tensorflow for online and offline processing. In: 13. ITG Fachtagung Sprachkommunikation (ITG 2018) (2018) 24. Esling, P., Agon, C.: Time-series data mining. ACM Computing Surveys 45(1), 1–34 (2012). https://doi.org/10.1145/2379776.2379788 25. Fakhrazari, A., Vakilzadian, H.: A survey on time series data mining. In: 2017 IEEE International Conference on Electro Information Technology (EIT). pp. 476–481. IEEE (5/14/2017 - 5/17/2017). https://doi.org/10.1109/EIT.2017.8053409 26. Faouzi, J., Janati, H.: Pyts: A python package for time series classification. Journal of Machine Learning Research 21 (2020) 27. Fawaz, H.I., Forestier, G., Weber, J., Idoumghar, L., Muller, P.A.: Deep learning for time series classification: a review. Data Mining and Knowledge Discovery 33(4), 917–963 (2019). https://doi.org/10.1007/s10618-019-00619-1 28. Fu, T.c.: A review on time series data mining. Engineering Applications of Artificial Intelligence 24(1), 164–181 (2011). https://doi.org/10.1016/j.engappai.2010.09.007 29. Giannakopoulos, T.: pyAudioAnalysis: An Open-Source Python Library for Audio Signal Analysis. PloS one 10(12), e0144610 (2015). https://doi.org/10.1371/journal.pone.0144610 30. Godfried, I., Mahajan, K., Wang, M., Li, K., Tiwari, P.: FlowDB a large scale precipitation, river, and flash flood dataset 31. Gramfort, A., Luessi, M., Larson, E., Engemann, D.A., Strohmeier, D., Brodbeck, C., Goj, R., Jas, M., Brooks, T., Parkkonen, L., H¨am¨al¨ainen, M.: MEG and EEG data analysis with MNE-Python. Frontiers in neuroscience 7, 267 (2013). https://doi.org/10.3389/fnins.2013.00267 32. Hendikawati, P., Subanar, Abdurakhman, Tarno: A survey of time series forecasting from stochas- tic method to soft computing. Journal of Physics: Conference Series 1613(1), 012019 (2020). https://doi.org/10.1088/1742-6596/1613/1/012019 33. Jacob Montiel, Jesse Read, Albert Bifet, Talel Abdessalem: Scikit-Multiflow: A Multi-output Stream- ing Framework. Journal of Machine Learning Research 19(72), 1–5 (2018) 34. Januschowski, T., Gasthaus, J., Wang, Y.: Open-Source Forecasting Tools in Python. Foresight: The International Journal of Applied Forecasting (55) (2019) 35. Joo, R., Boone, M.E., Clay, T.A., Patrick, S.C., Clusella-Trullas, S., Basille, M.: Navigating through the r packages for movement. The Journal of animal ecology 89(1), 248–267 (2020). https://doi.org/10.1111/1365-2656.13116 14 Julien Siebert, Janek Groß, and Christof Schroth

36. Keogh, E., Kasetty, S.: On the Need for Time Series Data Mining Benchmarks: A Survey and Empirical Demonstration (2003) 37. Kitchenham, B., Brereton, P.: A systematic review of systematic review process research in software engineering. Information and Software Technology 55(12), 2049–2075 (2013). https://doi.org/10.1016/j.infsof.2013.07.010 38. Kitchenham, B., Charters, S.: Guidelines for performing Systematic Literature Reviews in Software Engineering 39. Kitchenham, B., Pearl Brereton, O., Budgen, D., Turner, M., Bailey, J., Linkman, S.: Systematic literature reviews in software engineering – A systematic literature review. Information and Software Technology 51(1), 7–15 (2009). https://doi.org/10.1016/j.infsof.2008.09.009 40. Krepl, J.: DeepDow: Portfolio optimization with deep learning (2020). https://doi.org/10.5281/ZENODO.3906121 41. Krischer, L., Megies, T., Barsch, R., Beyreuther, M., Lecocq, T., Caudron, C., Wassermann, J.: ObsPy: a bridge for seismology into the scientific Python ecosystem. Computational Science & Discovery 8(1), 014003 (2015). https://doi.org/10.1088/1749-4699/8/1/014003 42. Laszuk, D.: Python implementation of Empirical Mode Decomposition algorithm (2017) 43. Law, S.: STUMPY: A Powerful and Scalable Python Library for Time Series Data Mining. Journal of Open Source Software 4(39), 1504 (2019). https://doi.org/10.21105/joss.01504 44. Lee, G., Gommers, R., Waselewski, F., Wohlfahrt, K., O’Leary, A.: PyWavelets: A Python package for wavelet analysis. Journal of Open Source Software 4(36), 1237 (2019). https://doi.org/10.21105/joss.01237 45. Lepenioti, K., Bousdekis, A., Apostolou, D., Mentzas, G.: Prescriptive analytics: Literature re- view and research challenges. International Journal of Information Management 50, 57–70 (2020). https://doi.org/10.1016/j.ijinfomgt.2019.04.003 46. Li, Y., Zha, D., Venugopal, P., Zou, N., Hu, X.: PyODDS: An End-to-End Outlier Detection System with Automated Machine Learning. In: Companion Proceedings of the Web Conference 2020. pp. 153–157. WWW ’20, Association for Computing Machinery, New York, NY, USA (2020). https://doi.org/10.1145/3366424.3383530 47. Lightkurve Collaboration, Cardoso, J. V. d. M., Hedges, C., Gully-Santiago, M., Saunders, N., Cody, A.M., Barclay, T., Hall, O., Sagear, S., Turtelboom, E., Zhang, J., Tzanidakis, A., Mighell, K., Coughlin, J., Bell, K., Berta-Thompson, Z., Williams, P., Dotson, J., Barentsen, G.: Lightkurve: Kepler and TESS time series analysis in Python (2018) 48. L¨oning, M., Bagnall, A., Ganesh, S., Kazakov, V., Lines, J., Kir´aly, F.J.: sktime: A Unified Interface for Machine Learning with Time Series. In: Workshop on Systems for ML at NeurIPS 2019 (2019) 49. Mahalakshmi, G., Sridevi, S., Rajaram, S.: A survey on forecasting of time series data. In: Engineering, I.C.o.C.T., Data, I. (eds.) 2016 International Conference on Computing Technolo- gies and Intelligent Data Engineering (ICCTIDE’16). pp. 1–8. IEEE, [Piscataway, NJ] (2016). https://doi.org/10.1109/ICCTIDE.2016.7725358 50. Makowski, D., Pham, T., Zen, Brammer, J.C., Lespinasse, F., Pha.m Tien H`ung, Wong, A., Le, D., Teo, E., Richer, R., TiagoTostas, Valls, R.P., Savur, C., Sourcery AI, Bishop, M., Anderson, R., Avramidis, S., Epifano, J.R., sillabo, Sch¨olzel, C., Chuan-Peng, H., Kassy Raymond, MinsooYeo, Vanshika Gupta: neuropsychology/NeuroKit: 0.0.42 (2020). https://doi.org/10.5281/ZENODO.4285656 51. McFee, B., Raffel, C., Liang, D., Ellis, D., McVicar, M., Battenberg, E., Nieto, O.: librosa: Audio and Music Signal Analysis in Python. In: Proceedings of the 14th Python in Sci- ence Conference. pp. 18–24. Proceedings of the Python in Science Conference, SciPy (2015). https://doi.org/10.25080/Majora-7b98e3ed-003 52. Meert, W., Hendrickx, K., van Craenendonck, T.: wannesm/dtaidistance v2.0.0 (2020). https://doi.org/10.5281/ZENODO.3981067 53. Miller, J.C., Ting, T.: EoN (Epidemics on Networks): a fast, flexible Python pack- age for simulation, analytic approximation, and analysis of epidemics on networks (2019). https://doi.org/10.5281/ZENODO.3572756 54. Mohammadi, M., Al-Fuqaha, A., Sorour, S., Guizani, M.: Deep Learning for IoT Big Data and Streaming Analytics: A Survey A systematic review of Python packages for time series analysis 15

55. Mumford, S.J., Freij, N., Christe, S., Ireland, J., Mayer, F., Shih, A.Y., Stansby, D., Hughitt, V.K., Ryan, D.F., Liedtke, S., P´erez-Su´arez,D., Vishnunarayan K, I., Hayes, L., Chakraborty, P., Inglis, A., Pattnaik, P., Sip˝ocz,B., Rishabh Sharma, Leonard, A., Hewett, R., Hamilton, A., Manhas, A., Asish Panda, Earnshaw, M., Barnes, W., Choudhary, N., Kumar, A., Singh, R., Chanda, P., Md Akramul Haque, Kirk, M.S., Mueller, M., Konge, S., Rajul Srivastava, Jain, Y., Bennett, S., Baruah, A., Arbolante, Q., Charlton, M., Mishra, S., Maloney, S., Chorley, N., Himanshu, Chouhan, A., Mason, J.P., Sanskar Modi, Sharma, Y., Zivadinovic, L., Naman, Rozo, J.I.C., Manley, L., Bobra, M.G., Chatterjee, A., Ivashkiv, K., von Forstner, J.F., Baz´an,J., Stern, K.A., Evans, J., Sarthak Jain, Malocha, M., Ghosh, S., Airmansmith97, Sta´nczak,D., Singh, R.R., de Visscher, R., Verma, S., So- phieLemos, Agrawal, A., Alam, A., Dumindu Buddhika, Pathak, H., Rideout, J.R., Swapnil Sharma, Park, J., Bates, M., Mishra, P., Deepankar Sharma, Dhruv Goel, Taylor, G., Cetusic, G., Guntbert Reiter, Jacob, Inchaurrandieta, M., Dacie, S., Dubey, S., Eigenbrot, A., Bray, E.M., Paul, J.A., Rutuja Surve, Zahniy, S., Sudeep Sidhu, Meszaros, T., Utkarsh Parkhi, Abhigyan Bose, Abhishek Pandey, Price-Whelan, A., Amogh J, Chicrala, A., Ankit, Guennou, C., D’Avella, D., Williams, D., Verma, D., Ballew, J., Murphy, N., Priyank Lodha, Robitaille, T., Augspurger, T., Yash Krishan, Honey, Neerajkulk, Hill, A., Mampaey, B., Wiedemann, B.M., Molina, C., Ke¸skek, D., Ishtyaq Habib, Letts, J., Streicher, O., Gomillion, R., Yash Kothari, Mridulpandey, Stevens, A.L., Abijith B, Abijith Bahuleyan, Ambar Mehrotra, Arfon Smith, Kustov, A., Stone, B., MacBride, C., Arias, E., Tollerud, E., Dover, F.M., Verstringe, F., Kumar, G., Mathur, H., Babuschkin, I., Calixto, J., Wimbish, J., Buitrago-Casas, J.C., Krishna, K., Hiware, K., Koustav Ghosh, Ranjan, K., Manas Mangaonkar, Cheung, M., Mendero, M., Schoentgen, M., Gyenge, N.G., Rajasekhar Reddy Mekala, Rishabh Mishra, Shashank Srikanth, Shubham Jain, Kannojia, S., Yadav, T., Tathagata Paul, Wilkinson, T.D., Caswell, T.A., Pereira, T.M.D., Dang, T.K., Agrawal, Y., Nakul-Shahdadpuri, Platipo, Re- sakra, Yasintoda, Murray, S.A.: SunPy (2021). https://doi.org/10.5281/ZENODO.4555172 56. Nielsen, A.: Practical time series analysis: Prediction with statistics and machine learning / Aileen Nielsen. O’Reilly, Beijing, first edition edn. (2019) 57. Panigrahi, S., Behera, H.S.: Fuzzy Time Series Forecasting: A Survey. In: Behera, H.S., Nayak, J., Naik, B., Pelusi, D. (eds.) Computational intelligence in data mining. pp. 641–651. Advances in Intelligent Systems and Computing Ser, Springer, Singapore (2020) 58. Ray, J., Trovati, M.: A survey of topological data analysis (TDA) methods implemented in python. Lecture Notes on Data Engineering and Communications Technologies 8, 594–600 (2018). https://doi.org/10.1007/978-3-319-65636-6 54 59. Romain Tavenard, Johann Faouzi, Gilles Vandewiele, Felix Divo, Guillaume Androz, Chester Holtz, Marie Payne, Roman Yurchak, Marc Rußwurm, Kushal Kolar, Eli Woods: Tslearn, A Machine Learning Toolkit for Time Series Data. Journal of Machine Learning Research 21(118), 1–6 (2020) 60. Russell, P.H., Johnson, R.L., Ananthan, S., Harnke, B., Carlson, N.E.: A large-scale analysis of bioinformatics code on github. PLoS One 13(10), e0205898 (2018) 61. S. Badhiye, S.: A Review on Time Series Dimensionality Reduction. HELIX 8(5), 3957–3960 (2018). https://doi.org/10.29042/2018-3957-3960 62. Scherer, M.K., Trendelkamp-Schroer, B., Paul, F., P´erez-Hern´andez,G., Hoffmann, M., Plattner, N., Wehmeyer, C., Prinz, J.H., No´e,F.: PyEMMA 2: A Software Package for Estimation, Validation, and Analysis of Markov Models. Journal of chemical theory and computation 11(11), 5525–5542 (2015). https://doi.org/10.1021/acs.jctc.5b00743 63. Sch¨olzel, C.: Nonlinear measures for dynamical systems (2019). https://doi.org/10.5281/ZENODO.3814723 64. Seabold, S., Perktold, J.: Statsmodels: Econometric and Statistical Modeling with Python. In: 9th Python in Science Conference. pp. 92–96 (2010). https://doi.org/10.25080/Majora-92bf1922-011 65. Sezer, O.B., Gudelek, M.U., Ozbayoglu, A.M.: Financial time series forecasting with deep learn- ing : A systematic literature review: 2005–2019. Applied Soft Computing 90, 106181 (2020). https://doi.org/10.1016/j.asoc.2020.106181 66. Sharma, S., Swayne, D.A., Obimbo, C.: Trend analysis and change point techniques: a survey. Energy, Ecology and Environment 1(3), 123–130 (2016). https://doi.org/10.1007/s40974-016-0011-1 16 Julien Siebert, Janek Groß, and Christof Schroth

67. Shen, Z., Spruit, M.: A systematic review of open source clinical software on github for improving soft- ware reuse in smart healthcare. Applied Sciences 9(1) (2019). https://doi.org/10.3390/app9010150, https://www.mdpi.com/2076-3417/9/1/150 68. Sheppard, K., Khrapov, S., Lipt´ak,G., Mikedeltalima, Capellini, R., Hugle, Esvhd, Fortin, A., JPN, Adams, A., Jbrockmendel, M. Rabba, Rose, M.E., Rochette, T., RENE-CORAIL, X., Syncoding: bashtage/arch: Release 4.15 (2020). https://doi.org/10.5281/ZENODO.593254 69. Sheppard, K., Lewis, B., Guangyi, Wilson, K., RENE-CORAIL, X., Vikjam: bashtage/linearmodels: Release 4.19 (2021). https://doi.org/10.5281/zenodo.4419971 70. Shumway, R.H., Stoffer, D.S.: Time series analysis and its applications: With R examples / Robert H. Shumway, David S. Stoffer. Springer Texts in Statistics, 2197-4136, Springer, Cham, Switzerland, fourth edition edn. (2017) 71. Silva, PetrˆonioCˆandidoDe Lima E, J´unior,C.A.S., Alves, M.A., Silva, R.C.P., Vieira, G.L., Lucas, Patr´ıcia De Oliveira E, Sadaei, H.J., Guimar˜aes,F.G.: PYFTS/pyFTS: Stable version 1.6 (2019). https://doi.org/10.5281/zenodo.2669398 72. Slater, L.J., Thirel, G., Harrigan, S., Delaigue, O., Hurley, A., Khouakhi, A., Prosdocimi, I., Vitolo, C., Smith, K.: Using R in hydrology: a review of recent developments and future directions. Hydrology and Earth System Sciences 23(7), 2939–2963 (2019). https://doi.org/10.5194/hess-23-2939-2019 73. Snow, D., Finance-781, 0xflotus, Baltacı, F.: firmai/atspy: Zenodo (2020). https://doi.org/10.5281/ZENODO.4270168 74. Snow, D., Finance-781, 0xflotus, McCurdy, M.: firmai/deltapy: zenodo (2020). https://doi.org/10.5281/ZENODO.4270176 75. Stancin, I., Jovic, A.: An overview and comparison of free Python libraries for data mining and big data analysis. In: 2019 42st International Conventionon Information and Communication Technol- ogy, Electronics and Microelectronics (MIPRO), May 20-24, Opatija, Croatia. pp. 977–982. IEEE, MIPRO = Croatian Society for Information and Communication Technology, Electronics and Mi- croelectronics, Rijeka (2019). https://doi.org/10.23919/MIPRO.2019.8757088 76. Susto, G.A., Cenedese, A., Terzi, M.: Time-Series Classification Methods: Review and Applications to Power Systems Data. In: Big Data Application in Power Systems, pp. 179–220. Elsevier (2018). https://doi.org/10.1016/B978-0-12-811968-6.00009-7 77. Taylor, S.J., Letham, B.: Forecasting at scale. PeerJ Preprints (2017). https://doi.org/10.7287/peerj.preprints.3190v2 78. Taylor G. Smith, et al.: pmdarima: ARIMA estimators for Python (2017–) 79. Tealab, A.: Time series forecasting using artificial neural networks methodologies: A systematic review. Future Computing and Informatics Journal 3(2), 334–340 (2018). https://doi.org/10.1016/j.fcij.2018.10.003 80. Team, T.O.D.: Obspy 1.0.0 (2016). https://doi.org/10.5281/ZENODO.46151 81. Thivaharan, S., Srivatsun, G., Sarathambekai, S.: A Survey on Python Libraries Used for Social Media Content Scraping. Proceedings - International Conference on Smart Electronics and Commu- nication, ICOSEC 2020 (2020). https://doi.org/10.1109/ICOSEC49089.2020.9215357 82. Tobias Megies, Moritz Beyreuther, Robert Barsch, Lion Krischer, Joachim Wassermann: ObsPy – What can it do for data centers and observatories? Annals of Geophysics 54(1), 47–58 (2011). https://doi.org/10.4401/ag-4838 83. Torkamani, S., Lohweg, V.: Survey on time series motif discovery. WIREs Data Mining and Knowl- edge Discovery 7(2), e1199 (2017). https://doi.org/10.1002/widm.1199 84. Truong, C., Oudre, L., Vayatis, N.: Selective review of offline change point detection methods. Signal Processing 167, 107299 (2020). https://doi.org/10.1016/j.sigpro.2019.107299 85. Vallat, R., Jajcay, N.: raphaelvallat/yasa: v0.4.0 (2020). https://doi.org/10.5281/ZENODO.4244889 86. van Benschoten, A., Ouyang, A., Bischoff, F., Marrs, T.: MPA: a novel cross-language API for time series analysis. Journal of Open Source Software 5(49), 2179 (2020). https://doi.org/10.21105/joss.02179 87. van Kuppevelt, D., Meijer, C., Huber, F., van der Ploeg, A., Georgievska, S., van Hees, V.T.: Mcfly: Automated deep learning on time series. SoftwareX 12, 100548 (2020). https://doi.org/10.1016/j.softx.2020.100548 A systematic review of Python packages for time series analysis 17

88. Wang, J., Chen, Y., Hao, S., Peng, X., Hu, L.: Deep Learning for Sensor-based Activity Recognition: A Survey. Pattern Recognition Letters (2018). https://doi.org/10.1016/j.patrec.2018.02.010 89. Wohlin, C.: Guidelines for snowballing in systematic literature studies and a replication in software engineering. In: Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering. EASE ’14, Association for Computing Machinery, New York, NY, USA (2014). https://doi.org/10.1145/2601248.2601268, https://doi.org/10.1145/2601248.2601268 90. Wu, H.S.: A survey of research on anomaly detection for time series. In: 2016 13th International Com- puter Conference on Wavelet Active Media Technology and Information Processing (ICCWAMTIP). pp. 426–431. Institute of Electrical and Electronics Engineers, Inc, [Piscataway, New Jersey] (2016). https://doi.org/10.1109/ICCWAMTIP.2016.8079887 91. Yunjun, Z., Fattahi, H., Amelung, F.: Small baseline InSAR time series analysis: Unwrap- ping error correction and noise reduction. Computers & Geosciences 133, 104331 (2019). https://doi.org/10.1016/j.cageo.2019.104331 92. Zeger, S.L., Irizarry, R., Peng, R.D.: On time series analysis of public health and biomedical data. Annual review of public health 27, 57–79 (2006). https://doi.org/10.1146/annurev.publhealth.26.021304.144517 93. Zhao, Y., Zhang, C., Zhang, Y., Wang, Z., Li, J.: A review of data mining technologies in building energy systems: Load prediction, pattern identification, fault detection and diagnosis. Energy and Built Environment (2019). https://doi.org/10.1016/j.enbenv.2019.11.003

A Search details

A.1 GitHub topics

Here is the full list of GitHub topics considered: time-series, time-series-analysis, time-series- forecasting, time-series-prediction, time-series-classification, time-series-clustering, time-series- forecast, time-series-data-mining, time-series-segmentation, time-series-decomposition, time-series- regression, time-series-visualization, timeseries, timeseries-analysis, timeseries-forecasting, and signal-processing.

A.2 GitHub query

Here is an example of GitHub request (TOPIC has to be replaced with the topic of interest): https://api.github.com/search/repositories?q=topic:"TOPIC"+language:"python"+stars: ">=100"+pushed:>2020-07-01’

A.3 Duplicated repositories

Here is the list of duplicated repositories: DeepADoTS, InceptionTime, EMD-signal, Time- series-prediction, ad examples, atspy, exoplanet, flow-forecast, gluon-ts, hcrystalball, lightkurve, loudml, matrixprofile, neural prophet, pyFTS, pydlm, pyodds, pyts, sktime, sktime-dl, skyline, stumpy, tslearn, voice activity detection.

A.4 List of excluded repositories (IC3)

Here is the list of the 12 excluded repositories that do not focus on time series analysis: arctic, carbon, choochoo, eland, gnocchi, influxdb-client-python, klio, pyo, pystore, python-acoustics, sigpy, and whisper. 18 Julien Siebert, Janek Groß, and Christof Schroth

A.5 Packages included after snowballing Here is the list of the 15 packages included after snowballing: cesium, deeptime, deltapy, ffn, HMMLearn, linearmodels, mcfly, MNE, Nitime, prophet, scikit-multiflow, ta, ta-lib, sunpy, and librosa.

A.6 Query used to retrieve the packages topics

Here is an example of query used to recover each package topics https://api.github.com/ repos/OWNER/REPO/topics.

B List of all packages reviewed

Package URL References arch https://github.com/bashtage/arch [68] atspy https://github.com/firmai/atspy [73] banpei https://github.com/tsurubee/banpei - cesium https://github.com/cesium-ml/cesium - darts https://github.com/unit8co/darts - deeptime https://github.com/deeptime-ml/deeptime - deltapy https://github.com/firmai/deltapy [74] dtaidistance https://github.com/wannesm/dtaidistance [52] eon https://github.com/springer-math/Mathematics-of-Epidemics-on-Networks [53] emd-signal https://github.com/laszukdawid/PyEMD [42] ffn https://github.com/pmorissette/ffn - flood-forecast https://github.com/AIStream-Peelout/flow-forecast [30] gluonts https://github.com/awslabs/gluon-ts [3] hcrystalball https://github.com/heidelbergcement/hcrystalball - hmmlearn https://github.com/hmmlearn/hmmlearn - hypertools https://github.com/ContextLab/hypertools [5] linearmodels https://github.com/bashtage/linearmodels/ [69] luminaire https://github.com/zillow/luminaire [11] matrixprofile https://github.com/matrix-profile-foundation/matrixprofile [86] mcfly https://github.com/NLeSC/mcfly [87] mne https://github.com/mne-tools/mne-python [31] neural prophet https://github.com/ourownstory/neural_prophet - nitime https://github.com/nipy/nitime - nolds https://github.com/CSchoel/nolds [63] pmdarima https://github.com/alkaline-ml/pmdarima [78] prophet https://github.com/facebook/prophet [77] pyaf https://github.com/antoinecarme/pyaf - pycwt https://github.com/regeirk/pycwt - pydlm https://github.com/wwrechard/pydlm - pyfts https://github.com/PYFTS/pyFTS [71] pygsp https://github.com/epfl-lts2/pygsp [21] pyodds https://github.com/datamllab/pyodds [46] pytorchts https://github.com/zalandoresearch/pytorch-ts - pyts https://github.com/johannfaouzi/pyts [26] pywavelets https://github.com/PyWavelets/pywt [44] ruptures https://github.com/deepcharles/ruptures [84] seglearn https://github.com/dmbee/seglearn [20] A systematic review of Python packages for time series analysis 19 scikit-multiflow https://github.com/scikit-multiflow/scikit-multiflow [33] sktime https://github.com/alan-turing-institute/sktime [48] sktime-dl https://github.com/sktime/sktime-dl - statsmodel https://github.com/statsmodels/statsmodels [64] stumpy https://github.com/TDAmeritrade/stumpy [43] tftb https://github.com/scikit-signal/tftb - tslearn https://github.com/tslearn-team/tslearn [59] tsfresh https://github.com/blue-yonder/tsfresh [12] alphapy https://github.com/ScottfreeLLC/AlphaPy - biosppy https://github.com/PIA-Group/BioSPPy [10] deepdow https://github.com/jankrepl/deepdow [40] exoplanet https://github.com/exoplanet-dev/exoplanet [19] jhtalib https://github.com/joosthoeks/jhTAlib - librosa https://github.com/librosa/librosa [51] lightkurve https://github.com/KeplerGO/lightkurve [47] mintpy https://github.com/insarlab/MintPy [91] nara wpe https://github.com/fgnt/nara_wpe [23] neurodsp https://github.com/neurodsp-tools/neurodsp [13] neurokit https://github.com/neuropsychology/NeuroKit [50] obspy https://github.com/obspy/obspy [82,80,41,8] pastas https://github.com/pastas/pastas [14] pyaudioanalysis https://github.com/tyiannak/pyAudioAnalysis [29] pycbc https://github.com/gwastro/pycbc [9] pyemma https://github.com/markovmodel/PyEMMA [62] pyrate https://github.com/GeoscienceAustralia/PyRate - sigpy https://github.com/mikgroup/sigpy - sunpy https://github.com/sunpy/sunpy [55] surfboard https://github.com/novoic/surfboard - ta https://github.com/bukosabino/ta - ta-lib https://github.com/mrjbq7/ta-lib - yasa https://github.com/raphaelvallat/yasa [85]

Table 5: Packages and associated references.