Maison >développement back-end >Tutoriel Python >Comment rééchantillonner les données de séries chronologiques en Python
Les données de séries chronologiques sont une séquence d'observations collectées à intervalles de temps fixes. Les données peuvent provenir de n’importe quel domaine, comme la finance, l’économie, la santé et les sciences de l’environnement. Les données de séries chronologiques que nous collectons peuvent parfois avoir des fréquences ou des résolutions différentes, ce qui peut ne pas convenir à nos processus d'analyse et de modélisation des données. Dans ce cas, nous pouvons rééchantillonner les données de la série chronologique par suréchantillonnage ou sous-échantillonnage, modifiant ainsi la fréquence ou la résolution de la série chronologique. Cet article présentera différentes méthodes pour suréchantillonner ou sous-échantillonner les données de séries chronologiques.
Le suréchantillonnage signifie augmenter la fréquence des données de séries chronologiques. Ceci est généralement effectué lorsque nous avons besoin d'une résolution plus élevée ou d'observations plus fréquentes. Python propose plusieurs méthodes pour suréchantillonner les données de séries chronologiques, notamment l'interpolation linéaire, l'interpolation du voisin le plus proche et l'interpolation polynomiale.
SyntaxeDataFrame.resample(rule, *args, **kwargs) DataFrame.asfreq(freq, method=None) DataFrame.interpolate(method='linear', axis=0, limit=None, inplace=False, limit_direction='forward', limit_area=None)
ici,
resample est une méthode fournie par la bibliothèque pandas pour rééchantillonner les données de séries temporelles. Elle est appliquée sur un DataFrame et prend le paramètre de règle, qui spécifie la fréquence souhaitée pour le rééchantillonnage (*args) et les arguments de mots-clés. (**kwargs) peut être fourni pour personnaliser le comportement de rééchantillonnage, comme la spécification de la méthode d'agrégation ou la gestion des valeurs manquantes.
asfreq est utilisée en conjonction avec la fonction de rééchantillonnage pour convertir la fréquence des données de la série chronologique. Elle prend le paramètre freq, qui spécifie la chaîne de fréquence souhaitée pour la sortie. Le paramètre de méthode facultatif permet de spécifier comment gérer. toute valeur manquante introduite lors du processus de rééchantillonnage, telle que le remplissage vers l'avant, le remplissage vers l'arrière ou l'interpolation.
La traduction chinoise de
Exempleimport pandas as pd # Create a sample time series DataFrame data = {'Date': ['2023-06-01', '2023-06-03', '2023-06-06'], 'Value': [10, 20, 30]} df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True) # Upsample the data using linear interpolation df_upsampled = df.resample('D').asfreq().interpolate(method='linear') # Print the upsampled DataFrame print(df_upsampled)
Sortie
Value Date 2023-06-01 10.000000 2023-06-02 15.000000 2023-06-03 20.000000 2023-06-04 23.333333 2023-06-05 26.666667 2023-06-06 30.000000
Exemple
est :import pandas as pd # Create a sample time series DataFrame data = {'Date': ['2023-06-01', '2023-06-03', '2023-06-06'], 'Value': [10, 20, 30]} df = pd.DataFrame(data) df['Date'] = pd.to_datetime(df['Date']) df.set_index('Date', inplace=True) # Upsample the data using nearest neighbor interpolation df_upsampled = df.resample('D').asfreq().interpolate(method='nearest') # Print the upsampled DataFrame print(df_upsampled)
Sortie
Value Date 2023-06-01 10.0 2023-06-02 10.0 2023-06-03 20.0 2023-06-04 20.0 2023-06-05 30.0 2023-06-06 30.0
Syntaxe
DataFrame.mean(axis=None, skipna=None, level=None, numeric_only=None, **kwargs)
, est appliquée après le rééchantillonnage pour calculer une valeur unique représentant les observations regroupées dans chaque intervalle de rééchantillonnage. Ces méthodes sont généralement utilisées lors du sous-échantillonnage des données. Ils peuvent être appliqués directement à un DataFrame rééchantillonné, ou ils peuvent être utilisés conjointement avec une fonction de rééchantillonnage pour agréger les données en fonction d'une fréquence spécifique (telle qu'hebdomadaire ou mensuelle) en spécifiant des règles appropriées. La traduction chinoise de Mean Downsampling
est :In the below example, we start with a daily time series DataFrame spanning the entire month of June 2023. The resample function with the 'W' frequency downsamples the data to weekly intervals. By applying the mean method, we obtain the average value within each week. The resulting DataFrame, df_downsampled, contains the mean-downsampled time series data.
import pandas as pd # Create a sample time series DataFrame with daily frequency data = {'Date': pd.date_range(start='2023-06-01', end='2023-06-30', freq='D'), 'Value': range(30)} df = pd.DataFrame(data) df.set_index('Date', inplace=True) # Downsampling using mean df_downsampled = df.resample('W').mean() # Print the downsampled DataFrame print(df_downsampled)
Value Date 2023-06-04 1.5 2023-06-11 7.0 2023-06-18 14.0 2023-06-25 21.0 2023-07-02 27.0
最大降采样计算并设置每个间隔内的最高值。此方法适用于识别时间序列中的峰值或极端事件。在前面的示例中使用max而不是mean或sum允许我们执行最大降采样。
In the below example, we start with a daily time series DataFrame spanning the entire month of June 2023. The resample function with the 'W' frequency downsamples the data to weekly intervals. By applying the max method, we obtain the Maximum value within each week. The resulting DataFrame, df_downsampled, contains the maximum-downsampled time series data.
import pandas as pd # Create a sample time series DataFrame with daily frequency data = {'Date': pd.date_range(start='2023-06-01', end='2023-06-30', freq='D'), 'Value': range(30)} df = pd.DataFrame(data) df.set_index('Date', inplace=True) # Downsampling using mean df_downsampled = df.resample('W').max() # Print the downsampled DataFrame print(df_downsampled)
Value Date 2023-06-04 3 2023-06-11 10 2023-06-18 17 2023-06-25 24 2023-07-02 29
在本文中,我们讨论了如何使用Python对时间序列数据进行重新采样。Python提供了各种上采样和下采样技术。我们探讨了线性和最近邻插值用于上采样,以及均值和最大值插值用于下采样。您可以根据手头的问题使用任何一种上采样或下采样技术。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!