from pyecharts.charts import Bar,Timeline
from pyecharts.options import *
#处理数据
f = open("D:/1960-2019全球GDP数据.csv","r",encoding="GB2312")
#读取每一行,返回是一个列表
data_lines = f.readlines()
f.close()
#数据中第一行是year,国家,GDP的字样,第一行并非数据,所以要删掉
#可以访问列表中的第一行数据进行删除
my_dict = {}
data_lines.pop(0)
for data in data_lines:
year=data.split(",")[0]
country=data.split(",")[1]
GDP=float(data.split(",")[2])#因为所提供的的数据有科学计数的方式,因此可以通过float类型进行转换
try:
my_dict[year].append([country,GDP])
except KeyError:
my_dict[year]=[]
my_dict[year].append([country, GDP])
#对年份进行排序,由于字典中用for循环取出时都不按顺序,因此我们可以先取出关键字,排好序
keys=sorted(my_dict.keys())
timeline=Timeline()
for every_year in keys:
#对每年的GDP进行排序,只取前八名
my_dict[every_year].sort(key=lambda element:element[1],reverse=True)
forth_8=my_dict[every_year][0:8]
x_data=[]
y_data=[]
for data in forth_8:
x_data.append(data[0])
y_data.append(data[1]/100000000)
#绘图
bar = Bar()
x_data.reverse()
y_data.reverse()
bar.add_xaxis(x_data)
bar.add_yaxis("GDP(亿)",y_data,label_opts=LabelOpts(position="right"))
#反转X轴和Y轴
bar.reversal_axis()
bar.set_global_opts(
title_opts=TitleOpts(title=f"{every_year}的世界各国GDP图")
)
timeline.add(bar,str(every_year))
#设置自动播放
timeline.add_schema(
play_interval=1000,
is_timeline_show=True,
is_auto_play=True,
is_loop_play=True
)
timeline.render("1960-2019年世界GDP的排名.html")
一定要一步一步的来哦,我在调试的过程中也是出现很多错误,但是都一一克服了呀!
标签:GDP,bar,python,my,1960,dict,year,data From: https://blog.51cto.com/u_15760583/6065454