成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Python畫一個中國地圖

開發 后端
先來聊聊為什么做數據分析一定要用 Python 或 R 語言。編程語言這么多種, Java , PHP 都很成熟,但是為什么在最近熱火的數據分析領域,很多人選擇用 Python 語言?

為什么是Python

先來聊聊為什么做數據分析一定要用 Python 或 R 語言。編程語言這么多種, Java , PHP 都很成熟,但是為什么在最近熱火的數據分析領域,很多人選擇用 Python 語言?

數據分析只是一個需求,理論上來講,任何語言都可以滿足任何需求,只是麻煩與簡易之別。 Python 這門語言誕生也相當之早,它的***個版本是 26 年前發表的,曾經(或者說當前)也被用于web開發,但是就流行程度來說,遠遠干不過 Java 和 PHP 。東方不亮西方亮,在與 Java 干仗失敗的這20幾年時光里, Python 練就了一身獨門武藝,是 Java 和 PHP 遠遠不及的(當然以后是不是能追得上來,目前還不好說)。你要說做個博客網站, Python 的特長不在這里, PHP 和 Java 也是分分鐘的事情。你要說做個 BBS 網站,做個電商網站, PHP 手到擒來。 Python 在這些方面和 Java 或者 PHP 競爭,基本就是作死的節奏,雖然也有 django 這樣的框架,但流行程度遠遠不及其他語言。但在這些年默默的失敗背后,有一幫研究人員用 Python 干出了一些驚天地泣鬼神的神器,使 Python 在數據研究領域做到了除了 R 語言以外基本***的地步。

Jupyter

首先,***神器是 Jupyter 。如果你是***次使用,可能搞不清楚它的開發者做這么個鬼東西出來干什么,說它是博客系統也不像,說它是web服務器也不像,但它就是有用。因為我們傳統的web開發首先想的就是面向公眾,你做一個服務器就是要服務成千上萬瀏覽器的,當然 Jupyter 也可以服務眾多瀏覽器,但它更多的還是方便研究人員,對研究人員來說簡直是太方便了,你把代碼像寫文章一樣直接寫在輸入框里,然后在本頁面直接就看到了這個代碼的結果,隨時修改,隨時展現,文碼混排,是 Markdown 的一個增強版,畢竟 Markdown 還只能顯示文字,最多再加上一些圖片,而 Jupyter 是可以直接運行 Python 代碼的。當然,也有些人試圖在 Jupyter 里運行 PHP 或 Java 代碼,但顯然成不了氣候。

因為 Python 這個語言天生就是腳本語言,可能將來唯一有希望往里移植的就是 Javascript ,這貨也是一個腳本語言。腳本語言的好處就是不用編譯,一行一個結果。縱觀計算機語言發展歷史,就是一個從繁到簡的過程,C語言需要編譯+鏈接才能運行, Java 只要 javac 一下,把編譯和鏈接合二為一, PHP 更簡單,直接運行就行了,連編譯都省了。但是還不夠直接,因為還要編寫一個 .php 文件存盤,然后才能運行,到了 Python 以及其它腳本語言這里,可以直接在殼里運行,但***的問題是運行可以運行,無法保存,要保存就又要跟傳統方式一樣,找個編輯器來,或者 vi ,存成文件以后才可以運行。 Jupyter ***的優點就是:它本身還是一個外殼環境,可以運行腳本,但同時也幫你自動把這些腳本代碼保存了下來,不但保存腳本代碼,并且你插在腳本代碼當中的所有注釋不是普通注釋,而是各種格式化的 Markdown 都一并幫你保存下來,并且可以隨時修改。所以它兼具了腳本外殼和文件管理系統的優點,從此你開發 Python 代碼再也不用先在IDE里寫好代碼,然后再到終端里去運行,而直接在一個 web 頁面上就全部搞定了。 Java 有這樣的工具嗎? PHP 有這樣的工具嗎?沒有,所以我們必須選擇 Python 。

Pandas

第二神器是 Pandas 。如果我讓你讀取一個 csv 文件,然后求每一列數據的平均值,***值,最小值,方差,用 Java 或 PHP 怎么做?你首先要 fopen 一個文件,然后一行一行讀進來,再給它整個數據結構,然后弄個循環計算,***你可能還要 fclose 這個文件。總之代碼一坨,麻煩死。而 Python 語言因為有 Pandas 這個神器,一行代碼搞定:

df = pd.read_csv('a.csv')

行了,從此以后, df 就是這個 DataFrame ,它本身就是一個強大的數據結構,也可以把它理解成 mysql 數據庫中的一張表吧,各種增刪改查,求總和,求平均都是一行代碼的事情。所以有這樣強大的庫,研究人員有什么理由選擇 Java ?

scikit-learn

