【发布时间】:2019-11-23 07:10:03
【问题描述】:
python 新手,有一个问题需要解决,我遇到了障碍。 希望计算 Google 的月度和年度平均价格,并告诉我们从 2004 年到 2019 年 10 月 Google 最好和最差的六个月以及最好和最差的六年 平均价格定义为 ((v1*c1)+(v2*c2)+(v3*c3)+(v4*c4)...+(vn*cn)) / (v1+v2+v3+v4。 ..+vn) 其中 vi 是第 i 天的交易量,ci 是第 i 天的调整收盘价。
我已经能够从网络上导入数据,但现在我试图至少将一年变成一个元组,然后从中解决,但不知道如何将我拥有的数据转换为一个元组。 我尝试 function = tuple 但得到错误。我知道如何创建一个元组,但不知道如何从我拥有的数据中创建一个元组,或者我是否缺少将数据放入一个元组的步骤,或者我是否偏离了这种方法
这是我到目前为止的代码,如果有人能指出我正确的方向,将不胜感激
# url = "http://193.1.33.31:88/pa1/GOOGL.csv"
import csv
import begin
from read_from_file_or_net import get_stuff_from_net as gn
def main(csv_file: 'URL of CSV file'):
# def main(csv_file):
try:
print(f"{csv_file}")
my_file = gn(csv_file)
# with open(f".cache/{my_file}", "w") as output:
# output.write(my_file)
my_file = my_file.split("\n")
for row in my_file:
row = row.strip().split(",")
for cell in row:
if cell.isalpha():
print(f"{cell}"+"", end="")
elif "-" in cell:
print(f"{cell}", end="")
elif "." in cell:
print(f"{float(cell):>10.2f}", end="")
elif cell.isnumeric():
print(f"{int(cell):>15d}", end="")
elif not cell.isspace():
print(f"{cell}", end=" ")
#elif cell.istitle():
# print(f"{cell}", end="")
#else:
#print("?", end="")
print()
except Exception as e:
print(f"{e}")
if __name__ == "__main__":
main("http://193.1.33.31:88/pa1/GOOGL.csv")
【问题讨论】:
-
也许更好地使用 pandas -
df = pandas.read_csv('http://193.1.33.31:88/pa1/GOOGL.csv')- 你得到的都是DataFrame(table/array) 有许多强大的功能。 -
将 csv 中的数据转换为我尝试过的元组
main("http://193.1.33.31:88/pa1/GOOGL.csv") = tup_year_avg2019 -
您尝试将某个值
tup_year_avg2019分配给函数main()的结果 - 这在任何语言中都不正确。也许您的意思是tup_year_avg2019 = main(),但它需要将数据放在列表中,而不是打印它们,然后使用return将它们发回。 -
感谢@furas 的建议,除了阅读它之外,我没有使用熊猫的经验,但据我所见,它可能会让我的生活更轻松,但我认为这样做可能会更好学习经验,但我可能完全错了
-
如果你想学习Python的基础,你可以尝试自己做。稍后你可以学习如何使用
pandas进行操作,因为pandas非常强大 - 所以知道它很好 - 而且它可能非常复杂 - 所以还需要时间来学习它。
标签: python