12

我有一个价格列表,我试图计算每个数字的百分比变化。我计算了差异

    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])

这会返回差异,例如

    2.1
    -0.8
    -0.5
    ...

我知道百分比的变化将是 ((i-(i-1))/(i-1) *100,但我不知道如何将其合并到脚本中。任何帮助将不胜感激。

4

3 回答 3

20

如果您还没有接触过 Python 中的 pandas 库 (http://pandas.pydata.org/),那么您绝对应该去看看。

这样做很简单:

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()
于 2013-01-04T21:41:36.810 回答
15

试试这个:

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

编辑:如果你想把它作为一个列表,你可以这样做:

print [100 * (b - a) / a for a, b in zip(prices[::1], prices[1::1])]
于 2012-10-03T00:08:38.183 回答
2

虽然绝对不是最优雅的方式,但如果你想定义一个函数,它看起来像这样:

def pctc(Q):
    output = [0]
    for i in range(len(Q)):
        if i > 0:
            increase = Q[i]-Q[i-1]
            percentage = (increase/Q[i]) * 100
            output.append(percentage)
    return(output)

可能有更好的方法来执行该功能,但至少很清楚。:))

于 2020-04-08T13:01:53.850 回答