第三神器 scikit-learn ,一般縮寫為 sclearn ,各種機器學習算法,基本上只要你能想得到的,線性回歸,邏輯回歸,SVM,隨機森林,最近鄰居等等等等,各種算法全部在 這里面 ,簡而言之,只有你想不到,沒有它做不到,不詳述。所以這就是為什么玩機器學習必選 Python 的原因,你給我找一個 Java 或者 PHP 有這樣多種算法的庫來?

matplotlib

第四神器是 matplotlib 。如果我讓你根據上面 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行顯示這個地圖,就是這樣:

?用Python畫一個中國地圖?

你用 Java 的 4 行代碼畫一個地圖出來?

然后我們開始畫上國家,又是1行代碼:

m.drawcountries(linewidth=1.5)


?

用 Java 可能嗎?用 PHP 可能嗎?

如果我們想顯示中國地圖,只需要在創建 Basemap 時指定一下經緯度就行了:

m = Basemap(llcrnrlon=73, llcrnrlat=18, urcrnrlon=135, urcrnrlat=53)

?

看上去有點變形,這是因為我們沒有添加任何投影的原因, Basemap 提供 24 種不同的投影方式,你可以自己一個個試一下,比較常用的是 蘭勃特投影 ,我們添加一下:

m = Basemap(llcrnrlon=77, llcrnrlat=14, urcrnrlon=140, urcrnrlat=51, projection='lcc', lat_1=33, lat_2=45, lon_0=100)

這次終于看上去比較正常了:

??

我們想加上省的邊界怎么辦呢? Basemap 缺省的包里沒有中國的省區,只有美國的州,畢竟是美國人做的嘛。不過好在世界很大,有專門的國際組織干這事,在 這里 你可以下載全世界任何一個國家的行政區劃 Shape 文件,然后我們給它加上:

m.readshapefile('CHN_adm_shp/CHN_adm1', 'states', drawbounds=True)

然后就得到了下圖:

??

再往后,你還可以往圖上改顏色啦,寫數字啦,這些就留待你研究吧。總之,我想說的是,用 Python 畫地圖真的超容易。

***再為 Java 和 PHP 美言幾句:大家分工不同, Java 和 PHP 雖然做這樣的數字研究不是很方便,但還是非常適合 web 開發的,而 Python 在這方面并不適合。所以通常的做法是:首先用 Python 驗證算法,經過一系列復雜的計算,把算法確定下來之后,當要應用到 web 上的時候,再用 Java 或者 PHP 把最終形成的結論重寫一遍,這樣就能充分利用各種語言的優勢。

責任編輯:未麗燕 來源: SegmentFault
相關推薦

2021-06-28 11:24:31

網絡安全互聯網行業計算機

2017-08-29 15:34:10

CanvasWASM算法

2020-04-15 10:34:05

數據Excel地圖

2021-06-17 14:05:26

馬克思主義建黨中國

2020-05-09 09:59:52

Python數據土星

2022-03-07 09:20:00

JavaScripThree.jsNFT

2023-08-28 17:03:41

CSS 漸變線性漸變

2014-08-15 11:18:47

R語言R繪制地圖

2011-10-21 09:10:12

JavaScript

2023-04-12 07:18:38

ChatGPT語言模型AI

2017-05-25 11:24:18

達觀數據NER系統

2019-08-14 16:56:38

Python職責模式請假

2022-12-22 08:22:17

Python圖像圖像處理

2014-10-09 13:30:08

釣魚短信釣魚中國移動

2022-04-27 07:15:36

中臺產品微服務

2016-03-01 14:37:47

華為

2013-01-15 09:54:02

Barbaros-DZ黑客黑客入侵

2020-09-03 16:44:41

App禁令應用

2018-10-31 10:11:24

Python編程語言語音播放

2024-04-03 15:20:08

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产1区2区3区 在线国产视频 | 美女福利视频网站 | 一区二区三区小视频 | 午夜精| 国产精品视频播放 | 国产精品久久久久久久久久久久久 | 可以在线看的黄色网址 | 视频一区在线 | 国产一区二区影院 | 中文字幕第7页 | 精品免费视频一区二区 | 国产97在线 | 日韩 | 午夜天堂| 欧美日韩在线免费 | 一区二区免费高清视频 | 性国产xxxx乳高跟 | 亚州精品天堂中文字幕 | 中文一区二区 | 96国产精品久久久久aⅴ四区 | 一级黄a视频 | 盗摄精品av一区二区三区 | 先锋资源网 | 日日噜噜噜夜夜爽爽狠狠视频, | 午夜激情在线 | 成人午夜视频在线观看 | 国产精品成人一区二区三区 | 亚洲欧美另类在线观看 | 久热久| 一级毛片在线播放 | h视频在线播放 | 精品一区视频 | 国产精品国产精品国产专区不卡 | 国产日韩精品视频 | 久久人体 | 狠狠躁18三区二区一区 | 精品久久一区二区三区 | 亚洲国产成人精 | 成人精品鲁一区一区二区 | 四色成人av永久网址 | 91精品国产美女在线观看 | 国产精品一区久久久 |