摘要:從本博客開(kāi)始,將系統(tǒng)的學(xué)習(xí)的數(shù)據(jù)分析的六大模塊,有關(guān)的基礎(chǔ)知識(shí),可以看我的博客。專(zhuān)為進(jìn)行嚴(yán)格的數(shù)字處理而產(chǎn)生。在實(shí)現(xiàn)一個(gè)程序之前,值得檢查下所需的數(shù)據(jù)處理方式是否已經(jīng)在中存在了。積分六官網(wǎng)為了解決數(shù)據(jù)分析而創(chuàng)建的庫(kù)。
從本博客開(kāi)始,將系統(tǒng)的學(xué)習(xí)Python的數(shù)據(jù)分析的六大模塊numpy、scipy、matplotlib、pandas、scikit-learn、keras,有關(guān)Python的基礎(chǔ)知識(shí),可以看我的博客 http://digtime.cn/。一、概念
python特點(diǎn):簡(jiǎn)潔,開(kāi)發(fā)效率高,運(yùn)算速度慢,膠水特性
主要有三點(diǎn):統(tǒng)計(jì)分析方法,提取有用的信息,研究、概括、總結(jié)。
數(shù)據(jù)分析六大模塊:numpy、scipy、matplotlib、pandas、scikit-learn、keras
numpy:數(shù)據(jù)結(jié)構(gòu)基礎(chǔ)
scipy:強(qiáng)大的科學(xué)計(jì)算方法(矩陣分析、信號(hào)分析、數(shù)理分析...)
matplotlib:豐富的可視化套件
pandas:基礎(chǔ)數(shù)據(jù)分析套件
scikit-learn:強(qiáng)大的數(shù)據(jù)分析建模塊
keras:人工神經(jīng)網(wǎng)絡(luò)
二、Python環(huán)境安裝 1、Anaconda集成包環(huán)境安裝要利用Python進(jìn)行科學(xué)計(jì)算,就需要一一安裝所需的模塊,而這些模塊可能又依賴(lài)于其它的軟件包或庫(kù),因而安裝和使用起來(lái)相對(duì)麻煩。幸好有人專(zhuān)門(mén)在做這一類(lèi)事情,將科學(xué)計(jì)算所需要的模塊都編譯好,然后打包以發(fā)行版的形式供用戶使用,Anaconda就是其中一個(gè)常用的科學(xué)計(jì)算發(fā)行版。
安裝完anaconda,就相當(dāng)于安裝了Python、IPython、集成開(kāi)發(fā)環(huán)境Spyder、一些包等等。
對(duì)于Mac、Linux系統(tǒng),Anaconda安裝好后,實(shí)際上就是在主目錄下多了個(gè)文件夾(~/anaconda)而已,Windows會(huì)寫(xiě)入注冊(cè)表。安裝時(shí),安裝程序會(huì)把bin目錄加入PATH(Linux/Mac寫(xiě)入~/.bashrc,Windows添加到系統(tǒng)變量PATH),這些操作也完全可以自己完成。以Linux/Mac為例,安裝完成后設(shè)置PATH的操作是
# 將anaconda的bin目錄加入PATH,根據(jù)版本不同,也可能是~/anaconda3/bin echo "export PATH="~/anaconda2/bin:$PATH"" >> ~/.bashrc # 更新bashrc以立即生效 source ~/.bashrc
MAC環(huán)境變量設(shè)置:
? export PATH=~/anaconda2/bin:$PATH ? conda -V conda 4.3.30
配置好PATH后,可以通過(guò) which conda 或 conda --version 命令檢查是否正確。假如安裝的是Python 2.7對(duì)應(yīng)的版本,運(yùn)行python --version或 python -V 可以得到Python 2.7.12 :: Anaconda 4.1.1 (64-bit),也說(shuō)明該發(fā)行版默認(rèn)的環(huán)境是Python 2.7。
在終端執(zhí)行 conda list可查看安裝了哪些包:
Conda的包管理就比較好理解了,這部分功能與pip類(lèi)似。
2、設(shè)置編輯器環(huán)境和模板我的編輯器使用的是 Pycharm,可以給其設(shè)置開(kāi)發(fā)環(huán)境和模板,進(jìn)行快速開(kāi)發(fā)。
Anaconda 設(shè)置:
固定模板設(shè)置:
# -*- coding:utf-8 -*- """ @author:Corwien @file:${NAME}.py @time:${DATE}${TIME} """三、numpy
NumPy(Numeric Python)系統(tǒng)是Python的一種開(kāi)源的數(shù)值計(jì)算擴(kuò)展。這種工具可用來(lái)存儲(chǔ)和處理大型矩陣,比Python自身的嵌套列表(nested list structure)結(jié)構(gòu)要高效的多(該結(jié)構(gòu)也可以用來(lái)表示矩陣(matrix))。據(jù)說(shuō)NumPy將Python相當(dāng)于變成一種免費(fèi)的更強(qiáng)大的MatLab系統(tǒng)。
numpy特性:開(kāi)源,數(shù)據(jù)計(jì)算擴(kuò)展,ndarray, 具有多維操作, 數(shù)矩陣數(shù)據(jù)類(lèi)型、矢量處理,以及精密的運(yùn)算庫(kù)。專(zhuān)為進(jìn)行嚴(yán)格的數(shù)字處理而產(chǎn)生。
1、基本操作小試牛刀:
# -*- coding:utf-8 -*- """ @author: Corwien @file: numpyTest.py @time: 17/11/5 01:32 """ import numpy as np def main(): lst = [[1, 3, 5], [2, 4, 6]] print(type(lst)) #2、矩陣操作與線性方程組np_lst = np.array(lst) print(type(np_lst)) # # bool, int, int8, int16, int64 ..., uint8, float, float8 np_list = np.array(lst, dtype = np.float) # 1 numpy property print(np_list.shape) # pirnt: (2, 3) print(np_list.ndim) # pirnt: 2 print(np_list.dtype) # pirnt: float64 print(np_list.itemsize) # pirnt: 8 print(np_list.size) # pirnt: 6 # 2 some arrays print(np.zeros([2, 4])) # print(np.ones([4, 3])) # print("RandNum:") print(np.random.rand(2, 4)) print("RandInt:") print(np.random.randint(1, 10, 3)) print("Randn:") print(np.random.randn(2, 4)) print("Distribute:") print(np.random.beta(1, 10, 100)) # 3 Aarray Opers lst = np.arange(1, 11).reshape([2, -1]) print("Exp") print(np.exp(lst)) print(np.exp2(lst)) print(np.sqrt(lst)) print(np.sin(lst)) print("Log") print(np.log(lst)) lst1 = np.array([10, 20, 30, 40]) lst2 = np.array([1, 2, 4, 5]) print("Add") print(lst1 + lst2) # [11 22 34 45] if __name__ == "__main__": main()
# -*- coding:utf-8 -*- """ @author: Corwien @file: liner.py @time: 17/11/6 00:17 """ import numpy as np # 4 liner from numpy.linalg import * print(np.eye(3)) lst = np.array([[1, 2], [3, 4]]) print("Inv: ") print(inv(lst)) print("T: ") print(lst.transpose()) print("Det:") print(det(lst)) print(eig(lst)) y = np.array([[5.], [7.]]) print("Slove") print(solve(list, y))四、matplotlib
matplotlib 是用來(lái)繪圖表的,官網(wǎng) matplotlib.org
1、正弦和余弦# -*- coding:utf-8 -*- """ @author: Corwien @file: matplo.py @time: 17/11/6 00:44 """ import numpy as np def main(): #line import matplotlib.pyplot as plt x = np.linspace(-np.pi, np.pi, 256, endpoint=True) c, s = np.cos(x), np.sin(x) # 余弦和正弦 plt.figure(1) plt.plot(x, c) plt.plot(x, s) plt.show() if __name__ == "__main__": main()
具有屬性的圖:
# -*- coding:utf-8 -*- """ @author: Corwien @file: matplo.py @time: 17/11/6 00:44 """ import numpy as np def main(): #line import matplotlib.pyplot as plt x = np.linspace(-np.pi, np.pi, 256, endpoint=True) c, s = np.cos(x), np.sin(x) # 余弦,正弦 plt.figure(1) plt.plot(x, c, color="blue", linewidth=1.0, linestyle="-", label="COS", alpha=0.5) # x 自變量, c 余弦 plt.plot(x, s, "r*", label="SIN") plt.title("COS & SIN") ax=plt.gca() ax.spines["right"].set_color("none") ax.spines["top"].set_color("none") ax.spines["left"].set_position(("data", 0)) ax.spines["bottom"].set_position(("data", 0)) ax.xaxis.set_ticks_position("bottom") ax.yaxis.set_ticks_position("left") for label in ax.get_xticklabels()+ax.get_yticklabels(): label.set_fontsize(10) label.set_bbox(dict(facecolor="white", edgecolor="None", alpha=0.2)) plt.legend(loc="upper left") plt.grid() plt.axis([-1, 1, -0.5, 1]) plt.fill_between(x, np.abs(x) < 0.5, c, c > 0.5, color="green",alpha=0.25) t = 1 plt.plot([t, t], [0, np.cos(t)], "y", linewidth=3, linestyle="--") plt.annotate("cos(1)", xy=(t, np.cos(1)), xycoords="data", xytext=(+5, +10), textcoords="offset points", arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.1")) plt.show() if __name__ == "__main__": main()五、scipy
scipy 是一個(gè)數(shù)值計(jì)算庫(kù),官網(wǎng) https//www.scipy.org,
scipy包包含致力于科學(xué)計(jì)算中常見(jiàn)問(wèn)題的各個(gè)工具箱。它的不同子模塊相應(yīng)于不同的應(yīng)用。像插值,積分,優(yōu)化,圖像處理,,特殊函數(shù)等等。
scipy可以與其它標(biāo)準(zhǔn)科學(xué)計(jì)算程序庫(kù)進(jìn)行比較,比如GSL(GNU C或C++科學(xué)計(jì)算庫(kù)),或者M(jìn)atlab工具箱。scipy是Python中科學(xué)計(jì)算程序的核心包;它用于有效地計(jì)算numpy矩陣,來(lái)讓numpy和scipy協(xié)同工作。
在實(shí)現(xiàn)一個(gè)程序之前,值得檢查下所需的數(shù)據(jù)處理方式是否已經(jīng)在scipy中存在了。作為非專(zhuān)業(yè)程序員,科學(xué)家總是喜歡重新發(fā)明造輪子,導(dǎo)致了充滿漏洞的,未經(jīng)優(yōu)化的,很難分享和維護(hù)的代碼。相反,Scipy程序經(jīng)過(guò)優(yōu)化和測(cè)試,因此應(yīng)該盡可能使用。
Integral
Optimize
Interpolation
Liner
Others
1.Integral 積分# -*- coding:utf-8 -*- """ @author: Corwien @file: sciTest.py @time: 17/11/7 00:57 """ import numpy as np def main(): #1--integral from scipy.integrate import quad, dblquad print(quad(lambda x:np.exp(-x), 0, np.inf)) # print: (1.0000000000000002, 5.842606742906004e-11) # print(dblquad(lambda t, x:np.exp(-x*t)/t**3, np.inf.lambda x:1, lambda x:np.inf)) if __name__ == "__main__": main()六、pandas
pandas官網(wǎng) 為了解決數(shù)據(jù)分析而創(chuàng)建的庫(kù)。
基本操作:
# -*- coding:utf-8 -*- """ @author: Corwien @file: pandasTest.py @time: 17/11/7 00:57 """ import numpy as np import pandas as pd def main(): #Data Structure s=pd.Series([i*2 for i in range(1, 11)]) print(type(s)) dates = pd.date_range("20171110", periods=8) df = pd.DataFrame(np.random.randn(8, 5), index = dates, columns=list("ABCDE")) print df if __name__ == "__main__": main()
打印結(jié)果:
A B C D E 2017-11-10 -0.634174 -0.075550 1.029316 0.548124 1.556995 2017-11-11 1.060133 -0.392410 -0.007274 -0.555487 1.350169 2017-11-12 0.443465 -0.635941 -0.194218 0.195767 -0.732606 2017-11-13 0.760449 -0.526587 0.007155 0.554792 -1.230684 2017-11-14 1.624870 -0.304462 0.646139 0.187635 1.537512 2017-11-15 -1.312318 1.145372 -0.226041 -0.463330 0.446066 2017-11-16 -0.586573 0.803408 -1.565312 1.949908 -0.959705 2017-11-17 0.863814 -0.949896 1.880501 -0.032511 -0.116557 Process finished with exit code 0
相關(guān)文章:
Anaconda使用總結(jié)
Python 網(wǎng)頁(yè)爬蟲(chóng) & 文本處理 & 科學(xué)計(jì)算 & 機(jī)器學(xué)習(xí) & 數(shù)據(jù)挖掘兵器譜
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/40986.html
摘要:時(shí)間永遠(yuǎn)都過(guò)得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過(guò)去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:屬于前一種,而且日益被用于數(shù)學(xué)計(jì)算機(jī)器學(xué)習(xí)和多種數(shù)據(jù)科學(xué)應(yīng)用。近來(lái),由于擁有多個(gè)針對(duì)機(jī)器學(xué)習(xí)自然語(yǔ)言處理數(shù)據(jù)視覺(jué)化數(shù)據(jù)探索數(shù)據(jù)分析和數(shù)據(jù)挖掘的插件,豐富的數(shù)據(jù)科學(xué)生態(tài)體系得到了較大的發(fā)展,甚至有將數(shù)據(jù)科學(xué)社區(qū)化的趨勢(shì)。 譯者注:本文的英文原文地址是:Python for Data Science vs Python for Web Development,發(fā)布時(shí)間是10月29日。譯者一...
摘要:關(guān)于的三個(gè)謊言,你一定要清楚。這是的整個(gè)知識(shí)體系圖譜,對(duì)于新手來(lái)說(shuō),沒(méi)必要學(xué)那么多。第四自動(dòng)化測(cè)試一切關(guān)于自動(dòng)化的東西,似乎都可以滿足,可以滿足大多數(shù)自動(dòng)化工作,提升工作效率。這都是正常的,千萬(wàn)別急著否定自己,懷疑自己。 ...
摘要:作者宋天龍來(lái)源科技大本營(yíng)導(dǎo)語(yǔ)一切都始于年的那個(gè)圣誕節(jié),的誕生并不算恰逢其時(shí),它崛起充滿了機(jī)遇巧合,也有其必然性。年的圣誕節(jié),開(kāi)始編寫(xiě)語(yǔ)言的編譯器。年發(fā)布的標(biāo)志著的框架基本確定。年月發(fā)布了系列的最后一個(gè)版本,主版本號(hào)為。 showImg(https://segmentfault.com/img/remote/1460000019862276); 作者 | 宋天龍來(lái)源 | AI科技大本營(yíng) ...
摘要:我們來(lái)看一下美國(guó)相關(guān)專(zhuān)業(yè)人員對(duì)兩者的對(duì)比,只是粗略而不精準(zhǔn)的翻譯一下。小結(jié)其實(shí)在寫(xiě)這篇文章之前,我就問(wèn)過(guò)一下包括清華在內(nèi)的學(xué)校以及一些數(shù)學(xué)專(zhuān)業(yè)的學(xué)生,和還是占主流,但是經(jīng)過(guò)一番調(diào)查發(fā)現(xiàn)在美國(guó)在數(shù)據(jù)科學(xué)數(shù)學(xué)等方面好像漸成壓倒性的優(yōu)勢(shì)。 作為一枚程序員,想要研究Python編程語(yǔ)言與數(shù)學(xué)學(xué)習(xí)(教學(xué))的結(jié)合,就不能不了解以及比對(duì)一下其他數(shù)學(xué)學(xué)習(xí)與應(yīng)用的解決方案,比如R語(yǔ)言、Matlab等數(shù)學(xué)...
摘要:學(xué)習(xí)筆記七數(shù)學(xué)形態(tài)學(xué)關(guān)注的是圖像中的形狀,它提供了一些方法用于檢測(cè)形狀和改變形狀。學(xué)習(xí)筆記十一尺度不變特征變換,簡(jiǎn)稱(chēng)是圖像局部特征提取的現(xiàn)代方法基于區(qū)域圖像塊的分析。本文的目的是簡(jiǎn)明扼要地說(shuō)明的編碼機(jī)制,并給出一些建議。 showImg(https://segmentfault.com/img/bVRJbz?w=900&h=385); 前言 開(kāi)始之前,我們先來(lái)看這樣一個(gè)提問(wèn): pyth...
閱讀 1428·2021-11-22 15:24
閱讀 2519·2021-10-11 11:06
閱讀 2323·2021-10-09 09:45
閱讀 2525·2021-09-09 09:33
閱讀 634·2019-08-30 15:53
閱讀 1439·2019-08-30 12:48
閱讀 657·2019-08-29 13:47
閱讀 500·2019-08-26 18:27