2016-09-13 63 views
5

Python3.5 kullanıyorum ve pandalarla çalışıyorum. Yahoo finansından stok verileri yükledim ve dosyaları csv'ye kaydettim. DataFrames'im bu verileri csv'den yükler. Bu ben endeksi sadece benim belirli satır ve sütun vermek ve şunu yapacaktır iLOC, loc, ix ama bu değerleri kullanabilirsiniz biliyorum benim DataFrameBir önceki satırın pandalar veri çerçevesindeki geçerli satırdan nasıl çıkarılır ve her satıra uygulanır; bir döngü kullanmadan?

Date  Open  High  Low  Close Volume Adj Close 
1990-04-12 26.875000 26.875000 26.625 26.625  6100 250.576036 
1990-04-16 26.500000 26.750000 26.375 26.750  500 251.752449 
1990-04-17 26.750000 26.875000 26.750 26.875  2300 252.928863 
1990-04-18 26.875000 26.875000 26.500 26.625  3500 250.576036 
1990-04-19 26.500000 26.750000 26.500 26.750  700 251.752449 
1990-04-20 26.750000 26.875000 26.750 26.875  2100 252.928863 
1990-04-23 26.875000 26.875000 26.750 26.875  700 252.928863 
1990-04-24 27.000000 27.000000 26.000 26.000  2400 244.693970 
1990-04-25 25.250000 25.250000 24.875 25.125  9300 236.459076 
1990-04-26 25.000000 25.250000 24.750 25.000  1200 235.282663 

olduğunu CSV dosyasının on satır bir kopyasıdır işlemi her satırda gerçekleştirmeyin. Örneğin: Açık sütundaki verilerin bir satırında 26.875 değeri ve altındaki satır 26.50'dir. Fiyat düştü. Bir önceki günden itibaren Artış veya Azaltmanın% 'sini yakalayabilmek istiyorum, bu yüzden bu örneği bitirmek için .375, 26.875 =% 1.4'lük bir düşüşü bir günden diğerine düşürür. Bu hesaplamayı her satırda çalıştırabilmem için, bir önceki günden ne kadar arttığı veya azaldığını biliyorum. Denediğim dizin işlevleri ama mutlak ve bir döngü kullanmak istemiyorum. Bunu ix, iloc, loc veya başka bir işlevle yapabileceğim bir yol var mı?

+0

Ne 'df.Close.pct_change()' ne olacak? – MaxU

+0

Yea vardiya çalışmalıyım sadece baktım teşekkür ederim ben de böyle bir şey arıyordum ben de close.pct çalışacağım Sorularımın cevabı – ZacAttack

+1

Teşekkürler Belki de yanlış anladım, ama yapamazsın df .iloc [1 :,:] - df.iloc [: - 1,:] 'sadece belirli sütunlara uygulamak istiyorsanız, sütun adlarınız/indeksleriniz için ayarlayabilirsiniz. – Andrew

cevap

14

Eğer pct_change() ve/veya diff() yöntemleri

kullanabilirsiniz

Demo:

In [138]: df.Close.pct_change() * 100 
Out[138]: 
0   NaN 
1 0.469484 
2 0.467290 
3 -0.930233 
4 0.469484 
5 0.467290 
6 0.000000 
7 -3.255814 
8 -3.365385 
9 -0.497512 
Name: Close, dtype: float64 

In [139]: df.Close.diff() 
Out[139]: 
0  NaN 
1 0.125 
2 0.125 
3 -0.250 
4 0.125 
5 0.125 
6 0.000 
7 -0.875 
8 -0.875 
9 -0.125 
Name: Close, dtype: float64 
+0

Kodu gönderdiğiniz için teşekkürler Bana izin verdiğinde doğru cevaplayacağım – ZacAttack