Translation not up to date
Zaman serisi kitaplığınızla çalışmaya başlamak için, kitaplığı Python not defterinize ya da uygulamanızın içine alın.
Zaman serisi kitaplığını içe aktarmak için bu komutu kullanın:
# Import the package
import tspy
Zaman dizisi oluşturma
Bir zaman serisi oluşturmak ve kitaplık işlevlerini kullanmak için veri kaynağına karar vermeniz gerekir. Desteklenen veri kaynakları şunları içerir:
- Bellek içi listeler
- Pandalar DataFrames
- Gözlemlerin bellek içi toplamaları (
ObservationCollection
yapısını kullanarak) - Kullanıcı tanımlı okuyucular (
TimeSeriesReader
yapısını kullanarak)
Aşağıdaki örnekte, bellek içi bir listeden veri alınırken oluşan veriler gösterilmektedir:
ts = tspy.time_series([5.0, 2.0, 4.0, 6.0, 6.0, 7.0])
ts
Çıkış aşağıdaki gibidir:
TimeStamp: 0 Value: 5.0
TimeStamp: 1 Value: 2.0
TimeStamp: 2 Value: 4.0
TimeStamp: 3 Value: 6.0
TimeStamp: 4 Value: 6.0
TimeStamp: 5 Value: 7.0
You can also operate on many time-series at the same time by using the MultiTimeSeries
construct. MultiTimeSeries
temel olarak, her zaman serisinin kendine özgü anahtarı olduğu bir zaman dizilerinin sözlüğüdür. Zaman dizisi zaman içinde hizalanmaz.
MultiTimeSeries
yapısı, tek zaman serisi yapısı olarak dönüştürmek ve içe aktarmak için benzer yöntemler sağlar:
mts = tspy.multi_time_series({
"ts1": tspy.time_series([1.0, 2.0, 3.0]),
"ts2": tspy.time_series([5.0, 2.0, 4.0, 5.0])
})
Çıkış aşağıdaki gibi olur:
ts2 time series
------------------------------
TimeStamp: 0 Value: 5.0
TimeStamp: 1 Value: 2.0
TimeStamp: 2 Value: 4.0
TimeStamp: 3 Value: 5.0
ts1 time series
------------------------------
TimeStamp: 0 Value: 1.0
TimeStamp: 1 Value: 2.0
TimeStamp: 2 Value: 3.0
Zamanı yorumlama
Varsayılan olarak, bir zaman serisi, belirli bir gözlem oluşturulduğunda, zaman işareti olarak adlandırılan bir long
veri tipini kullanır. Zaman damgaları, zaman damgaları olan zaman dizileri için insan yorumlanası olan bir zaman başvuru sistemidir. Bkz. Zaman başvuru sistemini kullanma.
The following example shows how to create a simple time series where each index denotes a day after the start time of 1990-01-01
:
import datetime
granularity = datetime.timedelta(days=1)
start_time = datetime.datetime(1990, 1, 1, 0, 0, 0, 0, tzinfo=datetime.timezone.utc)
ts = tspy.time_series([5.0, 2.0, 4.0, 6.0, 6.0, 7.0], granularity=granularity, start_time=start_time)
ts
Çıkış aşağıdaki gibidir:
TimeStamp: 1990-01-01T00:00Z Value: 5.0
TimeStamp: 1990-01-02T00:00Z Value: 2.0
TimeStamp: 1990-01-03T00:00Z Value: 4.0
TimeStamp: 1990-01-04T00:00Z Value: 6.0
TimeStamp: 1990-01-05T00:00Z Value: 6.0
TimeStamp: 1990-01-06T00:00Z Value: 7.0
Basit dönüştürmeler gerçekleştiriliyor
Dönüştürmeler, bir ya da daha fazla zaman serisi verildiğinde yeni bir zaman serisi döndüren işlevlerdir.
Örneğin, bir zaman serisini pencerelere bölmek için, her pencerenin size=3
olduğu, 2 kaydın kaydırıldığı bir zaman dilimini kullanarak aşağıdaki yöntemi kullanabilirsiniz:
window_ts = ts.segment(3, 2)
window_ts
Çıkış aşağıdaki gibidir:
TimeStamp: 0 Value: original bounds: (0,2) actual bounds: (0,2) observations: [(0,5.0),(1,2.0),(2,4.0)]
TimeStamp: 2 Value: original bounds: (2,4) actual bounds: (2,4) observations: [(2,4.0),(3,6.0),(4,6.0)]
Bu örnek, bir zaman dizisindeki her bir değere 1 eklenmesini gösterir:
add_one_ts = ts.map(lambda x: x + 1)
add_one_ts
Çıkış aşağıdaki gibidir:
TimeStamp: 0 Value: 6.0
TimeStamp: 1 Value: 3.0
TimeStamp: 2 Value: 5.0
TimeStamp: 3 Value: 7.0
TimeStamp: 4 Value: 7.0
TimeStamp: 5 Value: 8.0
Ya da başka bir zaman dizisiyle ts
gibi bir zaman serisini geçici olarak bırakıyorsunuz ts2
:
ts2 = tspy.time_series([1.0, 2.0, 3.0])
joined_ts = ts.left_join(ts2)
joined_ts
Çıkış aşağıdaki gibidir:
TimeStamp: 0 Value: [5.0, 1.0]
TimeStamp: 1 Value: [2.0, 2.0]
TimeStamp: 2 Value: [4.0, 3.0]
TimeStamp: 3 Value: [6.0, null]
TimeStamp: 4 Value: [6.0, null]
TimeStamp: 5 Value: [7.0, null]
Dönüştürücüler kullanılıyor
transformers paketinde bulunan zengin bir yerleşik transformatör süiti sağlanmaktadır. Sağlanan dönüştürücü işlevlerini kullanmak için paketi içe aktarın:
from tspy.builders.functions import transformers
Paketi ekledikten sonra, bir zaman serisindeki verileri transform
yöntemini kullanarak dönüştürebilirsiniz.
Örneğin, bir zaman dizisiyle ilgili bir fark gerçekleştirmek için:
ts_diff = ts.transform(transformers.difference())
Çıkış şu şekilde:
TimeStamp: 1 Value: -3.0
TimeStamp: 2 Value: 2.0
TimeStamp: 3 Value: 2.0
TimeStamp: 4 Value: 0.0
TimeStamp: 5 Value: 1.0
İndirgenlerin kullanılması
transformers paketine benzer şekilde, indiriciler paketi ' nin sağladığı yöntemler kullanarak bir zaman serisini düşürebilirsiniz. İndirgenlerin paketini aşağıdaki gibi içe aktarabilirsiniz:
from tspy.builders.functions import reducers
Paketi içe aktardıktan sonra, örneğin, bir zaman serisinin ortalamasını almak için reduce
yöntemini kullanın:
avg = ts.reduce(reducers.average())
avg
Bu çıkışlar:
5.0
İndirgenlerin, segmentasyon dönüşümlerinin yanında kullanılmasına olanak sağlayan özel bir özelliği vardır (saatlik toplam, bir hata oluşmadan önce pencerede avg ve diğerleri). segmentation + reducer
' un çıkışı bir zaman serisi olduğu için, transform
yöntemi kullanılır.
Örneğin, 3. boyutta pencerelere bölümlemek ve her bir pencereye ortalamayı almak için şunu kullanın:
avg_windows_ts = ts.segment(3).transform(reducers.average())
Bu sonuçtaki sonuçlar:
imeStamp: 0 Value: 3.6666666666666665
TimeStamp: 1 Value: 4.0
TimeStamp: 2 Value: 5.333333333333333
TimeStamp: 3 Value: 6.333333333333333
Grafik zaman dizisi
Tembel değerlendirme, bir zaman serisini grafikleştirirken kullanılır. Bir zaman serisini grafiklediğinizde, aşağıdakilerden birini yapabilirsiniz:
BoundTimeSeries
değerini döndüren zaman dizilerinin gözlemlerini topla- Zaman serisini bir değer ya da değer derlemi olarak küçültür
- Saklama ya da Yazdırma İşlemleri Gerçekleştir
Örneğin, bir zaman dilindeki tüm değerleri toplamak ve iade etmek için:
observations = ts.materialize()
observations
Bu sonuçtaki sonuçlar:
[(0,5.0),(1,2.0),(2,4.0),(3,6.0),(4,6.0),(5,7.0)]
Bir zaman dizisinden bir aralık toplamak için şunu kullanın:
observations = ts[1:3] # same as ts.materialize(1, 3)
observations
Çıkış şu şekilde:
[(1,2.0),(2,4.0),(3,6.0)]
Zaman serisi, doğada dönemsel bir dönemse, aralık sorguları için eniyilenmiş bir zaman serisine dikkat edin.
describe
' ı geçerli bir zaman serisinde kullanarak, zaman serisini de grafiklerle kullanabilirsiniz:
describe_obj = ts.describe()
describe_obj
Çıkış:
min inter-arrival-time: 1
max inter-arrival-time: 1
mean inter-arrival-time: 1.0
top: 6.0
unique: 5
frequency: 2
first: TimeStamp: 0 Value: 5.0
last: TimeStamp: 5 Value: 7.0
count: 6
mean:5.0
std:1.632993161855452
min:2.0
max:7.0
25%:3.5
50%:5.5
75%:6.25
Daha fazla bilgi
- Zaman serisi anahtar işlevi
- Zaman serisi işlevleri
- Zaman serisi tembel değerlendirme
- Zaman başvuru sistemini kullanma
tspy
Python SDK belgeleri
Üst konu: Zaman serisi analizi