Python数据可视化 之 使用API

Stella981
• 阅读 652

使用requests模块来请求网站数据

 1 import requests
 2 
 3 
 4 #执行API调用并存储响应
 5 url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
 6 r = requests.get(url)
 7 print("Statuscode:", r.status_code)
 8 
 9 #将API响应存储在一个变量中
10 response_dict = r.json()
11 print("Repositories returned:", response_dict['total_count'])#包含仓库总数
12 
13 #探索有关仓库的信息
14 repo_dicts = response_dict['items']
15 print("Repositories returned:", len(repo_dicts))
16 
17 #研究第一个仓库
18 repo_dict = repo_dicts[0]
19 print("\nKeys:", len(repo_dict))
20 for key in sorted(repo_dict.keys()):
21     print(key)
22 
23 print("\nSelected information about first repository:")
24 print('Name:', repo_dict['name'])
25 print('Owner:', repo_dict['owner']['login'])
26 print('Stars:', repo_dict['stargazers_count'])
27 print('Repository:', repo_dict['html_url'])
28 print('Created:',repo_dict['created_at'])
29 print('Updated:', repo_dict['updated_at'])
30 print('Description:', repo_dict['description'])

Output:

-------snip--------
Selected information about first repository:
Name: awesome-python
Owner: vinta
Stars: 66036
Repository: https://github.com/vinta/awesome-python
Created: 2014-06-27T21:00:06Z
Updated: 2019-04-19T12:49:58Z
Description: A curated list of awesome Python frameworks, libraries, software and resources

使用Pygal可视化仓库:

添加一个参数配置来定义图表参数,自定义图表中每个条形的描述信息以及可单击的链接

 1 mport requests
 2 import pygal
 3 from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
 4 
 5 
 6 #执行API调用并存储响应
 7 url = 'https://api.github.com/search/repositories?q=language:python&sort=stars'
 8 r = requests.get(url)
 9 print("Statuscode:", r.status_code)
10 
11 #将API响应存储在一个变量中
12 response_dict = r.json()
13 print("Repositories returned:", response_dict['total_count'])#包含仓库总数
14 
15 #探索有关仓库的信息
16 repo_dicts = response_dict['items']
17 
18 names, plot_dicts = [], []
19 for repo_dict in repo_dicts:
20     names.append(repo_dict['name'])
21     plot_dict ={
22         'value': repo_dict['stargazers_count'],
23         'label': str(repo_dict['description']),
24         'xlink': repo_dict['html_url']
25     }
26     plot_dicts.append(plot_dict)
27 #可视化
28 my_style = LS('#333366', base_style=LCS)
29 
30 my_config = pygal.Config()#创建配置实例
31 my_config.x_label_rotation = 45#X轴标签顺时针旋转45度
32 my_config.show_legend = False#隐藏图例
33 my_config.title_font_size = 24#图表标题字体大小
34 my_config.label_font_size = 14#副标签
35 my_config.major_label_font_size = 18#主标签,Y轴上为5000整数倍的刻度,不是很明白这个是怎么回事
36 my_config.truncate_label = 15#将较长的项目名缩短为15个字符
37 my_config.show_y_guides = False#隐藏图表中的水平线
38 my_config.width = 1000#自定义表宽
39 
40 chart = pygal.Bar(my_config, style=my_style)
41 chart.title = 'Most-Starred Python Projects on GitHub'
42 chart.x_labels = names
43 
44 chart.add('', plot_dicts)
45 chart.render_to_file('python_repos.svg')

Figure:

Python数据可视化 之 使用API

使用Hacker News API:

通过一个API调用获取其上当前热门文章的ID,再查看前30篇文章,打印其标题、到讨论页面的链接以及文章现有的评论数。(这里运行报错应该是爬虫的问题,小白表示

目前不知道咋整,只附代码。)

 1 import requests
 2 from operator import itemgetter
 3 
 4 
 5 url = 'https://hacker-news.firebaseio.com/v0/topstories.json'
 6 r = requests.get(url)
 7 print("Status code:", r.status_code)
 8 
 9 submission_ids = r.json()
10 submission_dicts = []
11 for submission_id in submission_ids[:30]:
12     url = ('http://hacker-news.firebase.com/v0/item/' +
13            str(submission_id) + '.json')
14     submission_r = requests.get(url)
15     print(submission_r.status_code)
16     response_dict = submission_r.json()
17 
18     submission_dict = {
19         'title': response_dict['title'],
20         'link': 'http://news.ycombinator.com/item?id=' + str(submission_id),
21         'comments': response_dict.get('descendants', 0)
22     }
23     submission_dicts.append(submission_dict)
24 
25 submission_dicts = sorted(submission_dicts, key=itemgetter('comments'),
26                           reverse=True)
27 for submission_dict in submission_dicts:
28     print("\nTitle:", submission_dict['title'])
29     print("Discussion link:", submission_dict['link'])
30     print("Comments:", submission_dict['comments'])
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这