pyspc.core.serie.Serie

class pyspc.core.serie.Serie(datval, code=None, provider=None, varname=None, fill=True, missing=None, timezone=<UTC>, strict=False, warning=True)[source]

Bases : BasicSerie, BinaryOperator, Combining, Computation, Copy, Event, Modeling, Plotting, Reindexing, Scaling, TimeSerie

Structure d’une Série de données

data_frame

Série temporelle

Type:

pnd.DataFrame

code

Lieu de la série

Type:

str

location

Lieu de la série

Type:

Location

parameter

Grandeur de la série

Type:

Parameter

varname

Grandeur de la série

Type:

str

spc_varname

Grandeur de la série selon la convention de pyspc

Type:

str

long_varname

Intitulé de la grandeur

Type:

str

timestep

Pas de temps de la grandeur

Type:

timedelta

timeunits

Unité de temps de la grandeur

Type:

str

units

Unité de la grandeur

Type:

str

dtfmt

Format de la date

Type:

str

np_dtype

Type de données de la grandeur

Type:

str

missing

Valeur manquante “missing”

Type:

float/int

timezone

Fuseau horaire

Type:

pytz

warning

Afficher les avertissements au lieu de lever des erreurs défaut: True

Type:

bool

firstdt

Première date de la série de données

Type:

datetime

lastdt

Dernière date de la série de données

Type:

datetime

length

Profondeur temporelle de la série de données

Type:

int

__init__(datval, code=None, provider=None, varname=None, fill=True, missing=None, timezone=<UTC>, strict=False, warning=True)[source]

Initialiser l’instance de la classe Serie

Paramètres:
  • datval (list, pnd.DataFrame) – Ensemble de dates et de valeurs - [“aaaamm[jj[hh[MM]]]”, “valeur”] avec “.” comme sép. décimal - [datetime(aaaa, mm, jj, hh, MM), valeur] - Série de données sous forme de DataFrame

  • code (str) – Lieu de la série

  • provider (str, Provider) – Producteur de la série

  • varname (str, Parameter) – Grandeur de la série

  • fill (bool) – Etendre la période et remplir avec valeur manquante ? défaut: True

  • missing (float/int) – Valeur manquante “missing”

  • overwrite (bool) – Remplacer les données existantes ?

  • timezone (pytz) – Fuseau horaire

  • strict (bool) – Contrôler la cohérence entre le pas de temps des données et le pas de temps de la grandeur. Défaut: False

  • warning (bool) – Afficher les avertissements au lieu de lever des erreurs défaut: True

Methods

__init__(datval[, code, provider, varname, ...])

Initialiser l'instance de la classe Serie

above_threshold([threshold, inplace])

Déclarer les valeurs inférieures au seuil comme étant manquantes

apply_RatingCurves([curves, tocode, ...])

Appliquer les courbes de tarage à la série

apply_Reservoir([reservoir, tablename, ...])

Appliquer le Z0 et un bareme de réservoir et créer une collections Series à partir de la série courante

apply_ReservoirTable([table, assoc, sim])

Appliquer un bareme de réservoir et créer une collections Series à partir de la série courante

apply_ReservoirZ0([reservoir])

Appliquer le Z0 de réservoir

below_threshold([threshold, inplace])

Déclarer les valeurs supérieures au seuil comme étant manquantes

between_dates([first_dtime, last_dtime, inplace])

Sous-echantillonner <self> entre les dates <first_dtime> et <last_dtime>.

comp(other[, fromfile, tofile, media])

Comparer 2 instances Serie

copy()

Copier 'superficiellement' l'instance <Serie>.

copy_year([src, year, start, end])

Dupliquer le bloc annuel year de la source src pour compléter les données de la receveuse self entre les dates start et end

counter_missing()

Déterminer le nombre de valeurs manquantes dans la série

cumsum([skipna])

Série des sommes cumulées

deepcopy()

Copier 'profondément' l'instance <Serie>.

describe([freqs])

Déterminer les statistiques descriptives de la série

downscale([toparam, dayhour])

Désagréger la série à un pas de temps inférieur

etp_oudin([latitude, timestep])

Modélisation de l'ETP par Oudin à partir de série de température et d'une valeur de latitude

events([threshold, engine, prominence, ...])

Sélectionner les événements définis par un seuil

events_basic([threshold, filename])

Sélectionner les événements définis par un seuil - Version Basic

events_scipy([threshold, prominence, width, ...])

Sélectionner les événements définis par un seuil - Version scipy

fill_constant([constant, inplace])

Remplacer les valeurs manquantes self.missing par une valeur constante constant Si l'option inplace est définie à False, alors cette méthode crée une nouvelle instance Serie

fill_linear_interpolation([inplace])

Remplacer les valeurs manquantes self.missing par une interpolation linéaire Si l'option inplace est définie à False, alors cette méthode crée une nouvelle instance Serie

find_annual_max([to_sample, exclusion_threshold])

Lister les maximas annuels Année hydrologique : 01/09/aaaa-1 - 31/08/aaaa

find_annual_min([to_sample, exclusion_threshold])

Lister les minimas annuels Année civile : 01/01/aaaa - 31/12/aaaa

first_valid_index()

Renvoyer la date de la première valeur valide (i.e. != np.nan).

last_valid_index()

Renvoyer la date de la dernière valeur valide (i.e. != np.nan).

max()

Renvoyer le maximum de la série et la date associée

min()

Renvoyer le minimum de la série et la date associée

nearlyequalscale([toparam, strict])

Ré-échantilloner une série à un pas de temps proche

plot([dirname, fmt])

Imprimer la série de données contenue dans <self.data-frame> dans un fichier image

regime([groupby, freqs, dayhour, strict, ...])

Calculer le régime de la chronique.

regime_sauquet()

Définir la similarité du régime hydro avec les références Sauquet.

regularscale()

Interpoler une série d'un pas de temps irrégulier à un pas de temps régulier

reindex()

Re-indexer pour remplir les pas de temps manquants

set_timezone([timezone])

Appliquer un nouveau fuseau horaire au contenu de l'instance de la classe Serie

