Python自学:从码到图(综合训练的让人心里发毛)

在编程大神里,对于动态柱状图来说应该是小儿科,可对于我这个自学者,真是一个“大课题”呢,但跟着学下来,心里很爽,这不就是前几年很火的动态表格么,原来只需要一些代码。

准备前的补充学习:列表的sort方法:

使用方法:

列表.sort(key=选择排序依据的函数,reverse=True|False)

·参数key,是要求传入一个函数,表示将列表的每一个元素都传入函数中,返回排序的依据;

·参数reverse,是否反转排序结果,True表示降序,False表示升序。

这是要做出的效果,依然是按照编程的思路来写流程,强化逻辑

1.数据的整理

打开文件,对文件内不符合要求的进行增删改切。

#读取数据
f = open("D:/1960-2019全球GDP数据.csv", "r", encoding="GB2312")
data_lines = f.readlines()
#关闭数据
f.close()
#删除第一行数据
data_lines.pop(0)

UTF-8:国际通用字库,支持现今世界各种不同语言。

gb2312 :是国标,是中国的字库,里面仅涵盖了汉字和一些常用外文

字库规模: UTF-8(字全) > gb2312(只有汉字)

UTF-8里面存储一个汉字3个字节,而gb2312中存储一个汉字2个字节

保存大小: UTF-8(更臃肿、加载更慢) > gb2312 (更小巧,加载更快)

这个案例里面延伸了些内容,比如这个编码。

二、数据的处理

编程说到底还是数据处理,算法的思考。那么对于一个数据,处理计算机能识别的符合python编辑语言的数据,就很有必要。

#将数据转化为字典存储,格式为:
#{年份:【国家,GDP】}.........}
#定义一个字典
data_dict = {}
for line in data_lines:
    year = int(line.split(",")[0]) #取年份KEY  ,split 分割出每一个数据元 int 是把数字调整为整数
    country = line.split(",")[1] #取国家
    gdp = float(line.split(",")[2]) #gdp数据
    try:
        data_dict[year].append([country, gdp]) #如何判断字典里面有没有KEY
    except KeyError:
        data_dict[year] = [] #如果异常了,就给它赋值一个空的年
        data_dict[year].append([country, gdp])
print(data_dict)

这里面的练习是对数据进行重新的字典类型存储,取年、取国家、取数据。

这里面出现了对“异常”处理的方法,try: except KeyError: 意思有点像,如果这样出错,就那样来的感觉,反正有一个能对就行。

三、数据的呈现:绘图

动态的GDP,其实跟视频一样,每一帧都是一个画面,也可以看成一个柱状图。时间线是在for循环里的,先设置年的遍历。

#创建时间线
timeline = Timeline({"theme":ThemeType.LIGHT})

#排序年份
#把KEY 取出来排序
sorted_year_list = sorted(data_dict.keys())
for year in sorted_year_list:
    data_dict[year].sort(key=lambda element:element[1], reverse=True)
    #取前10
    year_data = data_dict[year][0:10]
    x_data = []
    y_data = []
    for country_gdp in year_data:
        x_data.append(country_gdp[0]) #x轴添加国家
        y_data.append(country_gdp[1]/100000000) #y轴添加gtp
    #构建柱状图
    bar = Bar()
    x_data.reverse()
    y_data.reverse()
    bar.add_xaxis(x_data)
    bar.add_yaxis("GDP(亿)", y_data, label_opts=LabelOpts(position="right"))
    bar.reversal_axis()#反转XY轴
    #每一年的图标标题
    bar.set_global_opts(
        title_opts=TitleOpts(title=f"{year}全球前十GDP数据")
    )

    timeline.add(bar,str(year))


#自动播放
timeline.add_schema(
    play_interval=800,
    is_timeline_show=True,
    is_auto_play=True,
    is_loop_play=False
)

timeline.render("1960-2019年全球GDP前10国家.html")

看着教科书讲完都觉得蛮震撼,但自己编辑估计还不行。加油

这个训练完后,感受到码农的心酸苦楚乃至快乐快感了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值