如何优化更改“熊猫数据框”列中的值

益智游戏

我正在尝试查找从给定的一天到将来的n天里,股票的变化量。唯一的问题是,在1000行数据上运行此程序大约需要一分钟,而我有数百万行。我认为“滞后”是由以下原因引起的:

stocks[0][i][string][line[index]] = adjPctChange(line[adjClose],line[num])

我在想,每当碰到这条线时,可能会复制500只股票的整个3D数据框,但是我只是不确定,或者不知道如何使其更快。此外,它还会引发以下警告:

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame

这是我的代码:

daysForeward = 2
for days in range(1,daysForeward+1):
    string = 'closeShift'+str(days)
    stocks[0][i][string] = stocks[0][i]['adjClose'].shift(days-(days*2))

for line in stocks[0][i].itertuples():
    num = 6 #first closeShift columnb
    for days in range(1,daysForeward+1):
        string = 'closeShift'+str(days)
        stocks[0][i][string][line[index]] = adjPctChange(line[adjClose],line[num])
        num+=1

以下是应用百分比变化前后的数据:

       date     open    close  adjClose  closeShift1  closeShift2
0  19980102  20.3835  20.4417       NaN          NaN     0.984507
1  19980105  20.5097  20.5679       NaN     0.984507     1.034904
2  19980106  20.1408  20.0826  0.984507     1.034904     0.994047
3  19980107  20.1408  20.9950  1.034904     0.994047     0.982926
4  19980108  21.1115  20.0244  0.994047     0.982926     0.989441

       date     open    close  adjClose  closeShift1  closeShift2
0  19980102  20.3835  20.4417       NaN          NaN          NaN
1  19980105  20.5097  20.5679       NaN          NaN          NaN
2  19980106  20.1408  20.0826  0.984507     4.869735     0.959720
3  19980107  20.1408  20.9950  1.034904    -3.947904    -5.022423
4  19980108  21.1115  20.0244  0.994047    -1.118683    -0.463311

一些解释:

[0]stocks[0][i]只是获得在3D数据帧适当的水平,[i]是股票名称正在通过更高了迭代for循环的股票。

adjClose专栏仅是其修改版本close,是我更喜欢使用的版本close

adjPctChange() 是一个自定义的百分比变化函数,可围绕等式切换方程,以便100至50会产生与50至100相同的结果,因此结果可以取平均值并且不会向上倾斜。

def adjPctChange(startPoint, currentPoint):
    if startPoint < currentPoint:
        x = abs(((float(startPoint)-currentPoint)/float(currentPoint))*100.0)
    else:
        x = ((float(currentPoint)-startPoint)/float(startPoint))*100.0    
    return x

感谢任何能提供帮助的人!

克里斯·考克(Chrisaycock)

您不应该在DataFrame上循环;只需使用数组函数即可。

前:

In [30]: df
Out[30]:
       date     open    close  adjClose  closeShift1  closeShift2
0  19980102  20.3835  20.4417       NaN          NaN     0.984507
1  19980105  20.5097  20.5679       NaN     0.984507     1.034904
2  19980106  20.1408  20.0826  0.984507     1.034904     0.994047
3  19980107  20.1408  20.9950  1.034904     0.994047     0.982926
4  19980108  21.1115  20.0244  0.994047     0.982926     0.989441

数组符号:

daysForeward = 2
for day in range(1, daysForeward+1):
    column = 'closeShift' + str(day)
    df[column] = (df[column] - df.adjClose) / np.maximum(df[column], df.adjClose) * 100.0

后:

In [33]: df
Out[33]:
       date     open    close  adjClose  closeShift1  closeShift2
0  19980102  20.3835  20.4417       NaN          NaN          NaN
1  19980105  20.5097  20.5679       NaN          NaN          NaN
2  19980106  20.1408  20.0826  0.984507     4.869727     0.959713
3  19980107  20.1408  20.9950  1.034904    -3.947902    -5.022495
4  19980108  21.1115  20.0244  0.994047    -1.118760    -0.463358

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何更改熊猫数据框中某个类别的另一列中的值?

来自分类Dev

确定何时在熊猫数据框中更改列值

来自分类Dev

