python--从入门到实践--chapter 15 16 17 生成数据/下载数据/web API

1.随机漫步

random_walk.py

from random import choice
class RandomWalk():def __init__(self, num_points=5000):self.num_points = num_pointsself.x_value = [0]self.y_value = [0]def fill_walk(self):while len(self.x_value) < self.num_points:x_direction = choice([1, -1])x_distance = choice([0, 1, 2, 3, 4])x_step = x_direction * x_distancey_direction = choice([1, -1])y_distance = choice([0, 1, 2, 3, 4])y_step = y_direction * y_distanceif x_step == 0 and y_step == 0:continuenext_x = self.x_value[-1] + x_stepnext_y = self.y_value[-1] + y_stepself.x_value.append(next_x)self.y_value.append(next_y)

randomWalk_visual.py

import matplotlib.pyplot as plt
from random_walk import RandomWalk
rw = RandomWalk(5000)
rw.fill_walk()
plt.figure(dpi=512, figsize=(10, 6))
point_number = list(range(rw.num_points))
plt.scatter(rw.x_value, rw.y_value, c=point_number, cmap=plt.cm.Blues, edgecolors='none', s=1)
plt.scatter(0, 0, c="green", edgecolors='none', s=100)
plt.scatter(rw.x_value[-1], rw.y_value[-1], c="red", edgecolors='none', s=100)
# plt.axis('off')
plt.show()

在这里插入图片描述

2.投1个六面骰子

dice.py

from random import randint
class Dice():def __init__(self, num_sides=6):self.num_sides = num_sidesdef roll(self):return randint(1, self.num_sides)

dice_visual.py

from dice import Dice
import pygal
d6 = Dice()
results = []
for roll_num in range(1000):result = d6.roll()results.append(result)
frequencies = []
for value in range(1, d6.num_sides+1):frequency = results.count(value)frequencies.append(frequency)
hist = pygal.Bar()
hist.title = "Results of rolling one D6 1000 times."
hist.x_labels = [x for x in range(1, 7)]
hist.x_title = "Result"
hist.y_title = "Frequency of Result"
hist.add('D6', frequencies)
hist.render_to_file("dice_visual.svg")
print(frequencies)

在这里插入图片描述

3.同时掷3个6面骰子

from dice import Dice
import pygal
d6_1 = Dice()
d6_2 = Dice()
d6_3 = Dice()
results = []
for roll_num in range(100000):result = d6_1.roll() + d6_2.roll() + d6_3.roll()results.append(result)
frequencies = []
for value in range(3, 19):frequency = results.count(value)frequencies.append(frequency)
hist = pygal.Bar()
hist.title = "Results of rolling three D6 100000 times."
hist.x_labels = [x for x in range(3, 19)]
hist.x_title = "Result"
hist.y_title = "Frequency of Result"
hist.add('3*D6', frequencies)
hist.render_to_file("dice_visual.svg")
print(frequencies)

在这里插入图片描述

4.同时掷两个骰子,将两个骰子的点数相乘。

from dice import Dice
import pygal
d6_1 = Dice()
d6_2 = Dice()
results = []
for roll_num in range(100000):result = d6_1.roll() * d6_2.roll()results.append(result)
frequencies = []
for value in range(1, 37):if results.count(value):frequency = results.count(value)frequencies.append(frequency)
x_data = []
for value in range(1, 37):if value in results:x_data.append(value)
hist = pygal.Bar()
hist.title = "Results of rolling two D6 100000 times."
hist.x_labels = x_data
hist.x_title = "Result"
hist.y_title = "Frequency of Result"
hist.add('D6*D6', frequencies)
hist.render_to_file("dice_visual.svg")
print(frequencies)

在这里插入图片描述

5.下载数据,可视化世界人口

免费数据下载地址 https://datahub.io
country_codes.py

from pygal_maps_world.i18n import COUNTRIES
def get_country_code(country_name):for code, name in COUNTRIES.items():if name == country_name:return code #从库里返回2个字母的国家编码return None

world_population.py

import json
from country_codes import get_country_code
import pygal.maps.world
from pygal.style import RotateStyle
from pygal.style import LightColorizedStyle #浅色方便印刷
filename = "population_data.json"
with open(filename) as f:pop_data = json.load(f)
cc_populations = {}
for pop_dict in pop_data:if(pop_dict["Year"] == 2010):country_name = pop_dict["Country Name"]population = pop_dict["Value"]code = get_country_code(country_name)if code:cc_populations[code] = population
cc_pops_1, cc_pops_2, cc_pops_3 = {}, {}, {}
for cc, pop in cc_populations.items():if pop < 10000000:cc_pops_1[cc] = popelif pop < 1000000000:cc_pops_2[cc] = popelse:cc_pops_3[cc] = pop
print(len(cc_pops_1), len(cc_pops_2), len(cc_pops_3))
# wm_style = RotateStyle("#336699")
# wm_style = LightColorizedStyle
wm_style = RotateStyle("#336699", base_style=LightColorizedStyle)
wm = pygal.maps.world.World(style=wm_style)
wm.title = "World Population in 2010, by Country"
wm.add("0-10 million", cc_pops_1)
wm.add("10 million -1 billion", cc_pops_2)
wm.add("> 1 billion", cc_pops_3)
wm.render_to_file("world_population.svg")

