精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數(shù)據(jù)分析為什么用Python?只需4代碼就可以畫地圖

馬哥Linux運維 ? 來源:未知 ? 作者:工程師3 ? 2018-05-28 16:16 ? 次閱讀

為什么是Python

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

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

Jupyter

首先,第一神器是Jupyter。如果你是第一次使用,可能搞不清楚它的開發(fā)者做這么個鬼東西出來干什么,說它是博客系統(tǒng)也不像,說它是web服務器也不像,但它就是有用。因為我們傳統(tǒng)的web開發(fā)首先想的就是面向公眾,你做一個服務器就是要服務成千上萬瀏覽器的,當然Jupyter也可以服務眾多瀏覽器,但它更多的還是方便研究人員,對研究人員來說簡直是太方便了,你把代碼像寫文章一樣直接寫在輸入框里,然后在本頁面直接就看到了這個代碼的結果,隨時修改,隨時展現(xiàn),文碼混排,是Markdown的一個增強版,畢竟Markdown還只能顯示文字,最多再加上一些圖片,而Jupyter是可以直接運行Python代碼的。當然,也有些人試圖在Jupyter里運行PHP或Java代碼,但顯然成不了氣候。因為Python這個語言天生就是腳本語言,可能將來唯一有希望往里移植的就是Javascript,這貨也是一個腳本語言。腳本語言的好處就是不用編譯,一行一個結果??v觀計算機語言發(fā)展歷史,就是一個從繁到簡的過程,C語言需要編譯+鏈接才能運行,Java只要javac一下,把編譯和鏈接合二為一,PHP更簡單,直接運行就行了,連編譯都省了。但是還不夠直接,因為還要編寫一個.php文件存盤,然后才能運行,到了Python以及其它腳本語言這里,可以直接在殼里運行,但最大的問題是運行可以運行,無法保存,要保存就又要跟傳統(tǒng)方式一樣,找個編輯器來,或者vi,存成文件以后才可以運行。Jupyter最大的優(yōu)點就是:它本身還是一個外殼環(huán)境,可以運行腳本,但同時也幫你自動把這些腳本代碼保存了下來,不但保存腳本代碼,并且你插在腳本代碼當中的所有注釋不是普通注釋,而是各種格式化的Markdown都一并幫你保存下來,并且可以隨時修改。所以它兼具了腳本外殼和文件管理系統(tǒng)的優(yōu)點,從此你開發(fā)Python代碼再也不用先在IDE里寫好代碼,然后再到終端里去運行,而直接在一個web頁面上就全部搞定了。Java有這樣的工具嗎?PHP有這樣的工具嗎?沒有,所以我們必須選擇Python。

Pandas

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

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

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

scikit-learn

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

matplotlib

第四神器是matplotlib。如果我讓你根據(jù)上面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 pltfrom mpl_toolkits.basemap import Basemapplt.figure(figsize=(16,8))m = Basemap()m.drawcoastlines()plt.show()

前面兩行引入相應的庫,真正的代碼就4行,夠簡單吧。第1行甚至可以不寫,它定義了圖的大小。第2行我們創(chuàng)建一個地圖,第3行把海岸線畫上,第4行顯示這個地圖,就是這樣:

數(shù)據(jù)分析為什么用Python?只需4代碼就可以畫地圖

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

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

m.drawcountries(linewidth=1.5)

就變成了這樣:

數(shù)據(jù)分析為什么用Python?只需4代碼就可以畫地圖

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

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

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

然后就得到了中國地圖:

數(shù)據(jù)分析為什么用Python?只需4代碼就可以畫地圖

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

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

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

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

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

然后就得到了下圖:

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2958

    瀏覽量

    104550
  • python
    +關注

    關注

    56

    文章

    4782

    瀏覽量

    84453

