如何计算不同时期的平均股票价格
How to calculate an average stock price depending on periods
我正在尝试根据不同时期(周、月、年)计算股票的平均开盘价。
在这里你可以看到我的 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 添加一列,其中包含每周的结果,而不是将结果放在数组中。
不允许我使用pandas,我只能使用pyspark和koalas
试试看:
from statistics import mean
average = mean([week["Open"] for week in df["weekofyear"]])
搜索“pythonic”for 循环,遍历项目而不是索引。 https://www.w3schools.com/python/python_for_loops.asp
[更新:将年份纳入计算]
当您正在寻找一周(和一年)的平均价格并且已经在数据框中添加了 weekofyear 时,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
我正在尝试根据不同时期(周、月、年)计算股票的平均开盘价。
在这里你可以看到我的 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 添加一列,其中包含每周的结果,而不是将结果放在数组中。
不允许我使用pandas,我只能使用pyspark和koalas
试试看:
from statistics import mean
average = mean([week["Open"] for week in df["weekofyear"]])
搜索“pythonic”for 循环,遍历项目而不是索引。 https://www.w3schools.com/python/python_for_loops.asp
[更新:将年份纳入计算]
当您正在寻找一周(和一年)的平均价格并且已经在数据框中添加了 weekofyear 时,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