在这里插入图片描述

6.获取Github最多星的python项目

import requests
import pygal
from pygal.style import LightColorizedStyle as LCS, LightenStyle as LS
url = "https://api.github.com/search/repositories?q=language:python&sort=stars"
r = requests.get(url)
print("Status code: ", r.status_code)
response_dict = r.json()
print(response_dict.keys())
print("Total repositories: ", response_dict["total_count"])
repo_dicts = response_dict["items"]
names, plot_dicts = [], []
print("Repositories returned:", len(repo_dicts))
repo_dict = repo_dicts[0]   #第一个item
print("\nKeys:", len(repo_dict))
for key in sorted(repo_dict.keys()):print(key)
print("\nSelected information about first repository:")
for repo_dict in repo_dicts:# print('Name:', repo_dict['name'])# print('Owner:', repo_dict['owner']['login'])# print('Stars:', repo_dict['stargazers_count'])# print('Repository:', repo_dict['html_url'])# print('Description:', repo_dict['description'])names.append(repo_dict["name"])plot_dict = {"value": repo_dict["stargazers_count"],"label": repo_dict["description"],"xlink": repo_dict["html_url"]}plot_dicts.append(plot_dict)
my_style = LS("#333366", base_style=LCS)
my_config = pygal.Config()
my_config.x_label_rotation = 45
my_config.show_legend = False
my_config.title_font_size = 24
my_config.label_font_size = 14
my_config.major_label_font_size = 18
my_config.truncate_label = 15
my_config.show_y_guides = False
my_config.width = 1000
chart = pygal.Bar(my_config, style=my_style)
chart.title = "Most-Starred Python Projects on Github"
chart.x_labels = names
chart.add("", plot_dicts)
chart.render_to_file("python_repos.svg")

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/480344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACL2020 | 基于Knowledge Embedding的多跳知识图谱问答

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;舒意恒&#xff08;南京大学硕士生&#xff0c;知识图谱方向&#xff09;背景什么是知识图谱问答&#xff1f;知识图谱&#xff08;KG&#xff09;是一个多关系图&#xff0c;其中包含数以百万计的实体&#xff0c;以及…

论文浅尝 | 基于超平面的时间感知知识图谱嵌入

链接&#xff1a;http://talukdar.net/papers/emnlp2018_HyTE.pdf本文主要关注 KG embedding 中三元组成立的时间有效性问题&#xff0c;比如三元组(Cristiano Ronaldo, playsFor, Manchester United)&#xff0c;其成立的有效时间段是2003年到2009年&#xff0c;这个使三元组有…

Java面试进阶:Dubbo、Zookeeper面试题锦集

Dubbo面试题锦集 1、默认也推荐使用netty框架&#xff0c;还有mina。 2、默认是阻塞的&#xff0c;可以异步调用&#xff0c;没有返回值的可以这么做。 3、推荐使用zookeeper注册中心&#xff0c;还有redis等不推荐。 4、默认使用Hessian序列化&#xff0c;还有Duddo、FastJ…

POJ 1064 分割线缆(二分查找)

题目链接&#xff1a;http://poj.org/problem?id1064 题目大意&#xff1a;多根电缆切成指定段数&#xff08;每段相同长度&#xff09;&#xff0c;求每段线缆的最大长度&#xff08;精确到0.01&#xff09; 这题精度控制是难点&#xff0c;方法很简单&#xff0c;二分查找…

Learning to rank基本算法小结

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/26539920 Learning to rank基本算法小结最近工作中需要调研一下搜索排序相关的方法&#xff0c;这里写一篇水文&#xff0c;总结一下几天下来的调研成果。包括Learning to rank 基本方法Learning to rank 指标介绍LambdaMART…

命名实体识别难在哪?

亚里士多德在《形而上学》中认为&#xff0c;对于存在&#xff0c;最重要的问题&#xff0c;就是给世间万物的存在基于语言来分层和分类。从神说要有光起&#xff0c;到基友给你取了个外号叫狗蛋。你会发现&#xff0c;创造与命名&#xff0c;在历史中往往等同。名字是自我概念…

论文浅尝 | 面向简单知识库问答的模式修正强化策略

链接&#xff1a;http://aclweb.org/anthology/C18-1277知识库问答研究旨在利用结构化事实回答自然语言问题&#xff0c;在网络中&#xff0c;简单问题占据了相当大的比例。本文提出在完成模式抽取和实体链接后&#xff0c;构建一个模式修正机制&#xff0c;从而缓解错误积累问…

最全BAT数据库面试89题:mysql、大数据、redis

数据库 mysql面试题目&#xff1a; MySQL InnoDB、Mysaim的特点&#xff1f; 乐观锁和悲观锁的区别&#xff1f;&#xff1f; 行锁和表锁的区别&#xff1f; 数据库隔离级别是什么&#xff1f;有什么作用&#xff1f; MySQL主备同步的基本原理。 如何优化数据库性能&#…