shift([periods, freq, inplace])

Appliquer la méthode de pnd.DataFrame.shift à l'instance Serie

sim2fcst([ref, first_dtime, last_dtime, ...])

Convertir une simulation en prévision avec prise en compte de l'erreur à l'instant de prévision qui décroit linéairement avec l'échéance de prévision

socose()

Déterminer les paramètrs D et RXD du modèle SOCOSE.

split([value, method])

Découper la série en une collection de séries.

standardize()

Standardiser la chronique par normalisation selon la valeur max.

stripna()

Renvoyer une nouvelle instance sans les np.nan en début et fin de série

subhourlyscale([ts, how, howinterp])

Interpoler une série d'un pas de temps horaire à un pas de temps infra-horaire

timecentroid()

Déterminer le centre de masse temporel de la série

timelag([tlag, inplace])

Décaler la série de données de l'instance Serie : - tlag Si tlag est une instance de td, - tlag*self.timestep Sinon Si l'option inplace est définie à False, alors cette méthode crée une nouvelle instance Serie

update([other, overwrite, strict])

Mettre à jour de l'instance Serie par le contenu d'une autre instance Serie

upscale([toparam, dayhour, strict])

Agréger/moyenner la série à un pas de temps supérieur

Attributes

code

Identifiant de la série.

data_frame

Contenu temporel de la série

df

Contenu temporel de la série.

dtfmt

Format du datetime.

fill

Données continues

firstdt

Première date de la série de données

lastdt

Dernière date de la série de données

length

Profondeur temporelle de la série de données

location

Lieu de la série.

long_varname

Intitulé de la grandeur.

missing

Valeur manquante.

np_dtype

Format des données dans les tableaux numpy et pandas.

parameter

Grandeur de la série.

provider

Nom du fournisseur de la donnée.

spc_varname

Grandeur de la série selon la convention de pyspc.

timestep

Pas de temps.

timeunits

Unité de temps.

timezone

Fuseau horaire.

units

Unité de la variable.

varname

Grandeur de la série.

warning

Afficher les avertissements

above_threshold(threshold=None, inplace=False)

Déclarer les valeurs inférieures au seuil comme étant manquantes

Paramètres:
  • threshold (int, float) – Seuil à appliquer

  • inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: False

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

apply_RatingCurves(curves=None, tocode=None, extrapolation=False)

Appliquer les courbes de tarage à la série

Paramètres:
  • curves (pyspc.core.ratingcurve.RatingCurves) – Courbes de tarage et de correction

  • tocode (str) –

    Code de la série finale
    • si série de hauteurs, contient le code de la station

    • si série de débits, contient le code du site

  • extrapolation (bool) – Autoriser les conversions hors plage de validité des courbes de tarage. Défaut: False

apply_Reservoir(reservoir=None, tablename=None, assoc=None, sim=False)

Appliquer le Z0 et un bareme de réservoir et créer une collections Series à partir de la série courante

Paramètres:
  • reservoir (pyspc.core.reservoir.Reservoir) – Instance de reservoir.Reservoir

  • tablename (str) – Nom du bareme

  • assoc (dict) – Correspondance des colonnes de la table

  • sim (bool) – Définir les séries calculées comme étant des simulations. Défaut: False. Si True, le nom de la simulation est donné par reservoir.name

Renvoie:

Collection de séries converties par le réservoir et son barème

Type renvoyé:

pyspc.core.series.Series

apply_ReservoirTable(table=None, assoc=None, sim=False)

Appliquer un bareme de réservoir et créer une collections Series à partir de la série courante

Paramètres:
  • tablename (pyspc.core.reservoir.Table) – Bareme du réservoir

  • assoc (dict) – Correspondance des colonnes de la table

  • sim (bool) – Définir les séries calculées comme étant des simulations. Défaut: False. Si True, le nom de la simulation est donné par table.name

Renvoie:

Collection de séries converties par le barème

Type renvoyé:

pyspc.core.series.Series

apply_ReservoirZ0(reservoir=None)

Appliquer le Z0 de réservoir

Paramètres:

reservoir (pyspc.core.reservoir.Reservoir) – Instance de reservoir.Reservoir

Renvoie:

Série de données converties par l’application du Z0 du réservoir

Type renvoyé:

pyspc.core.series.Serie

below_threshold(threshold=None, inplace=False)

Déclarer les valeurs supérieures au seuil comme étant manquantes

Paramètres:
  • threshold (int, float) – Seuil à appliquer

  • inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: False

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

between_dates(first_dtime=None, last_dtime=None, inplace=False)

Sous-echantillonner <self> entre les dates <first_dtime> et <last_dtime>. Si l’option <inplace> est définie à False, alors cette méthode crée une nouvelle instance <Serie>

Paramètres:
  • first_dtime (datetime) – Première date à conserver

  • last_dtime (datetime) – Dernière date à conserver

  • inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: False

Renvoie:

  • pyspc.core.serie.Serie – Nouvelle série de données, si inplace=False

  • .. seealso:: pandas.DataFrame.index.shift

property code

Identifiant de la série.

comp(other, fromfile=None, tofile=None, media='screen')

Comparer 2 instances Serie

Paramètres:
  • other (pyspc.core.serie.Serie) – Séries de données de référence

  • fromfile (str) – Nom de la référence. Si non défini, prend la valeur other.code

  • tofile (str) – Nom de la série courante. Si non défini, prend la valeur self.code

  • media (str, io.IOBase, None) –

    • “screen” pour impression écran (défaut)

    • si io.IOBase : Objet fichier, export de la comparaison.

    • si None : ni impression ni export, la comparaison est retournée

Renvoie:

lines – Liste des valeurs comparées, si media = None

Type renvoyé:

list

copy()

Copier “superficiellement” l’instance <Serie>. Une modification dans la copie modifiera aussi l’originale! Si vous voulez une copie sans interaction, il faut utiliser self.deepcopy()

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

copy_year(src=None, year=None, start=None, end=None)

Dupliquer le bloc annuel year de la source src pour compléter les données de la receveuse self entre les dates start et end

