PYTHON从入门到实践 16.2.6 出现错误求助

16.2.6 周日均值图一直出现错误

![月日均值图](file:///C:/Users/zhenzhen/Desktop/2h%20a%20Day/python_work/matplotlib/btc/%E6%94%B6%E7%9B%98%E4%BB%B7%E6%9C%88%E6%97%A5%E5%9D%87%E5%80%BC%EF%BC%88%EF%BF%A5%EF%BC%89.svg)
![周日均值图](file:///C:/Users/zhenzhen/Desktop/2h%20a%20Day/python_work/matplotlib/btc/%E6%94%B6%E7%9B%98%E4%BB%B7%E5%91%A8%E6%97%A5%E5%9D%87%E5%80%BC%EF%BC%88%EF%BF%A5%EF%BC%89.svg)

#coding:utf-8
from itertools import groupby
from operator import itemgetter

import json
import pygal

filename = “btc_close_2017.json”
with open(filename) as f:
btc_data = json.load(f)

dates, months, weeks, weekdays, close = [], [], [], [], []
for btc_dict in btc_data:
dates.append(btc_dict[“date”])
months.append(str(btc_dict[“month”]))
weeks.append(str(btc_dict[“week”]))
weekdays.append(btc_dict[“weekday”])
close.append(int(float(btc_dict[“close”])))

def draw_line(x_data, y_data, title, y_legend):
xy_map = []
# 本段见后面解释
for x, y in groupby(sorted(zip(x_data, y_data)), key=itemgetter(0)):
y_list = [v for _, v in y]
xy_map.append([x, sum(y_list) / len(y_list)])
x_unique, y_mean = [*zip(*xy_map)]
line_chart = pygal.Line()
line_chart.title = title
line_chart.x_labels = x_unique
line_chart.add(y_legend, y_mean)
line_chart.render_to_file(title + “.svg”)
return line_chart

idx_month = dates.index(‘2017-12-01’)
line_chart_month = draw_line(months[:idx_month],close[:idx_month],
‘收盘价月日均值(¥)’,‘月日均值’)
line_chart_month
idx_week = dates.index(“2017-12-11”)
line_chart_week = draw_line(weeks[1:idx_week], close[1:idx_week],
“收盘价周日均值(¥)”, “周日均值”)

照书敲的运行后有错误 ‘int’ has no len(),我就把int 改成str
months.append(str(btc_dict[“month”]))
weeks.append(str(btc_dict[“week”]))
月日均值和图16-9有点不同:x轴的1-9显示的是01-09
周日均值和图16-10差别很大……我发现是x轴的排序有问题,但不知道怎么改
请求指点TT
months.append(str(btc_dict[“month”]))
weeks.append(str(btc_dict[“week”]))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值