如何根据时段计算平均股价

2024-06-10 02:10:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图根据不同时期(周、月、年)计算股票的平均开盘价

在这里您可以看到我的df的一部分:My dataframe(完整df有987行)

首先,我试图每周计算平均开盘价。我找到了一个解决方案,但它是不可持续的(我的电脑花了5分钟才完成计算)。这是:

def average_opening_and_closing_prices(df):
    
    array = [0]
    n = df["weekofyear"].count()
    j=0

    for i in range(0,n): 

        array[j] = array[j] + kdf["Open"][i]
        if i != n-1 and kdf["weekofyear"][i] != kdf["weekofyear"][i+1]:
            array.append(0)
            j = j+1
    
    for x in array:
      print(str(x) + " ") 
    
average_opening_and_closing_prices(AMAZON_df)

你能帮我改进我的解决方案吗(主要是在执行时间上)?另外,例如,我想直接在我的df中添加一列,其中包含每周的结果,而不是将结果放入数组中

我不允许使用熊猫,我只能使用pyspark和考拉


Tags: andindffor解决方案array股票prices
2条回答

试试看:

from statistics import mean 
average = mean([week["Open"] for week in df["weekofyear"]])

搜索关于“pythonic”的循环,循环项目,而不是索引https://www.w3schools.com/python/python_for_loops.asp

[更新:将年份纳入计算] 由于您正在寻找一周(和一年)的平均价格,并且已经在数据框中添加了一周和一年,panda本身可以为您做这件事。只需为年份添加一列,然后尝试df.groupby(['year', 'weekofyear']).mean() 样本如下:

import pandas as pd

df = pd.DataFrame({
    'weekofyear' : [1, 1, 1, 2, 2, 2, 3, 3, 3], 
    'year' : [2017, 2017, 2018, 2017, 2017, 2018, 2017, 2017, 2018],
    'Open' : [757, 758, 759, 761, 761, 762, 763, 764, 764]
})

result_df = df.groupby(['year', 'weekofyear']).mean()

print(result_df)

输出

Open
year weekofyear       
2017 1           757.5
     2           761.0
     3           763.5
2018 1           759.0
     2           762.0
     3           764.0

相关问题 更多 >