Paramètres:
  • src (pyspc.core.serie.Serie) – Séries de données de référence

  • year (int) – Année à dupliquer

  • start (datetime) – Premier pas de temps ciblé

  • end (datetime) – Dernier pas de temps ciblé

counter_missing()

Déterminer le nombre de valeurs manquantes dans la série

Renvoie:

Nombre de valeurs manquantes dans la série de données

Type renvoyé:

int

cumsum(skipna=True)

Série des sommes cumulées

Paramètres:

skipna (bool) – Ignorer les valeurs manquantes

Renvoie:

  • pyspc.core.serie.Serie – Série des valeurs cumulées

  • .. seealso:: pandas.DataFrame.cumsum

property data_frame

Contenu temporel de la série

deepcopy()

Copier “profondément” l’instance <Serie>. Une modification dans la copie ne modifiera pas l’originale!

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

describe(freqs=None)

Déterminer les statistiques descriptives de la série

Paramètres:

freqs (list) – Liste des fréquences, de 0 à 100

Renvoie:

  • pnd.DataFrame – Statistiques descriptives

  • .. seealso:: pandas.DataFrame.describe

property df

Contenu temporel de la série. Alias de self.data_frame

downscale(toparam=None, dayhour=6)

Désagréger la série à un pas de temps inférieur

Paramètres:
  • toparam (Parameter) – Paramètre correspond au pas de temps ciblé

  • dayhour (int) – Heure du début de la journée. Nécessaire si la source est un pas de temps journalier. Par défaut: 6. Valeurs admises: [0, 6]

Renvoie:

Série des valeurs désagrégées

Type renvoyé:

pyspc.core.serie.Serie

property dtfmt

Format du datetime.

etp_oudin(latitude=None, timestep=None)

Modélisation de l’ETP par Oudin à partir de série de température et d’une valeur de latitude

Paramètres:
  • latitude (float) – Latitude de la série

  • timestep (timedelta) – Pas de temps de la série d’ETP calculée (horaire ou journalier). Si non défini, la série d’ETP sera au même pas de temps que la série de température, si celui-ci est horaire ou journalier

Renvoie:

Série des valeurs d’ETP

Type renvoyé:

pyspc.core.serie.Serie

Lève:

ValueError – si la série n’est pas une série de température

events(threshold=None, engine='basic', prominence=None, width=None, before=None, after=None, filename=None)

Sélectionner les événements définis par un seuil

Paramètres:
  • engine (str) –

    Algorithme à utiliser

    • ’basic” : événement défini par un seuil uniquement. Pas de prise en compte explicite des montées/décrues. Valeur par défaut pour une raison de compatibilité avec les versions antérieures

    • ’scipy” : application de scipy.signal.find_peaks

  • threshold (float) – Valeur minimale d’une pointe

  • prominence (float) – Ecart d’amplitude minimal entre deux pointes

  • width (float) – Ecart temporel minimal entre deux pointes. En pas de temps, i.e. indice dans la liste des valeurs de la série

  • before (timedelta) – Durée maximale avant la pointe

  • after (timedelta) – Durée maximale après la pointe

  • filename (str) – Nom du fichier image. Si défini, imprime la série et ses événements dans une image

Renvoie:

events

Dictionnaire des événements
  • clé : datetime (jour du maxi)

valeurdict

Informations sur l’événement

  • ’start” : date de début

  • ’end” : date de fin

  • ’dtmax” : date de la valeur maximale

  • ’max” : valeur maximale

  • ’name” : nom de l’événement (jour du max en str)

  • None sinon

Type renvoyé:

dict

events_basic(threshold=None, filename=None)

Sélectionner les événements définis par un seuil - Version Basic

Paramètres:
  • threshold (float) – Valeur minimale d’une pointe

  • filename (str) – Nom du fichier image. Si défini, imprime la série et ses événements dans une image

Renvoie:

events

Dictionnaire des événements
  • clé : datetime (jour du maxi)

valeurdict

Informations sur l’événement - “start” : date de début - “end” : date de fin - “dtmax” : date de la valeur maximale - “max” : valeur maximale - “name” : nom de l’événement (jour du max en str) - None sinon

Type renvoyé:

dict

events_scipy(threshold=None, prominence=None, width=None, before=None, after=None, filename=None)

Sélectionner les événements définis par un seuil - Version scipy

Paramètres:
  • threshold (float) – Valeur minimale d’une pointe

  • prominence (float) – Ecart d’amplitude minimal entre deux pointes

  • width (float) – Ecart temporel minimal entre deux pointes. En pas de temps, i.e. indice dans la liste des valeurs de la série

  • before (timedelta) – Durée maximale avant la pointe

  • after (timedelta) – Durée maximale après la pointe

  • filename (str) – Nom du fichier image. Si défini, imprime la série et ses événements dans une image

Renvoie:

  • events (dict) –

    Dictionnaire des événements
    • clé : datetime (jour du maxi)

    valeurdict

    Informations sur l’événement - “start” : date de début - “end” : date de fin - “dtmax” : date de la valeur maximale - “max” : valeur maximale - “name” : nom de l’événement (jour du max en str) - None sinon

  • .. warning:: Cette méthode nécessite l’import de la

  • bibliothèque tierce scipy.signal

property fill

Données continues

fill_constant(constant=None, inplace=False)

Remplacer les valeurs manquantes self.missing par une valeur constante constant Si l’option inplace est définie à False, alors cette méthode crée une nouvelle instance Serie

Paramètres:
  • constant (int, float) – Valeur constante

  • inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: False

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

fill_linear_interpolation(inplace=False)

Remplacer les valeurs manquantes self.missing par une interpolation linéaire Si l’option inplace est définie à False, alors cette méthode crée une nouvelle instance Serie

Paramètres:

inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: False

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

find_annual_max(to_sample=False, exclusion_threshold=None)

Lister les maximas annuels Année hydrologique : 01/09/aaaa-1 - 31/08/aaaa

Paramètres:
  • to_sample (bool) – Exporter en tant que pyspc.core.samples.Sample ? Par défaut: False

  • exclusion_threshold (float) – Si “to_sample” est True, ce seuil permet de définir les exclusions. Si “pmv” >= seuil, alors la valeur est exclue.

