{"id":20918,"date":"2024-02-21T06:26:26","date_gmt":"2024-02-21T05:26:26","guid":{"rendered":"https:\/\/complex-systems-ai.com\/?page_id=20918"},"modified":"2024-02-21T07:11:23","modified_gmt":"2024-02-21T06:11:23","slug":"pytimetk","status":"publish","type":"page","link":"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/","title":{"rendered":"PyTimeTK"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"20918\" class=\"elementor elementor-20918\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-791cece elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"791cece\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-b6b6dfd\" data-id=\"b6b6dfd\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-e514b33 elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"e514b33\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/prediction-forecasting\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Forecasting<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-948a2e4\" data-id=\"948a2e4\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-33f0ada elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"33f0ada\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/complex-systems-ai.com\/\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Page d'accueil<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t<div class=\"elementor-column elementor-col-33 elementor-top-column elementor-element elementor-element-1a7daa5\" data-id=\"1a7daa5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-a360b5c elementor-align-justify elementor-widget elementor-widget-button\" data-id=\"a360b5c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"button.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div class=\"elementor-button-wrapper\">\n\t\t\t\t\t<a class=\"elementor-button elementor-button-link elementor-size-sm\" href=\"https:\/\/plat.ai\/blog\/difference-between-prediction-and-forecast\/\" target=\"_blank\" rel=\"noopener\">\n\t\t\t\t\t\t<span class=\"elementor-button-content-wrapper\">\n\t\t\t\t\t\t\t\t\t<span class=\"elementor-button-text\">Wiki<\/span>\n\t\t\t\t\t<\/span>\n\t\t\t\t\t<\/a>\n\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-49e68f6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"49e68f6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6e5dc71\" data-id=\"6e5dc71\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-04c03eb elementor-widget elementor-widget-heading\" data-id=\"04c03eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contenus<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#PyTimeTK-la-librairie-pour-lanalyse-de-series-temporelles\" >PyTimeTK la librairie pour l'analyse de s\u00e9ries temporelles<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#PyTimeTK-une-librairie-optimisee\" >PyTimeTK, une librairie optimis\u00e9e<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#Gestion-des-donnees-Data-Wrangling\" >Gestion des donn\u00e9es \/ Data Wrangling<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#Visualisation-des-donnees\" >Visualisation des donn\u00e9es<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#Detection-des-anomalies\" >D\u00e9tection des anomalies<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#Ingenierie-des-fonctionnalites\" >Ing\u00e9nierie des fonctionnalit\u00e9s<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/complex-systems-ai.com\/en\/prediction-forecast\/pytimetk\/#Comparaison-avec-Pandas\" >Comparaison avec Pandas<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"PyTimeTK-la-librairie-pour-lanalyse-de-series-temporelles\"><\/span>PyTimeTK la librairie pour l'analyse de s\u00e9ries temporelles<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dcfa464 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dcfa464\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f510d1a\" data-id=\"f510d1a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-7c05d3b elementor-widget elementor-widget-text-editor\" data-id=\"7c05d3b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Dans ce tutoriel, nous allons montrer comment utiliser la librairie python PyTimeTK pour analyser des donn\u00e9es de type s\u00e9rie temporelle.<\/p><p><img decoding=\"async\" class=\"aligncenter wp-image-11096 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2020\/09\/cropped-Capture.png\" alt=\"PyTimeTK\" width=\"97\" height=\"97\" title=\"\"><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ca92ab0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ca92ab0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4e6eb53\" data-id=\"4e6eb53\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-76c31e1 elementor-widget elementor-widget-heading\" data-id=\"76c31e1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"PyTimeTK-une-librairie-optimisee\"><\/span>PyTimeTK, une librairie optimis\u00e9e<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-e43f0cd elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"e43f0cd\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-864f073\" data-id=\"864f073\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-2ec6c3f elementor-widget elementor-widget-text-editor\" data-id=\"2ec6c3f\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>L&rsquo;analyse des s\u00e9ries chronologiques est fondamentale dans de nombreux domaines, des pr\u00e9visions commerciales \u00e0 la recherche scientifique. Bien que l&rsquo;\u00e9cosyst\u00e8me Python propose des outils tels que pandas, ils peuvent parfois \u00eatre verbeux et ne pas \u00eatre optimis\u00e9s pour toutes les op\u00e9rations, en particulier pour les agr\u00e9gations et visualisations complexes bas\u00e9es sur le temps.<\/p><p>PytimeTK offre un m\u00e9lange de facilit\u00e9 d&rsquo;utilisation et d&rsquo;efficacit\u00e9 de calcul et simplifie consid\u00e9rablement le processus de manipulation et de visualisation des s\u00e9ries chronologiques. En tirant parti du backend Polars, vous pouvez b\u00e9n\u00e9ficier d&rsquo;am\u00e9liorations de vitesse allant de 3X \u00e0 un \u00e9norme 3500X, ce qui est un plus.<\/p><p>Conditions pr\u00e9alables \u2014 Assurez-vous que Python 3.9 ou version ult\u00e9rieure est install\u00e9 sur votre syst\u00e8me.<\/p><p>Installez la derni\u00e8re version stable de pytimetk \u00e0 l&rsquo;aide de pip\u00a0: la derni\u00e8re version est la 0.2.0<\/p><p>pip install pytimetk<\/p><p>Alternativement, vous pouvez installer la version de d\u00e9veloppement\u00a0:<\/p><p>pip install git+https:\/\/github.com\/business-science\/pytimetk.git<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-573a711 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"573a711\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3f54e8e\" data-id=\"3f54e8e\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ac15c7b elementor-widget elementor-widget-heading\" data-id=\"ac15c7b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Gestion-des-donnees-Data-Wrangling\"><\/span>Gestion des donn\u00e9es \/ Data Wrangling<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-dae86f6 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"dae86f6\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b3a8895\" data-id=\"b3a8895\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-8854ae5 elementor-widget elementor-widget-text-editor\" data-id=\"8854ae5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>summum_by_time \u2014 R\u00e9sumez un objet DataFrame ou Groupby par heure. Cette fonction est utile pour effectuer des agr\u00e9gations sur un ensemble de donn\u00e9es avec un objet groupby sur une fr\u00e9quence temporelle. Nous pouvons utiliser plusieurs fonctions d&rsquo;agr\u00e9gation telles que (Somme, M\u00e9diane, Minimum, Maximum, \u00c9cart type, Variance, Premi\u00e8re valeur du groupe, Derni\u00e8re valeur du groupe, Nombre de valeurs, Nombre de valeurs uniques, Corr\u00e9lation entre les valeurs.<\/p><p>Les fonctions d&rsquo;agr\u00e9gation lambda personnalis\u00e9es peuvent \u00eatre utilis\u00e9 \u00e9galement) sur une trame de donn\u00e9es avec des fr\u00e9quences vari\u00e9es comme (telles que \u00ab D \u00bb pour quotidien ou \u00ab MS \u00bb pour le d\u00e9but du mois, &#8211; S : deuxi\u00e8me fr\u00e9quence &#8211; min : fr\u00e9quence minute &#8211; H : fr\u00e9quence horaire &#8211; D : fr\u00e9quence quotidienne &#8211; W : hebdomadaire &#8211; M : fr\u00e9quence de fin de mois &#8211; MS : fr\u00e9quence de d\u00e9but de mois &#8211; Q : fr\u00e9quence de fin de trimestre &#8211; QS : fr\u00e9quence de d\u00e9but de trimestre &#8211; Y : fr\u00e9quence de fin d&rsquo;ann\u00e9e &#8211; YS : fr\u00e9quence de d\u00e9but d&rsquo;ann\u00e9e)<\/p><pre class=\"nv nw nx ny nz oa nl ob bo oc ba bj\"><span id=\"b162\" class=\"od ln fr nl b bf oe of l og oh\" data-selectable-paragraph=\"\">df.groupby(<span class=\"hljs-string\">'category_1'<\/span>).summarize_by_time(<br \/>date_column  = <span class=\"hljs-string\">'order_date'<\/span>,<br \/>value_column = [<span class=\"hljs-string\">'total_price'<\/span>, <span class=\"hljs-string\">'quantity'<\/span>],<br \/>freq         = <span class=\"hljs-string\">'MS'<\/span>,<br \/>agg_func     = [<span class=\"hljs-string\">'sum'<\/span>, <span class=\"hljs-string\">'mean'<\/span>, <span class=\"hljs-string\">'median'<\/span>,<span class=\"hljs-string\">'min'<\/span>,<br \/>(<span class=\"hljs-string\">'q25'<\/span>, <span class=\"hljs-keyword\">lambda<\/span> x: np.quantile(x, <span class=\"hljs-number\">0.25<\/span>)),<br \/>(<span class=\"hljs-string\">'q75'<\/span>, <span class=\"hljs-keyword\">lambda<\/span> x: np.quantile(x, <span class=\"hljs-number\">0.75<\/span>)),                <br \/><span class=\"hljs-string\">'max'<\/span>,(<span class=\"hljs-string\">'range'<\/span>,<span class=\"hljs-keyword\">lambda<\/span> x: x.<span class=\"hljs-built_in\">max<\/span>() - x.<span class=\"hljs-built_in\">min<\/span>())],<br \/>wide_format  = <span class=\"hljs-literal\">False<\/span>,<br \/>engine       = <span class=\"hljs-string\">'pandas'<\/span>)<\/span><\/pre><p>pad_by_time \u2014 Rendre les s\u00e9ries temporelles irr\u00e9guli\u00e8res r\u00e9guli\u00e8res en les compl\u00e9tant avec les donn\u00e9es manquantes. Par exemple, si vous disposez de donn\u00e9es historiques mensuelles pour lesquelles il manque quelques mois, utilisez pad_by_time et compl\u00e9tez les donn\u00e9es manquantes avec des valeurs nulles.<\/p><pre class=\"nv nw nx ny nz oa nl ob bo oc ba bj\"><span id=\"db4b\" class=\"od ln fr nl b bf oe of l og oh\" data-selectable-paragraph=\"\">df.groupby(<span class=\"hljs-string\">'category_1'<\/span>).pad_by_time(<br \/>date_column = <span class=\"hljs-string\">'order_date'<\/span>,<br \/>freq        = <span class=\"hljs-string\">'W'<\/span>,         <br \/>end_date    = df.order_date.<span class=\"hljs-built_in\">max<\/span>())<\/span><\/pre><p>future_frame \u2014 Cette fonction est utilis\u00e9e pour \u00e9tendre un dataframe ou un objet Groupby avec des dates futures bas\u00e9es sur une longueur sp\u00e9cifi\u00e9e, liant \u00e9ventuellement les donn\u00e9es d&rsquo;origine. Ceci est principalement utile pour pr\u00e9parer un futur ensemble de donn\u00e9es qui peut \u00eatre utilis\u00e9 pour les pr\u00e9dictions.<\/p><pre class=\"nv nw nx ny nz oa nl ob bo oc ba bj\"><span id=\"a61b\" class=\"od ln fr nl b bf oe of l og oh\" data-selectable-paragraph=\"\">df.groupby(<span class=\"hljs-string\">'category_2'<\/span>).future_frame(<br \/>date_column = <span class=\"hljs-string\">'order_date'<\/span>,<br \/>length_out  = <span class=\"hljs-number\">12<\/span> <span class=\"hljs-comment\"># Extend data for future 3 months )<\/span><\/span><\/pre>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-463eee5 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"463eee5\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-849e1f9\" data-id=\"849e1f9\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3040e9d elementor-widget elementor-widget-heading\" data-id=\"3040e9d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Visualisation-des-donnees\"><\/span>Visualisation des donn\u00e9es<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-c26451c elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"c26451c\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fcea125\" data-id=\"fcea125\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4d30694 elementor-widget elementor-widget-text-editor\" data-id=\"4d30694\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>plot_timeseries() \u2014 Cr\u00e9e des trac\u00e9s de s\u00e9ries chronologiques \u00e0 l&rsquo;aide de diff\u00e9rents moteurs de tra\u00e7age tels que Plotnine, Matplotlib et Plotly.<\/p><ul><li>G\u00e9n\u00e8re des trac\u00e9s interactifs (id\u00e9al pour l&rsquo;exploration et les applications rationalis\u00e9es\/brillantes)<\/li><li>Consolide plus de 20 lignes de code plotnine\/matpotlib et plotly<\/li><li>S&rsquo;adapte bien \u00e0 de nombreuses s\u00e9ries temporelles<\/li><li>Peut \u00eatre converti de plotly interactif en trac\u00e9s plotnine\/matplotlib statiques en changeant le moteur de plotly en plotnine ou Matplotlib.<\/li><li>Des groupes peuvent \u00eatre ajout\u00e9s \u00e0 l&rsquo;aide de pandas groupby()<\/li><\/ul><pre class=\"nv nw nx ny nz oa nl ob bo oc ba bj\"><span id=\"f703\" class=\"od ln fr nl b bf oe of l og oh\" data-selectable-paragraph=\"\">df.groupby(<span class=\"hljs-string\">'id'<\/span>).plot_timeseries(<span class=\"hljs-string\">'date'<\/span>, <span class=\"hljs-string\">'value'<\/span>,<br \/>facet_ncol = <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-comment\"># 2-column faceted plot<\/span><br \/>facet_scales = <span class=\"hljs-string\">\"free_y\"<\/span>,<br \/>smooth_frac = <span class=\"hljs-number\">0.2<\/span>, <span class=\"hljs-comment\"># Apply smoothing to the time series data<\/span><br \/>smooth_size = <span class=\"hljs-number\">2.0<\/span>,<br \/>y_intercept = <span class=\"hljs-literal\">None<\/span>,<br \/>x_axis_date_labels = <span class=\"hljs-string\">\"%Y\"<\/span>,<br \/>engine = <span class=\"hljs-string\">'plotly'<\/span>,<br \/>width = <span class=\"hljs-number\">600<\/span>,<br \/>height = <span class=\"hljs-number\">500<\/span>)<\/span><\/pre><p><img fetchpriority=\"high\" decoding=\"async\" class=\"alignnone wp-image-20924 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast33.webp\" alt=\"PyTimeTK\" width=\"624\" height=\"531\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast33.webp 624w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast33-300x255.webp 300w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast33-14x12.webp 14w\" sizes=\"(max-width: 624px) 100vw, 624px\" \/><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b32c0e1 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b32c0e1\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ddbfc16\" data-id=\"ddbfc16\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ca80da3 elementor-widget elementor-widget-heading\" data-id=\"ca80da3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Detection-des-anomalies\"><\/span>D\u00e9tection des anomalies<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-b6119e0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"b6119e0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9ab5a2a\" data-id=\"9ab5a2a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-4c663aa elementor-widget elementor-widget-text-editor\" data-id=\"4c663aa\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>La d\u00e9tection d&rsquo;anomalies dans l&rsquo;analyse de s\u00e9ries chronologiques est un processus crucial pour identifier des mod\u00e8les inhabituels qui s&rsquo;\u00e9cartent du comportement attendu. Ces anomalies peuvent signifier des \u00e9v\u00e9nements critiques, souvent impr\u00e9vus, dans les donn\u00e9es de s\u00e9ries chronologiques. Une d\u00e9tection efficace des anomalies contribue \u00e0 maintenir la qualit\u00e9 et la fiabilit\u00e9 des donn\u00e9es, garantissant ainsi des pr\u00e9visions et une prise de d\u00e9cision pr\u00e9cises.<\/p><p>Le d\u00e9fi consiste \u00e0 faire la distinction entre les v\u00e9ritables anomalies et les fluctuations naturelles, ce qui n\u00e9cessite des techniques analytiques sophistiqu\u00e9es et une compr\u00e9hension approfondie des mod\u00e8les sous-jacents des s\u00e9ries chronologiques. Par cons\u00e9quent, la d\u00e9tection des anomalies est un \u00e9l\u00e9ment essentiel de l\u2019analyse des s\u00e9ries chronologiques, favorisant la gestion proactive des risques et des opportunit\u00e9s dans des environnements dynamiques.<\/p><p>Pytimetk utilise les m\u00e9thodes suivantes pour d\u00e9terminer les anomalies dans les donn\u00e9es de s\u00e9ries chronologiques\u00a0:<\/p><p>1- D\u00e9composition des s\u00e9ries chronologiques :<\/p><ul><li>La premi\u00e8re \u00e9tape consiste \u00e0 d\u00e9composer la s\u00e9rie chronologique en plusieurs composantes. G\u00e9n\u00e9ralement, cela inclut les composants de tendance, de saisonnalit\u00e9 et de reste (ou r\u00e9siduel).<\/li><li>La tendance repr\u00e9sente le mod\u00e8le ou la direction sous-jacente des donn\u00e9es au fil du temps. La saisonnalit\u00e9 capture des mod\u00e8les ou des cycles r\u00e9currents sur une p\u00e9riode sp\u00e9cifique, par exemple quotidienne, hebdomadaire, mensuelle, etc.<\/li><li>Le reste (ou r\u00e9siduel) est ce qui reste une fois que la tendance et les composantes saisonni\u00e8res ont \u00e9t\u00e9 supprim\u00e9es de la s\u00e9rie chronologique d&rsquo;origine.<\/li><\/ul><p>2- G\u00e9n\u00e9rer des restes :<\/p><ul><li>Apr\u00e8s d\u00e9composition, le composant restant est extrait. Cette composante refl\u00e8te la partie de la s\u00e9rie chronologique qui ne peut \u00eatre expliqu\u00e9e par les composantes tendancielles et saisonni\u00e8res.<\/li><li>L\u2019id\u00e9e est que si la tendance et la saisonnalit\u00e9 repr\u00e9sentent des mod\u00e8les pr\u00e9visibles et donc \u00ab normaux \u00bb, le reste est celui o\u00f9 les anomalies sont les plus susceptibles de se manifester.<\/li><\/ul><p>Il existe 2 techniques courantes de d\u00e9composition saisonni\u00e8re\u00a0; STL et Twitter\u00a0;<\/p><ul><li>STL (Seasonal and Trend Decomposition) est une m\u00e9thode polyvalente et robuste pour d\u00e9composer des s\u00e9ries chronologiques. STL fonctionne tr\u00e8s bien dans des circonstances o\u00f9 une tendance \u00e0 long terme est pr\u00e9sente. L\u2019algorithme de Loess fait g\u00e9n\u00e9ralement un tr\u00e8s bon travail pour d\u00e9tecter la tendance. Cependant, dans les cas o\u00f9 la composante saisonni\u00e8re est plus dominante que la tendance, Twitter a tendance \u00e0 mieux performer.<\/li><li>La m\u00e9thode Twitter est une m\u00e9thode de d\u00e9composition similaire \u00e0 celle utilis\u00e9e dans le package AnomalyDetection de Twitter. La m\u00e9thode Twitter fonctionne de mani\u00e8re identique \u00e0 STL pour supprimer le composant saisonnier. La principale diff\u00e9rence r\u00e9side dans la suppression de la tendance, qui s&rsquo;effectue en supprimant la m\u00e9diane des donn\u00e9es plut\u00f4t qu&rsquo;en ajustant un lissage. La m\u00e9diane fonctionne bien lorsqu&rsquo;une tendance \u00e0 long terme est moins dominante que la composante saisonni\u00e8re \u00e0 court terme. En effet, le lissage a tendance \u00e0 surajuster les anomalies.<\/li><\/ul><p>Anamolize \u2014 D\u00e9tecte les anomalies dans les donn\u00e9es de s\u00e9ries chronologiques, soit pour une seule s\u00e9rie chronologique, soit pour plusieurs s\u00e9ries chronologiques regroup\u00e9es par une colonne sp\u00e9cifique. Cette fonction utilise le traitement parall\u00e8le pour acc\u00e9l\u00e9rer le calcul pour les grands ensembles de donn\u00e9es comportant de nombreux groupes de s\u00e9ries chronologiques. Le traitement parall\u00e8le entra\u00eene une surcharge et peut ne pas \u00eatre plus rapide sur de petits ensembles de donn\u00e9es. Pour utiliser le traitement parall\u00e8le, d\u00e9finissez threads = -1 pour utiliser tous les processeurs disponibles.<\/p><pre class=\"nv nw nx ny nz oa nl ob bo oc ba bj\"><span id=\"18f8\" class=\"od ln fr nl b bf oe of l og oh\" data-selectable-paragraph=\"\"><span class=\"hljs-comment\"># Anomalize the data <\/span><br \/>anomalize_df = tk.anomalize(<br \/>df, <span class=\"hljs-string\">\"date\"<\/span>, <span class=\"hljs-string\">\"value\"<\/span>,method = <span class=\"hljs-string\">\"twitter\"<\/span>,<br \/>iqr_alpha = <span class=\"hljs-number\">0.10<\/span>, <span class=\"hljs-comment\"># To determine the threshold for detecting outliers.<\/span><br \/>clean_alpha = <span class=\"hljs-number\">0.75<\/span>, <span class=\"hljs-comment\"># To determine the threshold for cleaning the outliers  <\/span><br \/>clean = <span class=\"hljs-string\">\"min_max\"<\/span>, <span class=\"hljs-comment\"># specifies the method used to clean the anomalies     <\/span><br \/>verbose = <span class=\"hljs-literal\">True<\/span>, <span class=\"hljs-comment\"># To display additional info and progress during the execution )<\/span><\/span><\/pre><p>Cette fonction renvoie une trame de donn\u00e9es avec les colonnes mentionn\u00e9es ci-dessous o\u00f9 recomposed_l1 et l2 sont les limites de niveau inf\u00e9rieur et sup\u00e9rieur de la s\u00e9rie chronologique recompos\u00e9e.<\/p><p><img decoding=\"async\" class=\"alignnone wp-image-20925 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast34.webp\" alt=\"PyTimeTK\" width=\"720\" height=\"400\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast34.webp 720w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast34-300x167.webp 300w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast34-18x10.webp 18w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/p><p>Plot_Anomalies \u2014 Cr\u00e9e un trac\u00e9 d&rsquo;anomalies dans les donn\u00e9es de s\u00e9ries chronologiques \u00e0 l&rsquo;aide de Plotly, Matplotlib.<\/p><p>anomalize_df.plot_anomalies(date_column = <span class=\"hljs-string\">\u00ab\u00a0date\u00a0\u00bb<\/span>,engine = <span class=\"hljs-string\">\u00ab\u00a0plotly\u00a0\u00bb<\/span>))<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-20926 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast35.webp\" alt=\"PyTimeTK\" width=\"720\" height=\"553\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast35.webp 720w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast35-300x230.webp 300w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast35-16x12.webp 16w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><\/p><p>Plot_Anomalies_decomp \u2014 Cette fonction r\u00e9cup\u00e8re les donn\u00e9es de la fonction anomalize() et renvoie un trac\u00e9 de la d\u00e9composition des anomalies. Il renvoie un graphique des tendances observ\u00e9es, saisonni\u00e8res et restantes. Nous pouvons \u00e9galement utiliser Groupby pour le tracer par cat\u00e9gorie.<\/p><p>anomalize_df.plot_anomalies_decomp(<span class=\"hljs-string\">\u00ab\u00a0date\u00a0\u00bb<\/span>, engine = <span class=\"hljs-string\">&lsquo;plotly&rsquo;<\/span>)<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-20927 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast36.webp\" alt=\"PyTimeTK\" width=\"719\" height=\"557\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast36.webp 719w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast36-300x232.webp 300w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast36-15x12.webp 15w\" sizes=\"(max-width: 719px) 100vw, 719px\" \/><\/p><p>Plot_Anomalies_cleaned \u2014 Cette fonction r\u00e9cup\u00e8re les donn\u00e9es de la fonction anomalize() et renvoie un trac\u00e9 des anomalies nettoy\u00e9es, ce qui signifie que nous pouvons visualiser les donn\u00e9es avant et apr\u00e8s la suppression des anomalies.<\/p><p>anomalize_df.plot_anomalies_cleaned(<span class=\"hljs-string\">\u00ab\u00a0date\u00a0\u00bb<\/span>)<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-20928 size-full\" src=\"http:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast37.webp\" alt=\"PyTImeTK\" width=\"715\" height=\"551\" title=\"\" srcset=\"https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast37.webp 715w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast37-300x231.webp 300w, https:\/\/complex-systems-ai.com\/wp-content\/uploads\/2024\/02\/forecast37-16x12.webp 16w\" sizes=\"(max-width: 715px) 100vw, 715px\" \/><\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-ba8d7c0 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"ba8d7c0\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-1472759\" data-id=\"1472759\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6b90a17 elementor-widget elementor-widget-heading\" data-id=\"6b90a17\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Ingenierie-des-fonctionnalites\"><\/span>Ing\u00e9nierie des fonctionnalit\u00e9s<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2ad1f94 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2ad1f94\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d6ccda3\" data-id=\"d6ccda3\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-03a3dbe elementor-widget elementor-widget-text-editor\" data-id=\"03a3dbe\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Ajout de fonctionnalit\u00e9s aux DataFrames de s\u00e9ries temporelles (augmentation) \u00e0 l&rsquo;aide des fonctions ci-dessous du package pytimetk<\/p><ol><li>augment_timeseries_signature -Prend un DataFrame et une colonne de date en entr\u00e9e et renvoie le df d&rsquo;origine avec les 29 fonctionnalit\u00e9s diff\u00e9rentes bas\u00e9es sur la date et l&rsquo;heure ajout\u00e9es en tant que nouvelles colonnes avec le nom de la fonctionnalit\u00e9 bas\u00e9 sur date_column.<\/li><li>Augment_holiday_signature \u2014 D\u00e9veloppe 4 fonctionnalit\u00e9s de vacances diff\u00e9rentes \u00e0 partir d&rsquo;une seule date\/heure pour 137 pays.<\/li><li>Augment_lags \u2014 Ajoute des d\u00e9calages \u00e0 un objet Pandas DataFrame ou DataFrameGroupBy.<\/li><li>Augment_leads \u2014 Ajoute des leads \u00e0 un objet Pandas DataFrame ou DataFrameGroupBy.<\/li><li>Augment_diffs -Ajoute des diff\u00e9rences \u00e0 un objet Pandas DataFrame ou DataFrameGroupBy.<\/li><li>Augment_rolling \u2014 Appliquez une ou plusieurs fonctions de d\u00e9filement bas\u00e9es sur des s\u00e9ries et des tailles de fen\u00eatre \u00e0 une ou plusieurs colonnes d&rsquo;un DataFrame.<\/li><li>Augment_rolling_apply \u2014 Appliquer une ou plusieurs fonctions de roulement et tailles de fen\u00eatre bas\u00e9es sur un DataFrame<\/li><li>augment_expanding -Appliquez une ou plusieurs fonctions d&rsquo;expansion bas\u00e9es sur des s\u00e9ries \u00e0 une ou plusieurs colonnes d&rsquo;un DataFrame.<\/li><li>augment_expanding_apply \u2014 Appliquez une ou plusieurs fonctions d&rsquo;expansion bas\u00e9es sur DataFrame \u00e0 une ou plusieurs colonnes d&rsquo;un DataFrame.<\/li><li>augment_fourier- Ajoute des transformations de Fourier \u00e0 un objet Pandas DataFrame ou DataFrameGroupBy.<\/li><li>Augment_hilbert \u2014 Applique la transformation Hilbert aux colonnes sp\u00e9cifi\u00e9es d&rsquo;un DataFrame.<\/li><li>Augment_wavelet \u2014 Applique la transformation Wavely aux colonnes sp\u00e9cifi\u00e9es d&rsquo;un DataFrame.<\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-2945609 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2945609\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e721ff5\" data-id=\"e721ff5\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-6c318cd elementor-widget elementor-widget-heading\" data-id=\"6c318cd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\"><span class=\"ez-toc-section\" id=\"Comparaison-avec-Pandas\"><\/span>Comparaison avec Pandas<span class=\"ez-toc-section-end\"><\/span><\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3e1a8bc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3e1a8bc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-a33d525\" data-id=\"a33d525\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ebb43e3 elementor-widget elementor-widget-text-editor\" data-id=\"ebb43e3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<p>Comme le montre le tableau, pytimetk n&rsquo;est pas seulement une question de vitesse ; cela simplifie \u00e9galement votre base de code. Par exemple, summary_by_time() convertit une routine double boucle for de 6 lignes dans pandas en une op\u00e9ration concise de 2 lignes. Et avec le moteur Polars, obtenez des r\u00e9sultats 13,4 fois plus rapides que les pandas\u00a0!<\/p><p>De m\u00eame, plot_timeseries() rationalise consid\u00e9rablement le processus de tra\u00e7age, en encapsulant ce qui n\u00e9cessiterait g\u00e9n\u00e9ralement 16 lignes de code matplotlib dans une simple commande de 2 lignes dans pytimetk, sans sacrifier la personnalisation ou la qualit\u00e9. Et avec les moteurs plotly et plotnine, vous pouvez cr\u00e9er des trac\u00e9s interactifs et de superbes visualisations statiques avec seulement quelques lignes de code.<\/p><p>Pour les fonctionnalit\u00e9s de calendrier, pytimetk propose augment_timeseries_signature() qui r\u00e9duit plus de 30 lignes d&rsquo;extractions pandas dt. Pour les fonctionnalit\u00e9s dynamiques, pytimetk propose augment_rolling(), qui est 10 \u00e0 3 500 fois plus rapide que les pandas. Il propose \u00e9galement pad_by_time() pour combler les lacunes de vos donn\u00e9es de s\u00e9ries chronologiques, et anomalize() pour d\u00e9tecter et corriger les anomalies dans vos donn\u00e9es de s\u00e9ries chronologiques.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Forecasting Home page Wiki PyTimeTK the library for time series analysis In this tutorial, we will show how to use the python library PyTimeTK to\u2026 <\/p>","protected":false},"author":1,"featured_media":0,"parent":20753,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-20918","page","type-page","status-publish","hentry"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20918","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/comments?post=20918"}],"version-history":[{"count":4,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20918\/revisions"}],"predecessor-version":[{"id":20931,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20918\/revisions\/20931"}],"up":[{"embeddable":true,"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/pages\/20753"}],"wp:attachment":[{"href":"https:\/\/complex-systems-ai.com\/en\/wp-json\/wp\/v2\/media?parent=20918"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}