使用Python计算
Python for Computing
有许多在线资源可用于学习Python。比如官方文档:https://www.python.org/doc/
本章重点介绍如何在Jupyter笔记本中使用Python。在Python中进行简单的计算非常简单。但是,一旦你尝试做一些复杂的事情,有一些技巧需要学习。特别是,如何使情节出现在笔记本中,如何制作动画以及其他一些细节。
Python 2 或 3?
请使用 Python 3。这是该语言的现代版本。
这两个版本有何不同?不多。命令 2/3 在 Python 2(整数除法)中返回 0,而 2/3 在 Python 3(浮点除法)中返回 .66666666666。print命令有点不同。Python 3中有足够的新的,好的东西,你真的应该使用它
DATAHUB平台使用 Python 3。
在 Python 笔记本中绘图
在你能够策划之前,有三件事。
您告诉 Jupyter 您希望绘图以内联方式显示
你加载数字Python,所以你可以处理数字数组
你加载PyPlot来做你的绘图。
这是通过以下代码完成的:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt使用“as np”或“as plt”,有助于保持命名空间的干净。因此,当你调用像“sin”这样的函数时,你需要说出它来自哪里,就像“np.sin”一样。
现在,要绘制几个数字,只需调用 plot 函数,将数字作为数组:

您可以以类似的方式绘制正弦函数的一部分,将数字列表传递给该函数:sin

通常,您希望将 x 和 y 值绘制在一起,可以执行以下操作:

为绘图添加动画效果#
我们可以使用html5作为动画,如本网页中所建议的那样。
这似乎是在Python中做动画的现代方式。
第一步是在Python中初始化一些东西。
我们需要 %matplotlib 内联才能在笔记本上正确绘制内容
我们需要麻木的数学
我们需要 matplotlib 进行绘图
我们需要来自matplotlib的动画,以及来自iPython.display的HTML来显示动画。
我们通过以下导入获得所有这些:
我们现在有四个步骤来获取动画情节
设置图形框
定义初始化函数
定义绘制动画每一帧的函数
调用动画器函数,该函数创建所有帧并为您保存它们
然后,我们准备调用“HTML”来显示动画。

初始化功能:绘制每帧的背景
按顺序调用
blit=True 表示仅重新绘制已更改的部分。
每当需要画图时,都可以随意调用它,并使用以下代码:
数据分析#
Python中pandas的简单演示#
本笔记本基于Lamoureux在卡尔加里大学2016年冬季的数学651课程的课程笔记。
这是一个在Python中尝试一些资源的练习。具体来说,我们希望从网络上抓取一些有关股票价格的数据,并显示在pandas中。然后对信息进行一些基本的数据分析。
我们利用这样一个事实,即网络上可以免费访问大量财务数据,并且很多人会发布有关如何使用它的信息。
Python中的pandas#
如何从 Web 访问真实数据并应用数据分析工具。#
本文使用Wes McKinney的Python for Data Analysis一书作为本节的参考。
使用Python的要点是,很多人都创造了很好的代码来做到这一点。
pandas的名字来自Panel Data,一个用于多维结构化数据集的计量经济学术语,以及Python数据分析。
pandas中出现的数据帧对象起源于 R。但显然,它们在Python中比在R中具有更多的功能。
在本节中,我还将使用PYLAB,因此我们可以使用NUMPY和MATPLOTLIB。
访问数据#
对于免费的石油等商品的历史数据,http://www.databank.rbs.com 该网站将直接将数据下载到电子表格中,绘制历史数据的图表等。以下是过去15年油价(西德克萨斯中质原油)的示例。看看它有多低...

雅虎提供当前的股票和商品价格。这是一个有趣的网站,告诉你如何将大量数据下载到csv文件中。http://www.financialwisdomforum.org/gummy-stuff/Yahoo-data.htm
这是另一个讨论访问各种财务数据源的网站。http://quant.stackexchange.com/questions/141/what-data-sources-are-available-online
从 Web 加载数据#
让我们来看看一些简单的股价——比如苹果和微软。我们可以导入一些基本的网络工具,直接从雅虎获得价格。

观察股票价格的变化,标准化为百分比

这两个系列之间的相关性

变得花哨。#
现在,我们可以使用一些更复杂的统计工具,如最小二乘回归。但是,我必须做一些工作才能让Python识别这些项目。但我没有太努力,我只是遵循了错误消息。
很明显,我需要返回终端窗口才能加载某些软件包。我必须输入的两个命令是
pip install statsmodels
pip install patsy
“pip”是一个“python安装程序包”,它将代码包安装到您的计算机(或任何运行python的计算机)上。两个包“statsmodels”和“patsy”是各种各样的统计包。

这两个图表看起来很相似。让我们一起绘制它们

更多股票#
网络上有各种整理过的数据。这是SPY交易所 标准普尔500指数。

Python 中的科学计算#
这是在Python中进行一些科学计算的示例。
我们参考了John M. Stewart的“Python for Scientists”一书中的一些想法。具体来说,我们想探索一个常微分方程(ODE)的数值求解器,称为ODEint。该求解器基于lsoda,这是劳伦斯利弗莫尔实验室的Fortran软件包,是解决这些难题的可靠主力。
我们研究了四种不同的ODE,它们很有趣,并且在数字上具有挑战性。它们是:
谐波振荡器(或线性摆锤)
非线性钟摆
洛伦兹方程,它是混沌行为的模型
范德波尔斯方程,这是具有周期性行为的刚性ODE的一个例子。
我们对ODE数值求解器进行一些基本测试,以测试其准确性,并考虑我们对摆锤的渐近分析是否有效。
与前面的示例一样,我们必须从代码开始,告诉 Notebook 以内联方式绘制项目,并在包中加载以进行数值计算 (numpy)、科学计算 (scipy) 和绘图 (matplotlib)。
我们从二阶线性方程开始,它具有通常的谐波振荡器解。
$$ y''(t) + \omega^2 y(t) = 0, \qquad y(0) = 1, y'(0) = 0.$$
要将其放入数值求解器中,我们需要重新表述为一个 2 维一阶系统:$$\mathbf{y} = (y,y')^T, \qquad \mathbf{y}'(t) = (y', -\omega^2 y)^T.$$ 这是一个以数字方式解决问题的简单代码片段。

让我们画一个相位肖像,将y和ydot绘制在一起

通过比较精确的解和数值解来测试准确性

绘制差异图

因此,在上面的测试中,我们看到一个随时间振荡和增长的误差,大小约为2x 10^(-7)。这是单精度精度。
现在,显然ODEint自己计算出了很好的步长。让我们尝试再次运行代码,在 t 变量中使用不同数量的步骤。

误差只减少到大约1.0x10^(-7)。没有太大的改进。
让我们尝试另一个实验,在那里我们走了很长一段时间。假设比上面的例子长100个时间。



嵌入视频
只需几行,您就可以将YouTube/BiliBili视频插入Jupyter笔记本中。
d3 和用户界面
我们可以使用一个名为 d3 的资源来制作notebook中非常复杂的用户界面。
在此示例中,将创建一组球,当计算机鼠标追逐球时,这些球会四处移动,如下所示。单击图片以与示例进行交互。
此代码是从此处fork的:https://github.com/skariel/IPython_d3_js_demo/blob/master/d3_js_demo.ipynb
此示例中有三个单元格。
第一个单元格创建一个文件,其中包含一些html代码和javascript来控制球
第二个单元格定义了Python函数,用于编辑文件,以调整球的数量等。
第三个单元格调用Python funciton f1,它启动html和javascript。
这是第一个单元格。
这是第二个单元格。
这是第三个单元格。
最后更新于