Renvoie:

  • - dict – Dictionnaire des maximas annuels.

  • - pyspc.core.samples.Sample – Échantillon des maximas annuels

Notes

Si le retour est un dictionnaire, il est structuré ainsi :
  • clé : année

  • valeur : {“max”: float, “maxdt”: datetime, “pmv”: float}

avec - max : valeur du max - maxdt : instant du max - pmv : %age de valeurs manquantes dans l’année

find_annual_min(to_sample=False, exclusion_threshold=None)

Lister les minimas annuels Année civile : 01/01/aaaa - 31/12/aaaa

Paramètres:
  • to_sample (bool) – Exporter en tant que pyspc.core.samples.Sample ? Par défaut: False

  • exclusion_threshold (float) – Si “to_sample” est True, ce seuil permet de définir les exclusions. Si “pmv” >= seuil, alors la valeur est exclue.

Renvoie:

  • - dict – Dictionnaire des minimas annuels.

  • - pyspc.core.samples.Sample – Échantillon des minimas annuels.

Notes

Si le retour est un dictionnaire, il est structuré ainsi :
  • clé : année

  • valeur : {“min”: float, “mindt”: datetime, “pmv”: float}

avec - min : valeur du min - mindt : instant du min - pmv : %age de valeurs manquantes dans l’année

first_valid_index()

Renvoyer la date de la première valeur valide (i.e. != np.nan)

Renvoie:

Date de la première valeur valide

Type renvoyé:

timestamp, datetime

property firstdt

Première date de la série de données

last_valid_index()

Renvoyer la date de la dernière valeur valide (i.e. != np.nan)

Renvoie:

Date de la dernière valeur valide

Type renvoyé:

timestamp, datetime

property lastdt

Dernière date de la série de données

property length

Profondeur temporelle de la série de données

property location

Lieu de la série.

property long_varname

Intitulé de la grandeur.

max()

Renvoyer le maximum de la série et la date associée

Renvoie:

  • float – Valeur du maximum

  • datetime – Date du maximum

  • .. seealso:: pandas.DataFrame.max et pandas.DataFrame.idxmax

min()

Renvoyer le minimum de la série et la date associée

Renvoie:

  • float – Valeur du minimum

  • datetime – Date du minimum

  • .. seealso:: pandas.DataFrame.min et pandas.DataFrame.idxmin

property missing

Valeur manquante.

nearlyequalscale(toparam=None, strict=True)

Ré-échantilloner une série à un pas de temps proche

Paramètres:
  • toparam (Parameter) – Paramètre correspond au pas de temps ciblé

  • strict (bool) – Calcul strict, imposant np.nan dans la valeur agrégée si au moins un pas de temps initial vaut np.nan. Retire de la série les pas de temps où les données d’origine ne sont pas complètes Défaut: True

Renvoie:

Série des valeurs agrégées/moyennées

Type renvoyé:

pyspc.core.serie.Serie

property np_dtype

Format des données dans les tableaux numpy et pandas.

property parameter

Grandeur de la série.

plot(dirname='.', fmt='png')

Imprimer la série de données contenue dans <self.data-frame> dans un fichier image

Paramètres:
  • dirname (str) – Dossier où écrire l’image. Défaut: “.”

  • fmt (str) – Format du fichier image. Défault: png

Renvoie:

Chemin complet du fichier image

Type renvoyé:

str

property provider

Nom du fournisseur de la donnée.

regime(groupby=None, freqs=None, dayhour=6, strict=True, ignore_upscale=False)

Calculer le régime de la chronique.

Paramètres:
  • groupby (str) –

    Regroupement des données

    • ’dayofyear” : par jour de l’année (défaut)

    • ”month” : par mois

  • freqs (list) – Fréquences des quantiles, entre 0 et 1. Par défaut: [0.10, 0.25, 0.50, 0.75, 0.90]

  • dayhour (int) – Heure du début de la journée Nécessaire si la cible est un pas de temps journalier. Par défaut: 6. Valeurs admises: [0, 6]

  • strict (bool) – Calcul strict, imposant np.nan dans la valeur agrégée si au moins un pas de temps initial vaut np.nan. Retire de la série les pas de temps où les données d’origine ne sont pas complètes Défaut: True

  • ignore_upscale (bool) – Ignorer la mise à l’échelle. Défaut: False. Si le paramètre est cumulable, ignore_upscale est mis à False

Renvoie:

Tableau du régime hydrologique contenant les minimas, maximas, moyennes et les quantiles associées aux fréquences spécifiées

Type renvoyé:

pandas.DataFrame

Exemples

>>> from datetime import datetime as dt
>>> import numpy as np
>>> import pandas as pnd
>>> from random import Random
>>> from pyspc.core.serie import Serie
>>> random = Random('pyspc')
>>> dates = pnd.date_range(dt(2000, 1, 1), dt(2023, 7, 1), freq='D')
>>> df = pnd.DataFrame(
...     {'sigma': [5 + 4 * np.sin(
...                2 * np.pi * min(365, d.timetuple().tm_yday/365.0))
...                for d in dates],
...      'mu': [10 * np.cos(
...             2 * np.pi * min(365, d.timetuple().tm_yday/365.0))
...             for d in dates]},
...     index=dates
... )
>>> df['normalvariate'] = df.apply(
...     lambda row: random.normalvariate(row['mu'], row['sigma']),
...                                      axis=1)
>>> serie = Serie(df['normalvariate'], code='MASTATION', varname='TJ')

CAS DAYOFYEAR

>>> regime = serie.regime(groupby='dayofyear')
>>> regime
          MASTATION
                 TJ
                min       mean        max       q10        q25        q50        q75        q90
