Suche…


Generieren Sie Zeitreihen von Zufallszahlen und lassen Sie die Stichprobe herunter

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# I want 7 days of 24 hours with 60 minutes each
periods = 7 * 24 * 60
tidx = pd.date_range('2016-07-01', periods=periods, freq='T')
#                     ^                                   ^
#                     |                                   |
#                 Start Date        Frequency Code for Minute
# This should get me 7 Days worth of minutes in a datetimeindex

# Generate random data with numpy.  We'll seed the random
# number generator so that others can see the same results.
# Otherwise, you don't have to seed it.
np.random.seed([3,1415])

# This will pick a number of normally distributed random numbers
# where the number is specified by periods
data = np.random.randn(periods)

ts = pd.Series(data=data, index=tidx, name='HelloTimeSeries')

ts.describe()

count    10080.000000
mean        -0.008853
std          0.995411
min         -3.936794
25%         -0.683442
50%          0.002640
75%          0.654986
max          3.906053
Name: HelloTimeSeries, dtype: float64

Nehmen wir diese 7 Tage pro Minute an Daten und alle 15 Minuten. Alle Frequenzcodes finden Sie hier .

# resample says to group by every 15 minutes.  But now we need
# to specify what to do within those 15 minute chunks.

# We could take the last value.
ts.resample('15T').last()

Oder alles andere, was wir mit einem groupby Objekt oder einer Dokumentation tun können.

Wir können sogar mehrere nützliche Dinge zusammenfassen. Lassen Sie uns das Grundstück min , mean , und max dieses resample('15M') Daten.

ts.resample('15T').agg(['min', 'mean', 'max']).plot()

Geben Sie hier die Bildbeschreibung ein

Lassen Sie uns '15T' (15 Minuten), '30T' (eine halbe Stunde) und '1H' (1 Stunde) erneut messen und sehen, wie unsere Daten glatter werden.

fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for i, freq in enumerate(['15T', '30T', '1H']):
    ts.resample(freq).agg(['max', 'mean', 'min']).plot(ax=axes[i], title=freq)

Geben Sie hier die Bildbeschreibung ein



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow