2012-10-03 19 views
8

Değişikliklerin her bir yüzdesinin yüzdesini hesaplamaya çalışıyorum. Benİki sayı arasındaki değişim yüzdesini hesaplama (Python)

2.1 
    -0.8 
    -0.5 
    ... 

gibi farklar Ben yüzde değişim olacağını biliyor döndürür

prices = [30.4, 32.5, 31.7, 31.2, 32.7, 34.1, 35.8, 37.8, 36.3, 36.3, 35.6] 

    def f(): 
     for i in range(len(prices)): 
      print(prices[i]-prices[i-1]) 

ile farklılıkları hesaplanan ((i- (i-1))/(i-1) * 100 ama Senaryonun içine dahil etmek nasıl bilmiyorum Herhangi bir yardım çok takdir

+0

Muhtemelen 'istediğiniz aralığı (1, len (fiyatları))' - bu son ve ilk elemanlar arasındaki fark olacaktır yazdırır aksi ilk şey liste. –

+0

Değişiklik yüzdesi denkleminiz yanlış ... Hata (xy)/x gibi giden bir% hata denklemi düşünebilirsiniz, burada x teoride doğru değerdir, ancak fark abs (xy)/ortalama x, y – jeremy

+0

Haklısınız David. Aralığını değiştirdiğiniz şekilde değiştirdim ve baskıya son satırı değiştirdim ((fiyatlar [i] -prices [i-1])/fiyatlar [i-1] * 100) ' –

cevap

8

bu deneyin:..

prices = [30.4, 32.5, 31.7, 31.2, 32.7, 34.1, 35.8, 37.8, 36.3, 36.3, 35.6] 

for a, b in zip(prices[::1], prices[1::1]): 
    print 100 * (b - a)/a 

Düzenleme: Eğer bir liste olmasını istiyorsanız, bunu yapabilirdi: Eğer Python pandalar kütüphanesinden (http://pandas.pydata.org/) maruz olmadıysanız

print [100 * (b - a)/a for a, b in zip(prices[::1], prices[1::1])] 
+0

Düzenleme: değerlerin ilk çift sonra, sayılar çıkmak: 6,90789473684, -1,57728706625, 4,28134556575 , 5,58659217877 , 0.0 , 0.0 , 0.0 , 0.0 , -5,5900621118 , ,327868852459 , 0.0 –

+0

öyle mi ne anlamına gelmek? – arshajii

+0

Ne çıktı bekliyordunuz? – arshajii

10

, Kesinlikle bakmalısın.

olarak bu kadar kolaydır yapmak:

import pandas as pd 
prices = [30.4, 32.5, 31.7, 31.2, 32.7, 34.1, 35.8, 37.8, 36.3, 36.3, 35.6] 

price_series = pd.Series(prices) 
price_series.pct_change() 
İlgili konular