dayofyear
1          1.944009  10.624312  20.113833  5.263542   6.774031  10.585418  14.503644  15.079707
2         -0.259760   9.405203  19.817392  2.379518   5.376413   9.916178  13.573836  15.616009
3         -0.181454  10.297588  21.049035  2.696734   6.207425   9.238487  14.893574  17.331033
4         -5.145176   8.492487  18.598175  1.284406   5.552731   8.107479  12.133227  16.312690
5          0.207759  10.119969  24.490016  4.522729   6.148460  10.294487  12.758538  18.530463
6          2.459365  10.934372  20.392852  4.335647   8.223262  11.605376  13.718347  15.589172
7          6.183924  11.048712  18.620448  6.527771   8.329515  10.557980  13.471992  15.162192
8         -2.837258  10.011024  21.114053  4.385651   6.142117  10.629248  13.173047  16.101604
9         -1.759126   9.194610  15.619534  3.082263   7.326997  10.416776  11.832072  14.088313
10        -0.831915   8.491538  18.695751  1.792905   5.164604   9.183864  12.001302  13.811218
11        -2.224917  12.474504  23.189785  3.526222   6.234537  13.716551  18.169241  20.929219
12         0.192211   8.947970  16.653351  2.155900   5.366654   9.397785  12.749126  14.162431
13        -1.863916   9.156694  23.647803  1.567216   5.279567   9.559719  12.201265  15.886308
14        -1.283101   9.916968  19.012489  3.674430   6.081189  10.318217  13.123059  17.412076
15        -0.132395  13.393634  20.754137  5.292921   9.852966  14.900619  18.073066  20.210763
16        -9.843188   7.577008  23.533791  0.467720   4.078625   7.237520  12.271942  14.753191
17        -0.945028   8.201018  19.217643  1.306905   4.509631   7.660138  11.837876  14.352006
18        -0.162434   7.865895  19.764133  0.637975   4.182544   7.683877  11.582366  13.857101
19        -1.631207  10.868952  28.835518  2.890020   5.641252  11.899187  13.981045  19.641085
20         2.877473  10.354723  20.742810  4.655265   6.319709  10.345086  12.576178  17.543802
21        -0.359789   9.753262  21.061425  3.589661   6.108222   8.882443  12.867481  17.005235
22        -1.851937   9.712771  30.366130  2.020791   3.142092   6.993661  14.838456  20.981410
23        -6.003920  12.254727  25.806680  5.528492   8.385381  11.543759  17.803213  20.503745
24        -1.366565  12.479229  28.552720  4.677895   8.569749  13.075048  17.188437  20.053550
25         1.376093   8.544323  19.961965  3.124412   4.563643   7.823728  12.067380  14.478125
26        -4.134279   7.779648  22.400089 -0.935813   3.443725   7.990922  11.244633  17.413172
27        -1.513403   9.824618  23.918041  1.980819   4.413007  10.064812  14.228396  20.450119
28        -5.114598  10.350452  23.809753  2.831210   6.193378   8.552981  14.725332  20.465081
29        -7.761090   9.869827  23.886531  2.467829   6.123588  10.901072  13.652352  18.006390
30        -4.903314   7.137828  18.869998 -0.707865   3.447457   6.974199  10.312168  15.000295
...             ...        ...        ...       ...        ...        ...        ...        ...
336        4.351649   8.410195  14.244957  5.452110   6.248769   7.916380  10.172580  13.205556
337        4.545814   8.176946  13.055793  4.855146   5.632999   7.991481  10.304988  11.471382
338        2.023751   8.394688  13.671743  4.861224   6.886953   8.498807  10.088508  12.182250
339        5.878882   9.739374  13.343329  6.520828   7.900646  10.341276  11.430028  11.996803
340       -0.935858   9.180920  15.083883  5.137096   6.875063   9.955873  11.356597  13.055717
341        3.821531   9.702031  14.464514  7.489006   8.394184   8.883279  11.940618  13.151455
342        4.135648   9.933368  22.267054  5.407166   6.692677   8.666765  12.087093  15.001430
343        5.480372   9.526010  12.765188  7.955415   8.691168   9.864494  10.706000  11.037573
344        0.055580   8.348085  15.573621  4.893742   6.194555   8.548581  10.075738  12.029745
345        0.987658  10.016465  16.134114  5.214590   8.553301  10.828631  12.205413  13.509378
346        4.291916   9.585788  15.770062  4.808465   7.238564  10.133367  11.882017  13.698296
347        2.365325   9.447996  17.309514  5.161123   6.998339   9.650121  11.271402  13.393767
348        1.815191   9.294719  16.110000  2.701645   6.778497   9.313064  12.013235  15.267646
349        0.335351   9.172088  16.775585  5.303601   6.366535   9.946066  12.446337  14.094746
350        4.418837  11.034226  20.066203  6.836929   8.993011  11.122376  12.471647  14.533944
351        0.992976  10.118205  19.865972  3.931755   5.878853   9.863075  13.672705  17.438937
352        2.360168   9.587696  16.356217  5.135191   7.616783   9.692119  11.805785  13.738285
353        1.879207   9.721086  21.528831  5.128223   7.665339   9.636685  11.137671  14.015609
354        0.005776   9.610247  21.223430  5.016252   6.975288   9.316436  12.683450  14.666547
355        4.183093  10.805621  17.953885  6.658991   8.907132  11.562818  12.712600  13.687104
356       -2.465142   9.719868  17.231451  5.316063   6.960975   8.504196  12.946158  15.516718
357        2.207875   9.721184  20.190657  4.962292   7.182469   9.244547  11.818021  13.484418
358        4.174932  10.007208  15.627777  5.014417   7.745050   9.366240  13.280770  15.255052
359       -1.837906   9.957878  21.965943  0.363735   6.755967  10.363652  12.969316  17.755847
360        0.682689  10.486417  21.506449  4.921221   6.599487   9.890103  15.009039  17.229929
361        1.713487  12.005706  20.285289  6.604912   8.955794  12.263369  14.694296  18.709962
362        3.215175  11.295978  16.617168  6.464909  10.327176  12.133073  13.649460  14.916064
363       -0.747765   8.296246  16.288661  3.409350   5.990357   9.017231  10.270798  11.308030
364        2.919868  11.530928  19.750778  6.676048   8.894218  10.682790  15.097649  17.149895
365        3.755801  11.390088  17.965603  7.596842   8.426334  10.643652  15.149170  16.246636
[365 rows x 8 columns]

