Jupyter
首先,第一神器是Jupyter。 如果你是第一次使用,你可能不知道那个开发者制造这样的幽灵是干什么的。 说是博客系统也不像,说是web服务也不像,但它很有用。
我们传统的web开发首先考虑的是面向公众,所以你做服务器就是为成千上万的浏览器提供服务。
当然,Jupyter可以服务很多浏览器,但这对研究者也很方便。 对研究者来说很方便。 把代码像写文章一样直接写在输入框上,在这个页面上直接看到这个代码的结果,随时修改,随时展示。 混合有文字代码的是Markdown的扩展版。 最终,Markdown只能显示文字。 也可以添加图像
当然,也有人试图在Jupyter上运行PHP和Java代码,但显然不会成为气候。 因为Python这个语言天生就是脚本语言,所以将来有望移植到里面的可能只有Javascript。 这个商品也是脚本语言。 脚本语言的好处是,不用编译,每行就能得到一个结果。
纵观计算机语言的发展历史,这是一个从复杂到简单的过程。 c语言需要编译链接才能运行。 Java只有javac,可以将编译和链接合为一个。 PHP更简单,直接执行就行了。 甚至可以节省编译。
但是,还不直接。 因为必须创建. php文件保存磁盘才能运行。 Python和其他脚本语言可以直接在shell上运行,但最大的问题是可以运行并且不能保存。 要保存,可以像以前的方法一样,查找编辑器或vi,保存到文件中,然后运行。
Jupyter最大的优点是本身是可以执行脚本的shell环境,但同时自动保存这些脚本代码。 除了保存脚本代码,壮观的母鸡插入脚本代码的所有评论都不是普通的评论,各种格式的Markdown也可以一起保存,壮观的母鸡随时可以修改。
因此,兼具脚本案例和文件管理系统的优点。 从那以后,开发Python代码时,不需要在IDE中编写代码后在终端上运行,而是在一个网页上全部处理。
Java有这样的工具吗? PHP上有这样的工具吗? 不,必须选Python。
潘达斯
第二神器是Pandas。 如果导入csv文件,求出各列数据的平均值、最大值、最小值、方差,Java和PHP会怎么办?
首先打开文件,一行一行地读取,给出整个数据结构,进行循环计算,最后可能还需要fclose这个文件。
总之代码看起来很全,很麻烦。 另一方面,由于Python语言有一种叫做Pandas的神器,所以只需要一行代码:
DF=PD .读_ CSV (A.CSV ) )。
是的,从那以后,df就是这个数据帧了。 它本身是一个强大的数据结构,也可以看作是mysql数据库中的表。 删除各种查询、求合计、求平均都是一行代码。
所以有这么强大的库。 研究者出于什么理由选择Java?
sci工具包-联盟
第三神器scikit-learn一般简称为sclearn。 各种机器学习算法,只要基本上能想到,线性回归、逻辑回归、SVM、随机森林、最近的邻居等,各种算法都在其中。 (http://sci工具包- Learn.org/Stable
简单来说,只有你想不到,没有它就做不到。
这就是为什么做机器学习一定要选Python的原因。 你能帮我找一下在Java和PHP上有这样多种算法的库吗?
在这里,编辑也准备了python的学习资料。 跟进、转发、私信编辑“007”可以免费领取!
matplotlib
第四神器是ma
tplotlib。如果我让你根据上面csv文件里的信息,画一个图,用Java该怎么做?
你当然会去找第三方插件库,然后又是一通折腾,终于把图做出来,然后编译,然后运行。
如果我要改配色呢?如果我要求画地图呢?如果要画热力图呢?那个麻烦就不是一星半点,而对于matplotlib来说,简直就是小菜一碟。
简单的直方图就不说了,下面重点介绍如何用matplotlib配合Basemap画一个中国地图。
安装Basemap
先安装相应的组件。我假定你已经都安装好了Python以及Jupyter等等。如果没有安装的话,就去尝试一下brew install python3和brew install jupyter吧,网上有很多教程。
然后你需要用pip3 install很多我们下面可能需要用到的库。但是因为我们要用一个叫做Basemap的库,而这个库没有办法用简单的pip3 install安装,所以稍多两个步骤:
brew install geos
pip3 install https://github.com/matplotlib/basemap/archive/v1.1.0.tar.gz
开始画图
启动Jupyter之后,我们还是本着从最简单的代码开始。先画一个世界地图:
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
plt.figure(figsize=(16,8))
m = Basemap()
m.drawcoastlines()
plt.show()
前面两行引入相应的库,真正的代码就4行,够简单吧。第1行甚至可以不写,它定义了图的大小。第2行我们创建一个地图,第3行把海岸线画上,第4行显示这个地图,就是这样:
你用Java的4行代码画一个地图出来?
然后我们开始画上国家,又是1行代码:
m.drawcountries(linewidth=1.5)
就变成了这样:
用Java可能吗?用PHP可能吗?
如果我们想显示中国地图,只需要在创建Basemap时指定一下经纬度就行了:
m = Basemap(llcrnrlon=73, llcrnrlat=18, urcrnrlon=135, urcrnrlat=53)
然后就得到了中国地图:
看上去有点变形,这是因为我们没有添加任何投影的原因,Basemap提供24种不同的投影方式,你可以自己一个个试一下,比较常用的是tmdxn投影,我们添加一下:
m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection= lcc , lat_1=33, lat_2=45, lon_0=100)
这次终于看上去比较正常了:
我们想加上省的边界怎么办呢?Basemap缺省的包里没有中国的省区,只有美国的州,毕竟是美国人做的嘛。
不过好在世界很大,有专门的国际组织干这事,在这里(https://gadm.org/download_country_v3.html)你可以下载全世界任何一个国家的行政区划Shape文件,然后我们给它加上:
m.readshapefile( CHN_adm_shp/CHN_adm1 , states , drawbounds=True)
然后就得到了下图:
再往后,你还可以往图上改颜色啦,写数字啦,这些就留待你研究吧。总之,我想说的是,用Python画地图真的超容易。