如何解决Python 3:为什么这种方法在已经工作后不将变量除以熊猫数据帧的索引?
它在一个地方工作,但在下面不起作用。请有人帮忙! 我第二次尝试使用“/”操作数将“要购买的股票数”数据添加到我的 Pandas 数据帧时遇到一个关键错误,尽管该方法在我的代码早期完全正常工作。我错过了什么?
import pandas as pd
import requests
import math
from scipy import stats
import numpy as np
import xlsxwriter
stocks = pd.read_csv(r'C:\Users\micha\Downloads\sp_500_stocks (1).csv')
import secrets import IEX_CLOUD_API_TOKEN
symbol = 'AAPL'
api_url = f'https://sandBox.iexapis.com/stable/stock/{symbol}/stats?token={IEX_CLOUD_API_TOKEN}'
data = requests.get(api_url).json()
print(data)
def chunks(lst,n):
for i in range(0,len(lst),n):
yield lst[i:i+n]
symbol_groups = list(chunks(stocks['Ticker'],100))
symbol_strings = []
for i in range(0,len(symbol_groups)):
symbol_strings.append(','.join(symbol_groups[i]))
my_columns = ['Ticker','Stock Price','One-Year Price Return','Number of Shares to Buy']
final_dataframe = pd.DataFrame(columns=my_columns)
for symbol_string in symbol_strings:
batch_api_call_url = f'https://sandBox.iexapis.com/stable/stock/market/batch/?types=stats,quote&symbols={symbol_string}&token={IEX_CLOUD_API_TOKEN}'
data = requests.get(batch_api_call_url).json()
for symbol in symbol_string.split(','):
final_dataframe = final_dataframe.append(
pd.Series([symbol,data[symbol]['quote']['latestPrice'],data[symbol]['stats']['year1ChangePercent'],'N/A'
],index=my_columns),ignore_index=True)
print(final_dataframe)
final_dataframe.sort_values('One-Year Price Return',ascending=False,inplace=True)
final_dataframe = final_dataframe[:50]
final_dataframe.reset_index(inplace=True)
print(final_dataframe)
def portfolio_input():
global portfolio_size
portfolio_size = input("Enter the size of your portfolio:")
try:
float(portfolio_size)
except ValueError:
print("That is not a number! \nPlease try again:")
portfolio_size = input("Enter the size of your portfolio:")
portfolio_input()
print(portfolio_size)
position_size = float(portfolio_size)/len(final_dataframe.index)
for i in range(0,len(final_dataframe)):
final_dataframe.loc[i,'Number of Shares to Buy'] = math.floor(position_size/final_dataframe.loc[i,'Stock Price'])
print(final_dataframe)
# high-quality-momentum = hqm
hqm_columns = [
'Ticker','Number of Shares to Buy','One-Year Return percentile','Six-Month Price Return','Six-Month Return percentile','Three-Month Price Return','Three-Month Return percentile','One-Month Price Return','One-Month Return percentile','HQM score'
]
hqm_dataframe = pd.DataFrame(columns=hqm_columns)
for symbol_string in symbol_strings:
batch_api_call_url = f'https://sandBox.iexapis.com/stable/stock/market/batch/?types=stats,'):
hqm_dataframe = hqm_dataframe.append(
pd.Series([
symbol,data[symbol]['quote'],'n/a',data[symbol]['stats']['month6ChangePercent'],data[symbol]['stats']['month3ChangePercent'],data[symbol]['stats']['month1ChangePercent'],'n/a'
],index=hqm_columns),ignore_index=True
)
time_periods = [
'One-Year','Six-Month','Three-Month','One-Month'
]
for row in hqm_dataframe.index:
for time_period in time_periods:
change_column = f'{time_period} Price Return'
percentile_column = f'{time_period} Return percentile'
hqm_dataframe.loc[row,percentile_column] = stats.percentileofscore(hqm_dataframe[change_column],hqm_dataframe.loc[row,change_column])
from statistics import mean
for row in hqm_dataframe.index:
momentum_percentiles = []
for time_period in time_periods:
momentum_percentiles.append(hqm_dataframe.loc[row,f'{time_period} Return percentile'])
hqm_dataframe.loc[row,'HQM score'] = mean(momentum_percentiles)
print(hqm_dataframe)
hqm_dataframe.sort_values('HQM score',inplace=True)
hqm_dataframe = hqm_dataframe[:50]
portfolio_input()
position_size = float(portfolio_size) / len(hqm_dataframe.index)
print(position_size)
for i in range(0,len(hqm_dataframe)):
hqm_dataframe.loc[i,'Number of Shares to Buy'] = math.floor(position_size / hqm_dataframe.loc[i,'Stock Price'])
print(hqm_dataframe)
但在这里给我一个关键错误!尽管在我看来它本质上是相同的代码。显然我是初学者,如果你不知道,但请有人告诉我我错过了什么!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。