CAS MONTH

>>> regime = serie.regime(groupby='month')
>>> regime
       MASTATION
              TJ
             min      mean        max        q10        q25       q50        q75        q90
month
1     -10.987349  9.775277  30.366130   2.175369   5.483506  9.881925  13.756946  17.887767
2     -20.927502  7.647808  31.096103  -2.161437   2.162670  7.702300  13.467442  17.929788
3     -28.532033  2.447466  29.276437  -9.260649  -3.558794  2.684536   8.463805  14.078995
4     -28.076151 -2.284140  22.403386 -13.540367  -8.314738 -2.430664   3.609519   9.348240
5     -36.541390 -7.150944  18.317250 -17.218375 -12.848633 -7.027587  -1.690938   3.763987
6     -29.483204 -9.808500   8.399533 -17.139951 -13.776696 -9.963173  -5.798924  -2.059937
7     -24.401203 -9.630296   5.242768 -15.005319 -12.217287 -9.512707  -7.089044  -4.420848
8     -16.569580 -6.969922   0.025375 -10.138419  -8.672136 -6.874644  -5.273049  -3.783082
9      -8.038793 -2.551329   2.903838  -4.974818  -3.823146 -2.513706  -1.179915  -0.131121
10     -2.843159  2.679328   8.982568   0.252474   1.242906  2.467920   3.998118   5.349232
11      0.709528  6.937878  15.738727   3.912094   5.228819  6.599372   8.564590  10.420266
12     -2.465142  9.774600  22.267054   5.040022   7.199803  9.765345  12.172330  14.699299
regime_sauquet()

Définir la similarité du régime hydro avec les références Sauquet.

Renvoie:

  • norm (pandas.DataFrame) – Valeurs mensuelles normalisées

  • regimes (pandas.DataFrame) – Identifiants des colonnes de df, des régimes et critère de similarité

regularscale()

Interpoler une série d’un pas de temps irrégulier à un pas de temps régulier

Renvoie:

Série à pas de temps régulier

Type renvoyé:

pyspc.core.serie.Serie

reindex()

Re-indexer pour remplir les pas de temps manquants

set_timezone(timezone=<UTC>)

Appliquer un nouveau fuseau horaire au contenu de l’instance de la classe Serie

Paramètres:

timezone (pytz) – Date de la dernière valeur valide

shift(periods=None, freq=None, inplace=True)

Appliquer la méthode de pnd.DataFrame.shift à l’instance Serie

Paramètres:
  • periods (timedelta) – Période

  • freq (timedelta) – Fréquence

  • inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: True

Renvoie:

  • pyspc.core.serie.Serie – Nouvelle série de données, si inplace=False

  • .. seealso:: pandas.DataFrame.index.shift

sim2fcst(ref=None, first_dtime=None, last_dtime=None, error_depth=0, max_ltime=120)

Convertir une simulation en prévision avec prise en compte de l’erreur à l’instant de prévision qui décroit linéairement avec l’échéance de prévision

Paramètres:
  • ref (Serie) – Série de référence

  • error_depth (int) – Durée de prise en compte de l’erreur, en pas de temps. Défaut: 0

  • first_dt (datetime) – Premier instant de prévision

  • last_dt (datetime) – Dernier instant de prévision

  • max_ltime (int) – Horizon de prévision maximal, en pas de temps. Défaut: 120

Renvoie:

series – Collection de prévisions

Type renvoyé:

Series

socose()

Déterminer les paramètrs D et RXD du modèle SOCOSE. - D : durée au-dessus du débit standardisé valant 0.5 (Q/Qp) - RXD : rapport du débit de pointe sur le débit moyen sur D

Renvoie:

socose – Valeurs SOCOSE par colonne du tableau DataFrame - col: {“d”: d, “rxd”: rxd}

Type renvoyé:

dict

Exemples

>>> serie
*************************************
*********** SERIE *******************
*************************************
*  NOM VARIABLE SPC     = QH
*  INTITULE VARIABLE    = Débit horaire
*  IDENTIFIANT          = K0000000
*  FOURNISSEUR          = Provider(name='SPC')
*  NOM VARIABLE         = QH
*  UNITE                = m3/s
*  VALEUR MANQUANTE     =
*  SERIE CONTINUE       = True
*  PAS DE TEMPS         = 1:00:00
*  UNITE DE TEMPS       = hour
*  FUSEAU HORAIRE       = UTC
*  PROFONDEUR SERIE     = 25
*  PREMIER PAS DE TEMPS = 2024-03-30 06:00:00
*  DERNIER PAS DE TEMPS = 2024-03-31 06:00:00
*************************************
>>> serie.df
                     (K0000000, QH)
2024-03-30 06:00:00            23.0
2024-03-30 07:00:00            25.5
2024-03-30 08:00:00            30.6
2024-03-30 09:00:00            53.6
2024-03-30 10:00:00            92.5
2024-03-30 11:00:00           119.4
2024-03-30 12:00:00           132.4
2024-03-30 13:00:00           137.1
2024-03-30 14:00:00           134.9
2024-03-30 15:00:00           129.6
2024-03-30 16:00:00           121.2
2024-03-30 17:00:00           111.7
2024-03-30 18:00:00           102.1
2024-03-30 19:00:00            93.7
2024-03-30 20:00:00            84.6
2024-03-30 21:00:00            76.6
2024-03-30 22:00:00            69.5
2024-03-30 23:00:00            63.9
2024-03-31 00:00:00            59.1
2024-03-31 01:00:00            55.0
2024-03-31 02:00:00            51.0
2024-03-31 03:00:00            48.1
2024-03-31 04:00:00            45.8
2024-03-31 05:00:00            43.5
2024-03-31 06:00:00            41.9
>>> values = serie.socose()
>>> values
{('K0000000', 'QH'): {'d': 13, 'rxd': 1.2682701202590196}}
property spc_varname

Grandeur de la série selon la convention de pyspc.

split(value=None, method=None)

Découper la série en une collection de séries.