熊猫数据框根据条件更改列中的值

来自分类Dev

如何更改熊猫数据框中列的日期时间格式

来自分类Dev

如何计算熊猫数据框中列值更改的频率?

来自分类Dev

如何计算熊猫数据框中列值更改的频率

来自分类Dev

根据数据框中的其他列更改熊猫数据框的列值

来自分类Dev

更改熊猫数据框中的索引值

来自分类Dev

更改熊猫数据框中的索引值

来自分类Dev

如何基于列中的值差异拆分熊猫数据框

来自分类Dev

如何更改特定列的特定行的值,以及在同一数据框中以熊猫为单位的特定行的值

来自分类Dev

当熊猫数据框中的列已具有大写值时,如何将其更改为大写?

来自分类Dev

如何根据多种条件更改熊猫数据框列系列中的特定单元格值?

来自分类Dev

如何计算熊猫数据框中的值

来自分类Dev

更改熊猫数据框中的列值以将数字显示为Milions

来自分类Dev

熊猫数据框以给定间隔更改列值

来自分类Dev

根据重复项更改熊猫数据框列的值

来自分类Dev

更改R数据框中的列值

来自分类Dev

更改数据框中的列的值

来自分类Dev

如何使用熊猫数据框中其他列的条件语句对列中的值求和?

来自分类Dev

如何从带有时间戳的熊猫数据框中删除未更改的值?

来自分类Dev

根据value_counts()更改熊猫数据框中的值

来自分类Dev

根据value_counts()更改熊猫数据框中的值

来自分类Dev

更改熊猫数据框中的所有行的值

来自分类Dev

如何在Pandas数据框中的特定位置插入列?(更改熊猫数据框中的列顺序)

来自分类Dev

如何更改熊猫中数据框行的数据类型?

来自分类Dev

如何通过索引值和任何列中的值搜索熊猫数据框

来自分类Dev

如何检查两个数据框(熊猫)中多个列的列值?

来自分类Dev

如何使用方法链更改熊猫数据框中的列顺序?

Related 相关文章

  1. 1

    如何更改熊猫数据框中某个类别的另一列中的值?

  2. 2

    确定何时在熊猫数据框中更改列值

  3. 3

    熊猫数据框根据条件更改列中的值

  4. 4

    如何更改熊猫数据框中列的日期时间格式

  5. 5

    如何计算熊猫数据框中列值更改的频率?

  6. 6

    如何计算熊猫数据框中列值更改的频率

  7. 7

    根据数据框中的其他列更改熊猫数据框的列值

  8. 8

    更改熊猫数据框中的索引值

  9. 9

    更改熊猫数据框中的索引值

  10. 10

    如何基于列中的值差异拆分熊猫数据框

  11. 11

    如何更改特定列的特定行的值,以及在同一数据框中以熊猫为单位的特定行的值

  12. 12

    当熊猫数据框中的列已具有大写值时,如何将其更改为大写?

  13. 13

    如何根据多种条件更改熊猫数据框列系列中的特定单元格值?

  14. 14

    如何计算熊猫数据框中的值

  15. 15

    更改熊猫数据框中的列值以将数字显示为Milions

  16. 16

    熊猫数据框以给定间隔更改列值

  17. 17

    根据重复项更改熊猫数据框列的值

  18. 18

    更改R数据框中的列值

  19. 19

    更改数据框中的列的值

  20. 20

    如何使用熊猫数据框中其他列的条件语句对列中的值求和?

  21. 21

    如何从带有时间戳的熊猫数据框中删除未更改的值?

  22. 22

    根据value_counts()更改熊猫数据框中的值

  23. 23

    根据value_counts()更改熊猫数据框中的值

  24. 24

    更改熊猫数据框中的所有行的值

  25. 25

    如何在Pandas数据框中的特定位置插入列?(更改熊猫数据框中的列顺序)

  26. 26

    如何更改熊猫中数据框行的数据类型?

  27. 27

    如何通过索引值和任何列中的值搜索熊猫数据框

  28. 28

    如何检查两个数据框(熊猫)中多个列的列值?

  29. 29

    如何使用方法链更改熊猫数据框中的列顺序?

热门标签

归档