POJ 3481 Double Queue

题目链接&#xff1a;http://poj.org/problem?id3481 题目大意&#xff1a; 给你0-3四个指令&#xff1a; 0 退出 1 添加优先级为P 的 K值&#xff0c;进入队列 2 最高优先级出队 3 最低优先级出队 思路&#xff1a; 利用map数据对key默认升序排列。 AC代码如下&#xff…

理解 Word Embedding,全面拥抱 ELMO

原文链接&#xff1a;https://www.infoq.cn/article/B8-BMA1BUfuh5MxQ687T 理解 Word Embedding&#xff0c;全面拥抱 ELMO DataFun社区 阅读数&#xff1a;4238 2019 年 6 月 15 日提到 Word Embedding &#xff0c;如果你的脑海里面冒出来的是 Word2Vec &#xff0c;Glove &…

肝了1W字!文本生成评价指标的进化与推翻

一只小狐狸带你解锁 炼丹术&NLP 秘籍作者&#xff1a;林镇坤&#xff08;中山大学研一&#xff0c;对文本生成和猫感兴趣&#xff09;前言文本生成目前的一大瓶颈是如何客观&#xff0c;准确的评价机器生成文本的质量。一个好的评价指标&#xff08;或者设置合理的损失函数…

美团大脑 | 知识图谱的建模方法及其应用

本文转载自公众号: 美团技术团队.作为人工智能时代最重要的知识表示方式之一&#xff0c;知识图谱能够打破不同场景下的数据隔离&#xff0c;为搜索、推荐、问答、解释与决策等应用提供基础支撑。美团大脑围绕吃喝玩乐等多种场景&#xff0c;构建了生活娱乐领域超大规模的知识图…

最全Java面试208题,涵盖大厂必考范围!强烈建议收藏~

这些题目是去百度、小米、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目,熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。 一.java基础面试知识点 java中和equals和hashCode的区别 int、char、long各占多少字节数 int与integer的区别…

大规模事理常识知识系统“学迹”的定位、应用与不足

我们于3月16正式对外发布了一个面向事理的实时学习和搜索系统Demo&#xff0c;取名叫“学迹”&#xff0c;取自“学事理&#xff0c;知行迹”(https://xueji.zhiwenben.com)。“学迹”的发布&#xff0c;进一步拓宽了现有知识库的门类&#xff0c;为进一步获取特定事件的概念解…

数据结构--散列表 Hash Table

文章目录1.线性探测 哈希表代码2.拉链法 哈希表代码1. 散列表用的是数组支持按照下标随机访问数据的特性&#xff0c;所以散列表其实就是数组的一种扩展&#xff0c;由数组演化而来。可以说&#xff0c;如果没有数组&#xff0c;就没有散列表。 2. 散列函数&#xff0c;设计的基…

论文浅尝 | 面向自动分类归纳的端到端强化学习

动机术语层次在许多自然语言处理任务中扮演着重要角色。然而&#xff0c;大部分现有的术语层次是人工构建的&#xff0c;其覆盖范围有限&#xff0c;或者某些领域上不可用。因此&#xff0c;最近的工作集中在自动化的术语层次归纳(automatictaxonomy induction)上。之前的研究工…

最新天猫Java面试题(含总结):线程池+并发编程+分布式设计+中间件

一面&#xff1a; HashMap实现原理&#xff0c;ConcurrentHashMap实现原理 红黑树&#xff0c;为什么允许局部不平衡 TCP&#xff0c;UDP区别&#xff0c;为什么可靠和不可靠 一次HTTP请求的全过程&#xff0c;包括域名解析、定位主机等 TCP三次握手 MySQL事务是什么&…

重磅!吴恩达家的NLP课程发布啦!

关注小夕并星标&#xff0c;解锁自然语言处理搜索、推荐与算法岗求职秘籍文 | 灵魂写手rumor酱美 | 人美心细小谨思密达斯坦福计算机系副教授、人工智能实验室主任、Coursera平台联合创始人、前百度首席科学家、机器学习入门必备网课CS229的主讲人——吴恩达Andrew Ng老师再放大…

情报领域因果推理智能项目概览:以DAPAR为例

美国国防高级研究计划局&#xff08;Defense Advanced Research Projects Agency&#xff09;&#xff0c;简称DARPA&#xff0c;提出了旨在从推进人工智能常识推理能力发展、深化机器学习理论研究和推进国防部复杂问题中应用人工智能、深化美军对人工智能的研究和应用的“的下…

论文浅尝 | 基于模式的时间表达式识别

本文转载自公众号:南大Websoft. 时间表达式识别是自然语言理解中一个重要而基础的任务。在以前的研究工作中&#xff0c;研究人员已经发现时间词的类型信息可以给识别提供明显的帮助。本文中我们以词类型序列作为表达式模式&#xff0c;提出了基于模式的时间表达式识别方法&…