Paramètres:
  • value (int, float, list) – Valeur d’application de la méthodologie

  • method (str) –

    Méthodologie de découpage de la série (N=value)

    • ”chunks” : N blocs en cherchant une taille homogène

    • ’chunk_size” : blocs de taille identique N sans garantir de taille homogène

    • ’days” : fréquence de N jours (N=value)

    • ”groups” : regroupements fournis sous la forme d’un DataFrame de même dimension que la série

    • ’dates” : découpage selon une liste de dates fournies sous la forme de datetime.datetime

Renvoie:

Collection de séries

Type renvoyé:

pyspc.core.series.Series

Notes

Le nommage des nouvelles séries suit la procédure suivante:

  • s’il s’agit d’une série d’observation : définition d’une simulation “split-X”, avec X l’identifiant du bloc

  • s’il s’agit d’une série de simulation : ajout de “split-X” dans le nom de la simulation (en suffixe), avec X l’identifiant du bloc

Exemples

>>> import pandas as pnd
>>> from random import Random
>>> from pyspc.core.serie import Serie
>>> random = Random('pyspc')
>>> dates = pnd.date_range(dt(2020, 1, 1), dt(2023, 7, 1), freq='H')
>>> df = pnd.DataFrame([random.normalvariate(15, 10) for d in dates],
...                    index=dates)
>>> obs = Serie(df, code='MASTATION', varname='TH')
>>> sim = Serie(df, code='MASTATION_MASIMU', varname='TH')

CAS PAR N BLOCS DE TAILLE HOMOGENE

>>> series = obs.split(value=4, method='chunks')
>>> series
*************************************
********** SERIES *******************
*************************************
*  NOM DE LA COLLECTION = Split
*  TYPE DE COLLECTION   = obs
*  NOMBRE DE SERIES     = 4
*  ----------------------------------
*  SERIE #1
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-0
*  ----------------------------------
*  SERIE #2
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-1
*  ----------------------------------
*  SERIE #3
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-2
*  ----------------------------------
*  SERIE #4
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-3
*************************************
>>> for k, s in series.items():
...     print(k, s.length)
('MASTATION', 'TH', 'split-0') 7663
('MASTATION', 'TH', 'split-1') 7663
('MASTATION', 'TH', 'split-2') 7663
('MASTATION', 'TH', 'split-3') 7660

CAS PAR BLOC DE TAILLE N - OBSERVATION

>>> series = obs.split(value=10000, method='chunk_size')
>>> series
*************************************
********** SERIES *******************
*************************************
*  NOM DE LA COLLECTION = Split
*  TYPE DE COLLECTION   = obs
*  NOMBRE DE SERIES     = 4
*  ----------------------------------
*  SERIE #1
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-0
*  ----------------------------------
*  SERIE #2
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-1
*  ----------------------------------
*  SERIE #3
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-2
*  ----------------------------------
*  SERIE #4
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-3
*************************************
>>> for k, s in series.items():
...     print(k, s.length)
('MASTATION', 'TH', 'split-0') 10000
('MASTATION', 'TH', 'split-1') 10000
('MASTATION', 'TH', 'split-2') 10000
('MASTATION', 'TH', 'split-3') 649

CAS PAR BLOC DE TAILLE N - SIMULATION

>>> series = sim.split(value=10000, method='chunk_size')
>>> series
*************************************
********** SERIES *******************
*************************************
*  NOM DE LA COLLECTION = Split
*  TYPE DE COLLECTION   = obs
*  NOMBRE DE SERIES     = 4
*  ----------------------------------
*  SERIE #1
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = MASIMU-split-0
*  ----------------------------------
*  SERIE #2
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = MASIMU-split-1
*  ----------------------------------
*  SERIE #3
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = MASIMU-split-2
*  ----------------------------------
*  SERIE #4
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = MASIMU-split-3
*************************************
>>> for k, s in series.items():
...     print(k, s.length)
('MASTATION', 'TH', 'MASIMU-split-0') 10000
('MASTATION', 'TH', 'MASIMU-split-1') 10000
('MASTATION', 'TH', 'MASIMU-split-2') 10000
('MASTATION', 'TH', 'MASIMU-split-3') 649

CAS PAR BLOC DE N JOURS

>>> series = obs.split(value=365, method='days')
>>> series
*************************************
********** SERIES *******************
*************************************
*  NOM DE LA COLLECTION = Split
*  TYPE DE COLLECTION   = obs
*  NOMBRE DE SERIES     = 5
*  ----------------------------------
*  SERIE #1
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-0
*  ----------------------------------
*  SERIE #2
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-1
*  ----------------------------------
*  SERIE #3
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-2
*  ----------------------------------
*  SERIE #4
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-3
*  ----------------------------------
*  SERIE #5
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-4
*************************************
>>> for k, s in series.items():
...     print(k, s.length)
('MASTATION', 'TH', 'split-0') 7200
('MASTATION', 'TH', 'split-1') 7200
('MASTATION', 'TH', 'split-2') 7200
('MASTATION', 'TH', 'split-3') 7200
('MASTATION', 'TH', 'split-4') 1849

CAS PAR LISTE DE DATES

>>> split_dates = [dt(1999, 1, 1), dt(2020, 1, 1), dt(2021, 1, 1),
...                dt(2022, 1, 1), dt(2023, 1, 1), dt(2024, 1, 1)]
>>> series = obs.split(value=split_dates, method='dates')
>>> series
*************************************
********** SERIES *******************
*************************************
*  NOM DE LA COLLECTION = Split
*  TYPE DE COLLECTION   = obs
*  NOMBRE DE SERIES     = 4
*  ----------------------------------
*  SERIE #1
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-0
*  ----------------------------------
*  SERIE #2
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-1
*  ----------------------------------
*  SERIE #3
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-2
*  ----------------------------------
*  SERIE #4
*      - CODE    = MASTATION
*      - VARNAME = TH
*      - META    = split-3
*************************************
>>> for k, s in series.items():
...     print(k, s.firstdt, s.lastdt, s.length)

