如何计算Python获取的加密货币价格序列平均值并存入列表
报错原因
mean(new_lst[1])执行报错的核心原因是:new_lst[1]是单个浮点型的价格数值,而均值计算函数mean()要求传入可迭代的序列对象(如存储了所有价格的列表),无法对单个数值做均值计算。
修正代码
你已经在循环中将单币种所有价格存入了caz列表,只需要在遍历完所有价格数据后,再对整个caz列表计算均值存入目标列表即可:
import numpy as np # 若使用Python自带方法计算均值可省略导入 # 初始化存储所有币种均值的总列表 all_coin_mean = [] for c,d,y in zip(crypto.Wicker,crypto.Dateroundts,crypto.Dateround1ts): yst = cg.get_coin_market_chart_range_by_id(c,'usd', d, y) print(c) bst = list(yst.values())[0] # 提取当前币种所有价格,用列表推导式简化写法 caz = [new_lst[1] for new_lst in bst] # 计算当前币种均价,无依赖的原生写法也可替换为:current_mean = sum(caz)/len(caz) current_mean = np.mean(caz) # 存入总列表 all_coin_mean.append(current_mean)
异常兼容处理
如果存在接口返回空数据的场景,可以加判断避免除以0报错:
if len(caz) == 0: # 空数据时填入你需要的默认值,比如nan current_mean = np.nan else: current_mean = np.mean(caz)
内容的提问来源于stack exchange,提问作者crispYpickle
相关产品推荐
相关产品推荐

