網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python數(shù)據(jù)分析開源
10大Python開源項目推薦 推廣視頻課程
▌Rank 1:Requests-HTML v0.9(7385 stars on Github,來自Kenneth Reitz)
該庫旨在盡可能簡單直觀地解析 HTML,僅支持 Python 3.6。
項目地址:https://github/kennethreitz/requests-html
▌Rank 2:PyTest v3.5(2453 stars on Github,來自Pytest-dev)
該項目是一個可擴展的 Python 框架,可以輕松編寫小型測試,支持更復(fù)雜的功能測試。
項目地址:https://github/pytest-dev/pytest
▌Rank 3:Lector(327 stars on Github,來自BasioMeusPuga)
基于 Qt 的電子書閱讀器
項目地址:https://github/BasioMeusPuga/Lector
▌Rank 4:Asciinema v2.0(5491 stars on Github,來自Asciinema)
Python 編寫的終端會話錄制器。
項目地址:https://github/asciinema/asciinema
▌Rank 5:Snips-nlu v0.13(1416 stars on Github,來自Snips)
Snips-nlu 是一個 Python 庫,可以解析用自然語言編寫的句子并提取結(jié)構(gòu)化信息。
項目地址:https://github/snipsco/snips-nlu
▌Rank 6:Black(1665 stars on Github,來自ukasz Langa)
Python 代碼格式化工具庫。
項目地址:https://github/ambv/black
▌Rank 7:Instagram-terminal-news-feed(690 stars on Github,來自Bill Cheng)
Instagram Terminal Feed
項目地址:https://github/billcccheng/instagram-terminal-news-feed
▌Rank 8:Makesite(481 stars on Github,來自Sunaina Pai)
適合 Python 工程師的簡單、輕量級靜態(tài)網(wǎng)站/博客生成器。
項目地址:https://github/sunainapai/makesite
▌Rank 9:Twitter-scraper(832 stars on Github,來自Kenneth Reitz)
Python 寫的 Twitter 爬蟲工具,無 API 流速限制,非常高效,可輕松獲取任何用戶的推文。
項目地址:https://github/kennethreitz/twitter-scraper
▌Rank 10:Fast-Pandas(667 stars on Github,來自M. Mansour)
Pandas 是為數(shù)據(jù)科學(xué)家和開發(fā)人員提供的最靈活、最強大的工具之一。開發(fā)者可通過幾種方式執(zhí)行特定的任務(wù)。Fast-Pandas 旨在針對這些情況下的不同可用方法進行基準測試。此外,在 numpy 和 pandas 中都有專門的功能部分。
項目地址:https://github/mm-mansour/Fast-Pandas
原文地址:https://medium.mybridge.co/python-top-10-open-source-of-the-month-v-apr-2018-9e91343756a
GitHub 上最火的 Python 開源項目 行業(yè)視頻課程
許多開發(fā)者都有定期瀏覽 GitHub 的習(xí)慣,對于 GitHub 上如此眾多的項目,有人不斷分享,有人不斷 Mark。每個人瀏覽的時候,都會注意到 Star 的數(shù)量,它代表著這個項目的熱度,今天,我們依照 Star 數(shù),盤點 GitHub 上Python 語言中最火的 15 個開源項目,希望對你有幫助,排名如下:
1
機器學(xué)習(xí)系統(tǒng) tensorflow
https://github/tensorflow/tensorflowStar 68481
Google 的 TensorFlow 是最流行的開源 AI 庫之一。它的高計算效率,豐富的開發(fā)資源使它被企業(yè)和個人開發(fā)者廣泛采用。TensorFlow 是一個采用數(shù)據(jù)流圖,用于數(shù)值計算的開源軟件庫。TensorFlow 最初由Google 大腦小組(隸屬于 Google 機器智能研究機構(gòu))的研究員和工程師們開發(fā)出來,用于機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)方面的研究,但這個系統(tǒng)的通用性使其也可廣泛用于其他計算領(lǐng)域。
2
oh-my-zsh
https://github/robbyrussell/oh-my-zshStar 58473
oh-my-zsh 是基于 zsh 的功能做了一個擴展,方便的插件管理、主題自定義,以及漂亮的自動完成效果。 Zsh 和 bash 一樣,是一種 Unix shell,但大多數(shù) Linux 發(fā)行版本都默認使用 bash shell。但 Zsh 有強大的自動補全參數(shù)、文件名、等功能和強大的自定義配置功能。
3
命令行 HTTP 工具包 httpie
https://github/jakubroztocil/httpieStar 31248
HTTPie 是一個命令行 HTTP 客戶端,提供命令行交互方式來訪問 HTTP 服務(wù)。其目標是使CLI 與 Web 服務(wù)的交互盡可能人性化。它提供了一個簡單的 http 命令,允許使用簡單自然的語法發(fā)送任意 HTTP 請求。
4
shell 命令行拓展 thefuck
https://github/nvbn/thefuckhttps://github/nvbn/thefuckStar 30532
首先這個項目的名字就很引人注目,取名為 thefuck 的原因是任何情況下你想說“我操”,你都可以用得到 thefuck。theFuck 是一個高可配置的應(yīng)用,用戶可以開啟或關(guān)閉規(guī)則、配置 UI、設(shè)置規(guī)則選項還有進行其他的操作。Fuck 的 UI 很簡單,它允許用戶通過(上下)箭頭的方式在修正過的命令列表中進行選擇,使用 Enter 來確認選擇,Ctrl+C 來跳出程序。 不足的是在 Python 標準庫中沒有辦法在非 Windows 下不通過 curses 來讀取鍵盤輸入
5
微型 Python 框架 Flask
https://github/pallets/flaskStar 29399
Flask 是一個微型的 Python 開發(fā)的 Web 框架,基于Werkzeug WSGI工具箱和Jinja2 模板引擎。 Flask 使用 BSD 授權(quán)。 Flask 也被稱為“microframework”,因為它使用簡單的核心,用 extension 增加其他功能。Flask 沒有默認使用的數(shù)據(jù)庫、窗體驗證工具。然而,F(xiàn)lask 保留了擴增的彈性,可以用 Flask-extension 加入這些功能:ORM、窗體驗證工具、文件上傳、各種開放式身份驗證技術(shù)。
6
Python Web 框架 Django
https://github/django/djangoStar 27899
Django 是 Python 編程語言驅(qū)動的一個開源模型-視圖-控制器(MVC)風(fēng)格的 Web 應(yīng)用程序框架。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關(guān)注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV 模式。使用 Django,我們在幾分鐘之內(nèi)就可以創(chuàng)建高品質(zhì)、易維護、數(shù)據(jù)庫驅(qū)動的應(yīng)用程序。
7
jQuery-File-Upload
https://github/blueimp/jQuery-File-UploadStar 27398
jQuery File Upload 是一個 jQuery 圖片上傳組件,支持多文件上傳、取消、刪除,上傳前縮略圖預(yù)覽、列表顯示圖片大小,支持上傳進度條顯示;支持各種動態(tài)語言開發(fā)的服務(wù)器端。
8
Python 的 HTTP 客戶端庫 requests
https://github/requests/requestsStar 27210
requests 是 Python 的一個 HTTP 客戶端庫,跟 urllib,urllib2 類似,那為什么要用 requests 而不用 urllib2 呢?以為 Python 的標準庫 urllib2 提供了大部分需要的 HTTP 功能,但是API太逆天了,一個簡單的功能就需要一大堆代碼。看了 requests 的文檔,確實很簡單,尤其適合懶人。
9
計算機系統(tǒng)配置管理器 ansible
https://github/ansible/ansibleStar 25132
Ansible 提供一種最簡單的方式用于發(fā)布、管理和編排計算機系統(tǒng)的工具,你可在數(shù)分鐘內(nèi)搞定。Ansible 是一個模型驅(qū)動的配置管理器,支持多節(jié)點發(fā)布、遠程任務(wù)執(zhí)行。默認使用 SSH 進行遠程連接。無需在被管理節(jié)點上安裝附加軟件,可使用各種編程語言進行擴展。
10
Web 爬蟲框架 scrapy
https://github/scrapy/scrapyStar 22407
Scrapy 是 Python 開發(fā)的一個快速,高層次的屏幕抓取和 Web 抓取框架,用戶只需要定制開發(fā)幾個模塊就可以輕松的實現(xiàn)一個爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常之方便。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。
Scrapy 吸引人的地方在于它是一個框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如 BaseSpider、sitemap 爬蟲等。
11
Python 的機器學(xué)習(xí)項目 scikit-learn
https://github/scikit-learn/scikit-learnStar 20908
scikit-learn 是一個 Python 的機器學(xué)習(xí)項目。是一個簡單高效的數(shù)據(jù)挖掘和數(shù)據(jù)分析工具?;?NumPy、SciPy 和 matplotlib 構(gòu)建?;?BSD 源許可證。scikit-learn 的基本功能主要被分為六個部分,分類,回歸,聚類,數(shù)據(jù)降維,模型選擇,數(shù)據(jù)預(yù)處理。
12
神經(jīng)網(wǎng)絡(luò)庫 keras
https://github/fchollet/kerasStar 19132
Keras 是一個極簡的、高度模塊化的神經(jīng)網(wǎng)絡(luò)庫,采用 Python(Python 2.7-3.5.)開發(fā),能夠運行在 TensorFlow 和 Theano 任一平臺,好項目旨在完成深度學(xué)習(xí)的快速開發(fā)。keras 的幾大特點:文檔齊全、上手快速、純 Python 編寫、關(guān)注度高更新迅速、論壇活躍、就是運行速度不太快,當然,有的人就是不 care 速度。
13
Web 服務(wù)器 Tornado
https://github/tornadoweb/tornadoStar14178
Tornado 是使用 Python 開發(fā)的全棧式(full-stack)Web框架和異步網(wǎng)絡(luò)庫,最早由 Friendfeed 開發(fā)。通過使用非阻塞 IO,Tornado 可以處理數(shù)以萬計的開放連接,是 long polling、WebSockets 和其他需要為用戶維護長連接應(yīng)用的理想選擇。Tornado 跟其他主流的Web服務(wù)器框架(主要是 Python 框架)不同是采用 epoll 非阻塞 IO,響應(yīng)快速,可處理數(shù)千并發(fā)連接,特別適用用于實時的 Web 服務(wù)。
14
Python 解釋器 CPython
https://github/python/cpythonStar 12609
CPython 是用C語言實現(xiàn)的 Python 解釋器,也是官方的并且是最廣泛使用的Python解釋器。除了 CPython 以外,還有用 JAVA 實現(xiàn)的 Jython 和用 .NET 實現(xiàn)的 IronPython,使 Python 方便地和 JAVA 程序、.NET 程序集成。另外還有一些實驗性的 Python 解釋器比如 PyPy。
CPython 是使用字節(jié)碼的解釋器,任何程序源代碼在執(zhí)行之前先要編譯成字節(jié)碼。它還有和幾種其它語言(包括C語言)交互的外部函數(shù)接口。
工具包 CNTK
https://github/Microsoft/CNTKStar 12225
來自微軟公司的 CNTK 工具包的效率,“比我們所見過的都要瘋狂”。 這部分歸功于 CNTK 可借助圖形處理單元(GPU)的能力,微軟自稱是唯一公開“可擴展 GPU”功能的公司。(從單機上的 1 個、延伸至超算上的多個) 在與該公司的網(wǎng)絡(luò)化 GPU 系統(tǒng)(稱之為Azure GPU Lab)匹配之后,它將能夠訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)來識別語音,讓 Cortana 虛擬助理的速度達到以前的十倍。 去年 4 月的時候,CNTK 就已經(jīng)面向研究人員開放,只是當時的開源授權(quán)限制頗多。不過現(xiàn)在,它已經(jīng)徹底開放了,而深度學(xué)習(xí)的初創(chuàng)者們將最為受益。
來自:開源中國
-end-
往期回顧:
iPhone8 下周出擊,嚇得我捂緊了我的腎!以后,在微信里管好自己的嘴,千萬別妄議!
做CIO難!做不踩“坑”的CIO更難!
Gartner發(fā)布技術(shù)成熟曲線:“你剛被人工智能洗腦,最聰明的錢已轉(zhuǎn)向這16項技術(shù)”
記一次驚心動魄的 DNS 緩存引發(fā)的慘案
發(fā)現(xiàn)·前沿 《海外風(fēng)向標》 | 對話·精英 《CXO百腦匯》| 聚焦·行業(yè) 《早安,IDG》| 每周精彩內(nèi)容,盡在e行網(wǎng)。
2018年最火的5大Python開源項目,總有適合你的! 公司視頻課程
前幾天看到一條新聞,說是高中生課程里面開設(shè)python課程了,這小孩子都來搶占市場了,這就是打了很多人的臉,特別是已經(jīng)畢業(yè)很多年或者正在學(xué)校的人,小孩子都作為標準的教材來學(xué)習(xí)了,作為過來人還有什么理由說學(xué)不好。讓自己做得多說的少最合適。
說到python現(xiàn)在處于風(fēng)口期,相對來說入門也比較容易。在人工智能以及大數(shù)據(jù)分析上都具備很強的特性。
Python語言易學(xué)易學(xué),高效開發(fā)。Python語言開發(fā)的開源項目非常活躍。下面是五個最活躍的Python開源項目。
1)排名第一,當然是關(guān)于機器學(xué)習(xí)谷歌開源項目tensorflow,TensorFlow是一個對數(shù)值計算的數(shù)據(jù)流圖,對開源項目的統(tǒng)計,這個項目被宣布與一百萬星和叉,被廣泛應(yīng)用于機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)研究。
2)第二個地方是python的新燒瓶。燒瓶是一個小型的Python Web開發(fā)框架。它是基于WSGI工具箱和jinja2模板引擎,它可以配置和開發(fā)Python網(wǎng)站最靈活快速的。
3。)第三的地方是在Python Web方向的經(jīng)典Django,和Django Web框架,采用m-v-t設(shè)計模式。在Django,由于控制器接受用戶輸入部分由框架本身的處理,所以Django編程更側(cè)重于模型(模型)、模板(模板)和視圖(視圖)。小編推薦一個學(xué)Python的學(xué)習(xí)裙【五八八,零九零,九四二】,無論你是大牛還是小白,是想轉(zhuǎn)行還是想入行都可以來了解一起進步一起學(xué)習(xí)!裙內(nèi)有很多干貨和技術(shù)分享使用Django,我們可以快速創(chuàng)建高質(zhì)量、易維護、數(shù)據(jù)庫驅(qū)動的Web服務(wù)程序,特別是與學(xué)生建立數(shù)據(jù)庫的操作不是很熟悉,寶。
4)是Python的成熟,功能齊全的排在功能測試框架pytest pytest測試框架第四,可以幫助你更好的編寫自動化測試程序,它可以適應(yīng)全功能測試,集成測試復(fù)雜,從簡單的單元測試,以及眾多的支持插件開發(fā)。
5)在數(shù)據(jù)收集工具Scrapy排名第五,Scrapy是一個優(yōu)秀的數(shù)據(jù)網(wǎng)絡(luò)爬蟲框架,用戶只需要定制幾個模塊的開發(fā)可以實現(xiàn)完美的網(wǎng)絡(luò)爬蟲容易,使用它來抓取網(wǎng)頁內(nèi)容的數(shù)據(jù)和各種圖像文件等非常方便;Scrapy還提供各種履帶式基礎(chǔ)的類型,如basespider和站點;Scrapy被廣泛應(yīng)用于數(shù)據(jù)挖掘、網(wǎng)絡(luò)監(jiān)控和自動測試等。
以上排名是基于代碼提交和叉活動的排名,只反映了開源代碼的流行,企業(yè)市場應(yīng)用不熱,注意差異,你必須根據(jù)自己的需要選擇適合你的項目的python開源框架和工具。
不管你是懷著什么目的,求職加薪,或者是興趣。首先你得準備吃苦的思想準備。學(xué)編程語言是枯燥的,得持之以恒。如果學(xué)python都是從入門到放棄,那么學(xué)其它東西會更難。
還需要有些自學(xué)能力,出現(xiàn)問題,自己嘗試解決。多加練習(xí),在練習(xí)和不斷挫折中理解和掌握,熟能生巧。
不要急躁,真正能為你所用的技能,不是一朝一夕速成的。真正能被你吸收的養(yǎng)分,不是別人嚼爛了給你。你自己體會到的知識,才會被你吸收,在大腦里停留許久。
TOP 3大開源Python數(shù)據(jù)分析工具! 行業(yè)視頻課程
[來自IT168] 【IT168 評論】在大數(shù)據(jù)庫領(lǐng)域,Python是最常被使用的編程語言,因此了解與其相關(guān)的數(shù)據(jù)分析工具是很有必要的。如果你正在使用virtualenv、pyenv或其他變體在自己的環(huán)境中運行Python,那么,可以嘗試本文推薦的三大開源工具?! ?注:本文示例使用IPython,如果感興趣,請確保已經(jīng)安裝) $ mkdir python-big-data $ cd python-big-data $ virtualenv ../venvs/python-big-data $ source ../venvs/python-big-data/bin/activate $ pip install ipython $ pip install pandas $ pip install pyspark $ pip install scikit-learn $ pip install scipy 本文選取的示例數(shù)據(jù)是最近幾天從某網(wǎng)站獲取的實際生產(chǎn)日志數(shù)據(jù),從技術(shù)層面來看,這些數(shù)據(jù)并不能算作是大數(shù)據(jù),因為它的大小只有大約2Mb,但就演示來說已經(jīng)足夠了?! ∪绻阆氆@取這些示例數(shù)據(jù),可以使用git從作者的公共GitHub存儲庫中下載:admintome / access-log-data $ git clone https://github/admintome/access-log-data.git 數(shù)據(jù)是一個簡單的CSV文件,因此每行代表一個單獨的日志,字段用逗號分隔: 2018-08-01 17:10,'www2','www_access','172.68.133.49 - - [01/Aug/2018:17:10:15 +0000] "GET /wp-content/uploads/2018/07/spark-mesos-job-complete-1024x634.png HTTP/1.0" 200 151587 "https://dzone/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"' 以下是日志行架構(gòu):
由于對數(shù)據(jù)可執(zhí)行的操作的復(fù)雜性不確定,因此本文重點選取加載數(shù)據(jù)和獲取數(shù)據(jù)樣本兩個操作來講解三個工具。 1、Python Pandas 我們討論的第一個工具是Python Pandas。正如它的網(wǎng)站所述,Pandas是一個開源的Python數(shù)據(jù)分析庫。它最初由AQR Capital Management于2008年4月開發(fā),并于2009年底開源,目前由專注于Python數(shù)據(jù)包開發(fā)的PyData開發(fā)團隊繼續(xù)開發(fā)和維護,屬于PyData項目的一部分。Pandas最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,因此,pandas為時間序列分析提供了很好的支持。 首先,啟動IPython并對示例數(shù)據(jù)進行一些操作。(因為pandas是python的第三方庫所以使用前需要安裝一下,直接使用pip install pandas 就會自動安裝pandas以及相關(guān)組件)
import pandas as pd headers = ["datetime", "source", "type", "log"] df = pd.read_csv('access_logs_parsed.csv', quotechar="'", names=headers) 大約一秒后,我們會收到如下回復(fù): [6844 rows x 4 columns] In [3]: 如上所見,我們有大約7000行數(shù)據(jù),它從中找到了四個與上述模式匹配的列。 Pandas自動創(chuàng)建了一個表示CSV文件的DataFrame對象,Pandas中的DataFrame數(shù)據(jù)既可以存儲在SQL數(shù)據(jù)庫中,也可以直接存儲在CSV文件中。接下來我們使用head()函數(shù)導(dǎo)入數(shù)據(jù)樣本?! n [11]: df.head() Out[11]: datetime source type log 0 2018-08-01 17:10 www2 www_access 172.68.133.49 - - [01/Aug/2018:17:10:15 +0000]... 1 2018-08-01 17:10 www2 www_access 162.158.255.185 - - [01/Aug/2018:17:10:15 +000... 2 2018-08-01 17:10 www2 www_access 108.162.238.234 - - [01/Aug/2018:17:10:22 +000... 3 2018-08-01 17:10 www2 www_access 172.68.47.211 - - [01/Aug/2018:17:10:50 +0000]... 4 2018-08-01 17:11 www2 www_access 141.101.96.28 - - [01/Aug/2018:17:11:11 +0000]... 使用Python Pandas可以做很多事情, 數(shù)據(jù)科學(xué)家通常將Python Pandas與IPython一起使用,以交互方式分析大量數(shù)據(jù)集,并從該數(shù)據(jù)中獲取有意義的商業(yè)智能?! ?、PySpark 我們討論的第二個工具是PySpark,該工具來自Apache Spark項目的大數(shù)據(jù)分析庫?! ySpark提供了許多用于在Python中分析大數(shù)據(jù)的功能,它自帶shell,用戶可以從命令行運行?! ? pyspark 這會加載pyspark shell: (python-big-data)[email protected]:~/Development/access-log-data$ pyspark Python 3.6.5 (default, Apr 1 2018, 05:46:30) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. 2018-08-03 18:13:38 WARN Utils:66 - Your hostname, admintome resolves to a loopback address: 127.0.1.1; using 192.168.1.153 instead (on interface enp0s3) 2018-08-03 18:13:38 WARN Utils:66 - Set SPARK_LOCAL_IP if you need to bind to another address 2018-08-03 18:13:39 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.3.1 /_/ Using Python version 3.6.5 (default, Apr 1 2018 05:46:30) SparkSession available as 'spark'. >>> 當你啟動shell時,你會得到一個Web GUI查看你的工作狀態(tài),只需瀏覽到http:// localhost:4040即可獲得PySpark Web GUI。
讓我們使用PySpark Shell加載示例數(shù)據(jù): dataframe = spark.read.format("csv").option("header","false").option("mode","DROPMALFORMED").option("quote","'").load("access_logs.csv") dataframe.show() PySpark提供了已創(chuàng)建的DataFrame示例: >>> dataframe2.show() +----------------+----+----------+--------------------+ | _c0| _c1| _c2| _c3| +----------------+----+----------+--------------------+ |2018-08-01 17:10|www2|www_access|172.68.133.49 - -...| |2018-08-01 17:10|www2|www_access|162.158.255.185 -...| |2018-08-01 17:10|www2|www_access|108.162.238.234 -...| |2018-08-01 17:10|www2|www_access|172.68.47.211 - -...| |2018-08-01 17:11|www2|www_access|141.101.96.28 - -...| |2018-08-01 17:11|www2|www_access|141.101.96.28 - -...| |2018-08-01 17:11|www2|www_access|162.158.50.89 - -...| |2018-08-01 17:12|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:12|www2|www_access|172.68.47.151 - -...| |2018-08-01 17:12|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:12|www2|www_access|141.101.76.83 - -...| |2018-08-01 17:14|www2|www_access|172.68.218.41 - -...| |2018-08-01 17:14|www2|www_access|172.68.218.47 - -...| |2018-08-01 17:14|www2|www_access|172.69.70.72 - - ...| |2018-08-01 17:15|www2|www_access|172.68.63.24 - - ...| |2018-08-01 17:18|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:18|www2|www_access|141.101.99.138 - ...| |2018-08-01 17:19|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:19|www2|www_access|162.158.89.74 - -...| |2018-08-01 17:19|www2|www_access|172.68.54.35 - - ...| +----------------+----+----------+--------------------+ only showing top 20 rows 我們再次看到DataFrame中有四列與我們的模式匹配,DataFrame此處可以被視為數(shù)據(jù)庫表或Excel電子表格?! ?、Python SciKit-Learn 任何關(guān)于大數(shù)據(jù)的討論都會引發(fā)關(guān)于機器學(xué)習(xí)的討論,幸運的是,Python開發(fā)人員有很多選擇來使用機器學(xué)習(xí)算法。 在沒有詳細介紹機器學(xué)習(xí)的情況下,我們需要獲得一些執(zhí)行機器學(xué)習(xí)的數(shù)據(jù),我在本文中提供的示例數(shù)據(jù)不能正常工作,因為它不是數(shù)字類型的數(shù)據(jù)。我們需要操縱數(shù)據(jù)并將其呈現(xiàn)為數(shù)字格式,這超出了本文的范圍,例如,我們可以按時間映射日志以獲得具有兩列的DataFrame:一分鐘內(nèi)的日志數(shù)和當前時間: +------------------+---+ | 2018-08-01 17:10 | 4 | +------------------+---+ | 2018-08-01 17:11 | 1 | +------------------+---+ 通過這種形式的數(shù)據(jù),我們可以執(zhí)行機器學(xué)習(xí)算法來預(yù)測未來可能獲得的訪客數(shù)量,SciKit-Learn附帶了一些樣本數(shù)據(jù)集,我們可以加載一些示例數(shù)據(jù),來看一下具體如何運作。 In [1]: from sklearn import datasets In [2]: iris = datasets.load_iris() In [3]: digits = datasets.load_digits() In [4]: print(digits.data) [[ 0. 0. 5. ... 0. 0. 0.] [ 0. 0. 0. ... 10. 0. 0.] [ 0. 0. 0. ... 16. 9. 0.] ... [ 0. 0. 1. ... 6. 0. 0.] [ 0. 0. 2. ... 12. 0. 0.] [ 0. 0. 10. ... 12. 1. 0.]] 這將加載兩個用于機器學(xué)習(xí)分類的算法,用于對數(shù)據(jù)進行分類?! 〗Y(jié)論 在大數(shù)據(jù)領(lǐng)域,Python、R以及Scala是主要的參與者,開源社區(qū)中有不少針對這三者的工具,國內(nèi)互聯(lián)網(wǎng)企業(yè)一向很喜歡基于開源工具自研,選擇之前不妨做好功課,抽取使用人數(shù)較多且應(yīng)用場景最接近實際需求的方案。
TOP 3大開源Python數(shù)據(jù)分析工具! 公司視頻課程
[來自IT168] 【IT168 評論】在大數(shù)據(jù)庫領(lǐng)域,Python是最常被使用的編程語言,因此了解與其相關(guān)的數(shù)據(jù)分析工具是很有必要的。如果你正在使用virtualenv、pyenv或其他變體在自己的環(huán)境中運行Python,那么,可以嘗試本文推薦的三大開源工具。 (注:本文示例使用IPython,如果感興趣,請確保已經(jīng)安裝) $ mkdir python-big-data $ cd python-big-data $ virtualenv ../venvs/python-big-data $ source ../venvs/python-big-data/bin/activate $ pip install ipython $ pip install pandas $ pip install pyspark $ pip install scikit-learn $ pip install scipy 本文選取的示例數(shù)據(jù)是最近幾天從某網(wǎng)站獲取的實際生產(chǎn)日志數(shù)據(jù),從技術(shù)層面來看,這些數(shù)據(jù)并不能算作是大數(shù)據(jù),因為它的大小只有大約2Mb,但就演示來說已經(jīng)足夠了。 如果你想獲取這些示例數(shù)據(jù),可以使用git從作者的公共GitHub存儲庫中下載:admintome / access-log-data $ git clone https://github/admintome/access-log-data.git 數(shù)據(jù)是一個簡單的CSV文件,因此每行代表一個單獨的日志,字段用逗號分隔: 2018-08-01 17:10,'www2','www_access','172.68.133.49 - - [01/Aug/2018:17:10:15 +0000] "GET /wp-content/uploads/2018/07/spark-mesos-job-complete-1024x634.png HTTP/1.0" 200 151587 "https://dzone/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36"' 以下是日志行架構(gòu):
由于對數(shù)據(jù)可執(zhí)行的操作的復(fù)雜性不確定,因此本文重點選取加載數(shù)據(jù)和獲取數(shù)據(jù)樣本兩個操作來講解三個工具。 1、Python Pandas 我們討論的第一個工具是Python Pandas。正如它的網(wǎng)站所述,Pandas是一個開源的Python數(shù)據(jù)分析庫。它最初由AQR Capital Management于2008年4月開發(fā),并于2009年底開源,目前由專注于Python數(shù)據(jù)包開發(fā)的PyData開發(fā)團隊繼續(xù)開發(fā)和維護,屬于PyData項目的一部分。Pandas最初被作為金融數(shù)據(jù)分析工具而開發(fā)出來,因此,pandas為時間序列分析提供了很好的支持。 首先,啟動IPython并對示例數(shù)據(jù)進行一些操作。(因為pandas是python的第三方庫所以使用前需要安裝一下,直接使用pip install pandas 就會自動安裝pandas以及相關(guān)組件)
import pandas as pd headers = ["datetime", "source", "type", "log"] df = pd.read_csv('access_logs_parsed.csv', quotechar="'", names=headers) 大約一秒后,我們會收到如下回復(fù): [6844 rows x 4 columns] In [3]: 如上所見,我們有大約7000行數(shù)據(jù),它從中找到了四個與上述模式匹配的列。 Pandas自動創(chuàng)建了一個表示CSV文件的DataFrame對象,Pandas中的DataFrame數(shù)據(jù)既可以存儲在SQL數(shù)據(jù)庫中,也可以直接存儲在CSV文件中。接下來我們使用head()函數(shù)導(dǎo)入數(shù)據(jù)樣本?! n [11]: df.head() Out[11]: datetime source type log 0 2018-08-01 17:10 www2 www_access 172.68.133.49 - - [01/Aug/2018:17:10:15 +0000]... 1 2018-08-01 17:10 www2 www_access 162.158.255.185 - - [01/Aug/2018:17:10:15 +000... 2 2018-08-01 17:10 www2 www_access 108.162.238.234 - - [01/Aug/2018:17:10:22 +000... 3 2018-08-01 17:10 www2 www_access 172.68.47.211 - - [01/Aug/2018:17:10:50 +0000]... 4 2018-08-01 17:11 www2 www_access 141.101.96.28 - - [01/Aug/2018:17:11:11 +0000]... 使用Python Pandas可以做很多事情, 數(shù)據(jù)科學(xué)家通常將Python Pandas與IPython一起使用,以交互方式分析大量數(shù)據(jù)集,并從該數(shù)據(jù)中獲取有意義的商業(yè)智能。 2、PySpark 我們討論的第二個工具是PySpark,該工具來自Apache Spark項目的大數(shù)據(jù)分析庫?! ySpark提供了許多用于在Python中分析大數(shù)據(jù)的功能,它自帶shell,用戶可以從命令行運行。 $ pyspark 這會加載pyspark shell: (python-big-data)[email protected]:~/Development/access-log-data$ pyspark Python 3.6.5 (default, Apr 1 2018, 05:46:30) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. 2018-08-03 18:13:38 WARN Utils:66 - Your hostname, admintome resolves to a loopback address: 127.0.1.1; using 192.168.1.153 instead (on interface enp0s3) 2018-08-03 18:13:38 WARN Utils:66 - Set SPARK_LOCAL_IP if you need to bind to another address 2018-08-03 18:13:39 WARN NativeCodeLoader:62 - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Setting default log level to "WARN". To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel). Welcome to ____ __ / __/__ ___ _____/ /__ _\ \/ _ \/ _ `/ __/ '_/ /__ / .__/\_,_/_/ /_/\_\ version 2.3.1 /_/ Using Python version 3.6.5 (default, Apr 1 2018 05:46:30) SparkSession available as 'spark'. >>> 當你啟動shell時,你會得到一個Web GUI查看你的工作狀態(tài),只需瀏覽到http:// localhost:4040即可獲得PySpark Web GUI。
讓我們使用PySpark Shell加載示例數(shù)據(jù): dataframe = spark.read.format("csv").option("header","false").option("mode","DROPMALFORMED").option("quote","'").load("access_logs.csv") dataframe.show() PySpark提供了已創(chuàng)建的DataFrame示例: >>> dataframe2.show() +----------------+----+----------+--------------------+ | _c0| _c1| _c2| _c3| +----------------+----+----------+--------------------+ |2018-08-01 17:10|www2|www_access|172.68.133.49 - -...| |2018-08-01 17:10|www2|www_access|162.158.255.185 -...| |2018-08-01 17:10|www2|www_access|108.162.238.234 -...| |2018-08-01 17:10|www2|www_access|172.68.47.211 - -...| |2018-08-01 17:11|www2|www_access|141.101.96.28 - -...| |2018-08-01 17:11|www2|www_access|141.101.96.28 - -...| |2018-08-01 17:11|www2|www_access|162.158.50.89 - -...| |2018-08-01 17:12|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:12|www2|www_access|172.68.47.151 - -...| |2018-08-01 17:12|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:12|www2|www_access|141.101.76.83 - -...| |2018-08-01 17:14|www2|www_access|172.68.218.41 - -...| |2018-08-01 17:14|www2|www_access|172.68.218.47 - -...| |2018-08-01 17:14|www2|www_access|172.69.70.72 - - ...| |2018-08-01 17:15|www2|www_access|172.68.63.24 - - ...| |2018-08-01 17:18|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:18|www2|www_access|141.101.99.138 - ...| |2018-08-01 17:19|www2|www_access|192.168.1.7 - - [...| |2018-08-01 17:19|www2|www_access|162.158.89.74 - -...| |2018-08-01 17:19|www2|www_access|172.68.54.35 - - ...| +----------------+----+----------+--------------------+ only showing top 20 rows 我們再次看到DataFrame中有四列與我們的模式匹配,DataFrame此處可以被視為數(shù)據(jù)庫表或Excel電子表格?! ?、Python SciKit-Learn 任何關(guān)于大數(shù)據(jù)的討論都會引發(fā)關(guān)于機器學(xué)習(xí)的討論,幸運的是,Python開發(fā)人員有很多選擇來使用機器學(xué)習(xí)算法。 在沒有詳細介紹機器學(xué)習(xí)的情況下,我們需要獲得一些執(zhí)行機器學(xué)習(xí)的數(shù)據(jù),我在本文中提供的示例數(shù)據(jù)不能正常工作,因為它不是數(shù)字類型的數(shù)據(jù)。我們需要操縱數(shù)據(jù)并將其呈現(xiàn)為數(shù)字格式,這超出了本文的范圍,例如,我們可以按時間映射日志以獲得具有兩列的DataFrame:一分鐘內(nèi)的日志數(shù)和當前時間: +------------------+---+ | 2018-08-01 17:10 | 4 | +------------------+---+ | 2018-08-01 17:11 | 1 | +------------------+---+ 通過這種形式的數(shù)據(jù),我們可以執(zhí)行機器學(xué)習(xí)算法來預(yù)測未來可能獲得的訪客數(shù)量,SciKit-Learn附帶了一些樣本數(shù)據(jù)集,我們可以加載一些示例數(shù)據(jù),來看一下具體如何運作?! n [1]: from sklearn import datasets In [2]: iris = datasets.load_iris() In [3]: digits = datasets.load_digits() In [4]: print(digits.data) [[ 0. 0. 5. ... 0. 0. 0.] [ 0. 0. 0. ... 10. 0. 0.] [ 0. 0. 0. ... 16. 9. 0.] ... [ 0. 0. 1. ... 6. 0. 0.] [ 0. 0. 2. ... 12. 0. 0.] [ 0. 0. 10. ... 12. 1. 0.]] 這將加載兩個用于機器學(xué)習(xí)分類的算法,用于對數(shù)據(jù)進行分類。 結(jié)論 在大數(shù)據(jù)領(lǐng)域,Python、R以及Scala是主要的參與者,開源社區(qū)中有不少針對這三者的工具,國內(nèi)互聯(lián)網(wǎng)企業(yè)一向很喜歡基于開源工具自研,選擇之前不妨做好功課,抽取使用人數(shù)較多且應(yīng)用場景最接近實際需求的方案。