原文標題:用 4 行代碼畫一幅中國地圖

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    python數(shù)據(jù)分析的類庫

    學運算及對數(shù)組執(zhí)行元素級計算的函數(shù);3).用于讀寫硬盤上基于數(shù)組的數(shù)據(jù)集的工具;4).線性代數(shù)運算、傅里葉變換,以及隨機數(shù)生成。2.Pandas大名鼎鼎的Pandas可以說只要做數(shù)據(jù)分析
    發(fā)表于 05-10 15:18

    怎么有效學習Python數(shù)據(jù)分析

    的過程。對于新手,如何學好python,這些很關鍵:Part1:能掌握好Python關鍵代碼以及Pandas、Numpy、Matplotlib、Seaborn這四個基本工具包,便能獨立完成一些簡單的
    發(fā)表于 06-28 15:18

    python 數(shù)據(jù)分析基礎 day12-python調用mysql

    python 數(shù)據(jù)分析基礎 day12-python調用mysql
    發(fā)表于 10-23 13:34

    如何利用Python進行數(shù)據(jù)分析

    《利用Python進行數(shù)據(jù)分析》 122高階GroupBy應用
    發(fā)表于 04-23 07:29

    基于Python數(shù)據(jù)分析

    《利用Python進行數(shù)據(jù)分析》 113日期范圍、頻率和移位
    發(fā)表于 05-01 11:24

    成為Python數(shù)據(jù)分析師,需要掌握哪些技能

    數(shù)據(jù)驅動問題解決第四、數(shù)據(jù)分析師要求的三大能力統(tǒng)計學基礎和分析工具應用計算機編碼能力特定應用領域或行業(yè)的知識第五數(shù)據(jù)分析數(shù)據(jù)分析很重要的學科
    發(fā)表于 06-23 12:16

    成為Python數(shù)據(jù)分析師,需要掌握哪些技能

    數(shù)據(jù)驅動問題解決第四、數(shù)據(jù)分析師要求的三大能力統(tǒng)計學基礎和分析工具應用計算機編碼能力特定應用領域或行業(yè)的知識第五數(shù)據(jù)分析數(shù)據(jù)分析很重要的學科
    發(fā)表于 06-30 11:42

    只需根據(jù)代碼提示就可以知道空調哪里出了問題

    只需根據(jù)代碼提示就可以知道空調哪里出了問題?特靈空調故障代碼有哪些?
    發(fā)表于 09-24 08:27

    什么用Simulink生成stm32代碼會發(fā)生錯誤呢

    什么用Simulink生成stm32代碼會發(fā)生錯誤呢?怎樣去解決呢?
    發(fā)表于 11-18 07:54

    數(shù)據(jù)分析必備的NumPy技巧(Python

    NumPy系統(tǒng)是Python的一種開源的數(shù)值計算擴展,它也是是Python數(shù)據(jù)分析必不可少的第三方庫。本文中的NumPy真題旨在提供一個參考,讀者可以借此測試自己
    的頭像 發(fā)表于 03-05 15:41 ?5950次閱讀

    代碼開發(fā)平臺工作原理

    ,通過零代碼開發(fā)平臺就可以無需編寫任何代碼就可以完成應用程序的開發(fā)。下面一起來了解一下相關知識吧! 零代碼開發(fā)平臺是什么: 零
    發(fā)表于 05-09 15:00 ?1949次閱讀

    Python科學計算與數(shù)據(jù)分析

    Python科學計算與數(shù)據(jù)分析教材下載。
    發(fā)表于 06-01 14:38 ?22次下載

    基于Python對微信好友進行數(shù)據(jù)分析

    同平時登錄網頁版微信一樣,我們使用手機掃描二維就可以登錄,這里返回的friends對象是一個集合,第一個元素是當前用戶。所以,在下面的數(shù)據(jù)分析流程中,我們始終取friends[1:]作為原始輸入
    的頭像 發(fā)表于 06-30 11:17 ?963次閱讀

    python什么用 如何用python創(chuàng)建數(shù)據(jù)

    python什么用 如何用python創(chuàng)建數(shù)據(jù)Python是一種高級編程語言,可以用于開發(fā)
    的頭像 發(fā)表于 08-28 16:41 ?1144次閱讀

    Sweetviz: 讓你三行代碼實現(xiàn)探索性數(shù)據(jù)分析

    Sweetviz是一個開源Python庫,它只需三行代碼就可以生成漂亮的高精度可視化效果來啟動EDA(探索性數(shù)據(jù)分析)。輸出一個HTML。
    的頭像 發(fā)表于 10-31 10:28 ?913次閱讀
    Sweetviz: 讓你三行<b class='flag-5'>代碼</b>實現(xiàn)探索性<b class='flag-5'>數(shù)據(jù)分析</b>