|
各位前辈们,求助一下,怎么理解下面这段绘制收盘价日均图。代码有些地方看不懂。。。求指教。
此外,按照代码来运行,但提示错误,不知道要怎么改才好呢?谢谢。
环境:python3.6 ; 参考书籍:《Python编程从入门到实践》
如下为代码:
—————————————————————————————————————————————————————————————
import json
#将数据加载到一个列表中
filename= 'btc_close_2017.json'
with open(filename) as f:
btc_data = json.load(f)
#创建5个列表,分别储存日期和收盘价
dates = []
months = []
weeks = []
weekdays = []
close =[]
#每一天的信息
for btc_dict in btc_data:
dates.append(btc_dict['date'])
months.append(int(btc_dict['month']))
weeks.append(int(btc_dict['week']))
weekdays.append(btc_dict['weekday'])
close.append(int(float(btc_dict['close'])))
from itertools import groupby
def draw_line(x_data,y_data,title,y_legend):
xy_map = [] #为何要将xy合并一起呢?
for x,y in groupby(sorted(zip(x_data,y_data)),key=lambda _: _[0]):
y_list = [v for _,v in y] #这一段的for循环是怎么样读取的呢?v in y是判断v 是否在 y内吗?
xy_map.append([x,sum(y_list) / len(y_list)]) #应该是表达平均收盘价吧?
x_unique,y_mean = [*zip(*xy_map)] #*zip()知道是逆运算,将xy_map分开。但(*xy_map())又表达什么意思呢?
line_chart = pygal.Line()
line_chart.title = title
line_chart.x_label = x_unique
line_chart.add(y_legend,y_mean)
line_chart.render_to_file(titel+'.svg')
return line_chart
——————————————————————————————————————————————————————————————————————
idx_month = dates.index('2017-12-01')
line_chart_month = draw_line(month[:idx_month],close[:idx_month],'收盘价月日均值(¥)','月日均值')
line_chart_month
TypeError Traceback (most recent call last)<ipython-input-98-7b10d14c1c29> in <module>() 1 idx_month = dates.index('2017-12-01')----> 2 line_chart_month = draw_line(month[:idx_month],close[:idx_month],'收盘价月日均值(¥)','月日均值') 3 line_chart_monthTypeError: 'int' object is not subscriptable
|
|