(“MASTATION”, “TH”, “split-0”) 2020-01-01 00:00 2020-12-31 23:00 8784 (“MASTATION”, “TH”, “split-1”) 2021-01-01 00:00 2021-12-31 23:00 8760 (“MASTATION”, “TH”, “split-2”) 2022-01-01 00:00 2022-12-31 23:00 8760 (“MASTATION”, “TH”, “split-3”) 2023-01-01 00:00 2023-07-01 00:00 4345

standardize()

Standardiser la chronique par normalisation selon la valeur max.

L’index est un timedelta depuis la date du maxi. Cette chronique standardisée est utilisée par la méthode socose

Renvoie:

df – Tableau des données standardisées

Type renvoyé:

pandas.DataFrame

Exemples

>>> serie
*************************************
*********** SERIE *******************
*************************************
*  NOM VARIABLE SPC     = QH
*  INTITULE VARIABLE    = Débit horaire
*  IDENTIFIANT          = K0000000
*  FOURNISSEUR          = Provider(name='SPC')
*  NOM VARIABLE         = QH
*  UNITE                = m3/s
*  VALEUR MANQUANTE     =
*  SERIE CONTINUE       = True
*  PAS DE TEMPS         = 1:00:00
*  UNITE DE TEMPS       = hour
*  FUSEAU HORAIRE       = UTC
*  PROFONDEUR SERIE     = 25
*  PREMIER PAS DE TEMPS = 2024-03-30 06:00:00
*  DERNIER PAS DE TEMPS = 2024-03-31 06:00:00
*************************************
>>> serie.df
                     (K0000000, QH)
2024-03-30 06:00:00            23.0
2024-03-30 07:00:00            25.5
2024-03-30 08:00:00            30.6
2024-03-30 09:00:00            53.6
2024-03-30 10:00:00            92.5
2024-03-30 11:00:00           119.4
2024-03-30 12:00:00           132.4
2024-03-30 13:00:00           137.1
2024-03-30 14:00:00           134.9
2024-03-30 15:00:00           129.6
2024-03-30 16:00:00           121.2
2024-03-30 17:00:00           111.7
2024-03-30 18:00:00           102.1
2024-03-30 19:00:00            93.7
2024-03-30 20:00:00            84.6
2024-03-30 21:00:00            76.6
2024-03-30 22:00:00            69.5
2024-03-30 23:00:00            63.9
2024-03-31 00:00:00            59.1
2024-03-31 01:00:00            55.0
2024-03-31 02:00:00            51.0
2024-03-31 03:00:00            48.1
2024-03-31 04:00:00            45.8
2024-03-31 05:00:00            43.5
2024-03-31 06:00:00            41.9
>>> df = serie.standardize()
>>> df
                   (K0000000, QH)
-1 days +17:00:00        0.167761
-1 days +18:00:00        0.185996
-1 days +19:00:00        0.223195
-1 days +20:00:00        0.390956
-1 days +21:00:00        0.674690
-1 days +22:00:00        0.870897
-1 days +23:00:00        0.965718
00:00:00                 1.000000
01:00:00                 0.983953
02:00:00                 0.945295
03:00:00                 0.884026
04:00:00                 0.814734
05:00:00                 0.744712
06:00:00                 0.683443
07:00:00                 0.617068
08:00:00                 0.558716
09:00:00                 0.506929
10:00:00                 0.466083
11:00:00                 0.431072
12:00:00                 0.401167
13:00:00                 0.371991
14:00:00                 0.350839
15:00:00                 0.334063
16:00:00                 0.317287
17:00:00                 0.305616
stripna()

Renvoyer une nouvelle instance sans les np.nan en début et fin de série

Renvoie:

Nouvelle série de données

Type renvoyé:

pyspc.core.serie.Serie

subhourlyscale(ts=None, how=None, howinterp=None)

Interpoler une série d’un pas de temps horaire à un pas de temps infra-horaire

Paramètres:
  • ts (timedelta) – Pas de temps infra-horaire entre 1 min et 1h. Par défaut: 5 minutes

  • how (str) – Méthode de ré-échantillonnage parmi: [“bfill”, “ffill”, “nearest”, “interpolate”]

  • howinterp (str) – Méthode d’interpolation. Par défaut: “linear”

Renvoie:

timecentroid()

Déterminer le centre de masse temporel de la série

Renvoie:

Centre de masse temporel

Type renvoyé:

datetime

timelag(tlag=None, inplace=True)

Décaler la série de données de l’instance Serie : - tlag Si tlag est une instance de td, - tlag*self.timestep Sinon Si l’option inplace est définie à False, alors cette méthode crée une nouvelle instance Serie

Paramètres:
  • tlag (int, float, timedelta) – Période

  • inplace (bool) – Traiter en place (True) ou renvoyer une nouvelle instance (False) défaut: True

Renvoie:

Nouvelle série de données, si inplace=False

Type renvoyé:

pyspc.core.serie.Serie

property timestep

Pas de temps.

property timeunits

Unité de temps.

property timezone

Fuseau horaire.

property units

Unité de la variable.

update(other=None, overwrite=False, strict=False)

Mettre à jour de l’instance Serie par le contenu d’une autre instance Serie

Paramètres:
  • other (pyspc.core.serie.Serie) – Séries de données de référence

  • overwrite (bool) – Ecraser les valeurs de self par celles d’other ? Par défaut: False, ce qui signifie que seules les valeurs manquantes sont remplacées

  • strict (bool) – Forcer le respect de la concordance des codes des deux Serie ? Par défaut: False

upscale(toparam=None, dayhour=6, strict=True)

Agréger/moyenner la série à un pas de temps supérieur

Paramètres:
  • toparam (Parameter) – Paramètre correspond au pas de temps ciblé

  • dayhour (int) – Heure du début de la journée Nécessaire si la cible est un pas de temps journalier. Par défaut: 6. Valeurs admises: [0, 6]

  • strict (bool) – Calcul strict, imposant np.nan dans la valeur agrégée si au moins un pas de temps initial vaut np.nan. Retire de la série les pas de temps où les données d’origine ne sont pas complètes Défaut: True

Renvoie:

Série des valeurs agrégées/moyennées

Type renvoyé:

pyspc.core.serie.Serie

property varname

Grandeur de la série.

property warning

Afficher les avertissements