Numpy: 基礎的數學計算模塊,以矩陣爲主,純數學。html
SciPy: 基於Numpy,提供方法(函數庫)直接計算結果,封裝了一些高階抽象和物理模型。比方說作個傅立葉變換,這是純數學的,用Numpy;作個濾波器,這屬於信號處理模型了,在Scipy裏找。html5
Pandas: 提供了一套名爲DataFrame的數據結構,適合統計分析中的表結構,在上層作數據分析。python
來存儲和處理大型矩陣,比Python自身的嵌套列表(nested list structure)結構要高效的多,自己是由C語言開發。這個是很基礎的擴展,其他的擴展都是以此爲基礎。數據結構爲ndarray,通常有三種方式來建立。mysql
基於NumPy 的一種工具,該工具是爲了解決數據分析任務而建立的。Pandas 歸入了大量庫和一些標準的數據模型,提供了高效地操做大型數據集所需的工具。最具備統計意味的工具包,某些方面優於R軟件。數據結構有一維的Series,二維的DataFrame(相似於Excel或者SQL中的表,若是深刻學習,會發現Pandas和SQL類似的地方不少,例如merge函數),三維的Panel(Pan(el) + da(ta) + s,知道名字的由來了吧)。sql
1.彙總和計算描述統計,處理缺失數據 ,層次化索引
2.清理、轉換、合併、重塑、GroupBy技術
3.日期和時間數據類型及工具(日期處理方便地飛起)數組
Python中最著名的繪圖系統,不少其餘的繪圖例如seaborn(針對pandas繪圖而來)也是由其封裝而成。
繪製的圖形能夠大體按照ggplot的顏色顯示,可是仍是感受很雞肋。可是matplotlib的複雜給其帶來了很強的定製性。其具備面向對象的方式及Pyplot的經典高層封裝。網絡
須要掌握的是:
1.散點圖,折線圖,條形圖,直方圖,餅狀圖,箱形圖的繪製。
2.繪圖的三大系統:pyplot,pylab(不推薦),面向對象
3.座標軸的調整,添加文字註釋,區域填充,及特殊圖形patches的使用
4.金融的同窗注意的是:能夠直接調用Yahoo財經數據繪圖數據結構
方便、易於使用、專爲科學和工程設計的Python工具包.它包括統計,優化,整合,線性代數模塊,傅里葉變換,信號和圖像處理,常微分方程求解器等等。基本能夠代替Matlab,可是使用的話和數據處理的關係不大,數學系,或者工程系相對用的多一些。
近期發現有個statsmodel能夠補充scipy.stats,時間序列支持完美dom
一。 數組要比列表效率高不少 numpy高效的處理數據,提供數組的支持,python默認沒有數組。pandas、scipy、matplotlib都依賴numpy。 pandas主要用於數據挖掘,探索,分析 matplotlib用於做圖,可視化 scipy進行數值計算,如:積分,傅里葉變換,微積分 statsmodels用於統計分析 Gensim用於文本挖掘 sklearn機器學習, keras深度學習 二。 numpy和mkl 下載安裝 pandas和maiplotlib網絡安裝 scipy 下載安裝 statsmodels和Gensim網絡安裝 三numpy的操做。 import numpy # 建立數一維數組組 # numpy.array([元素1,元素2,......元素n]) x = numpy.array(['a', '9', '8', '1']) # 建立二維數組格式 # numpy.array([[元素1,元素2,......元素n],[元素1,元素2,......元素n],[元素1,元素2,......元素n]]) y = numpy.array([[3,5,7],[9,2,6],[5,3,0]]) # 排序 x.sort() y.sort() # 取最大值 y1 = y.max() # 取最小值 y2 = y.main() # 切片
四pandas的操做。 import pandas as pda # 使用pandas生成數據 # Series表明某一串數據 index指定行索引名稱,Series索引默認從零開始 # DataFrame表明行列整合出來的數據框,columns 指定列名 a = pda.Series([8, 9, 2, 1], index=['one', 'two', 'three', 'four']) # 以列表的格式建立數據框 b = pda.DataFrame([[5,6,2,3],[3,5,1,4],[7,9,3,5]], columns=['one', 'two', 'three', 'four'],index=['one', 'two', 'three']) # 以字典的格式建立數據框 c = pda.DataFrame({ 'one':4, # 會自動補全 'two':[6,2,3], 'three':list(str(982)) }) # b.head(行數)# 默認取前5行頭 # b.tail(行數)# 默認取後5行尾 # b.describe() 統計數據的狀況 count mean std min 25% max e = b.head() f = b.describe() # 數據的轉置,及行變成列,列變成行 g = b.T
print(e)
print(f)
print(g)
五python數據的導入 import pandas as pad f = open('d:/大.csv','rb') # 導入csv a = pad.read_csv(f, encoding='python') # 顯示多少行多少列 a.shape() a.values[0][2] #第一行第三列 # 描述csv數據 b = a.describe() # 排序 c = a.sort_values() # 導入excel d = pad.read_excel('d:/大.xls') print(d) print(d.describe()) # 導入mysql import pymysql conn = pymysql.connect(host='localhost', user='root', passwd='root', db='') sql = 'select * from mydb' e = pad.read_sql(sql, conn) # 導入html表格數據 須要先安裝 html5lib和bs4 g = pad.read_html('https://book.douban.com/subject/30258976/?icn=index-editionrecommend') # 導入文本數據 h = pad.read_table('d:/lianjie.txt','rb', engine='python') print(h.describe()) 六matplotlib的使用 # 折線圖/散點圖用plot # 直方圖用hist import matplotlib.pylab as pyl import numpy as npy x = [1,2,4,6,8,9] y = [5,6,7,8,9,0] pyl.plot(x, y) #plot(x軸數據,y軸數據,展示形式) # o散點圖,默認是直線 c cyan青色 r red紅色 m magente品紅色 g green綠色 b blue藍色 y yellow黃色 w white白色 # -直線 --虛線 -. -.形式 :細小虛線 # s方形 h六角形 *星星 + 加號 x x形式 d菱形 p五角星 pyl.plot(x, y, 'D') pyl.title('name') #名稱 pyl.xlabel('xname') #x軸名稱 pyl.ylabel('yname') #y軸名稱 pyl.xlim(0,20) #設置x軸的範圍 pyl.ylim(2,22) #設置y軸的範圍 pyl.show() # 隨機數的生成 data = npy.random.random_integers(1,20,100) #(最小值,最大值,個數) # 生成具備正態分佈的隨機數 data2 = npy.random.normal(10.0, 1.0, 10000) #(均值,西格瑪,個數) # 直方圖hist pyl.hist(data) pyl.hist(data2) # 設置直方圖的上限下限 sty = npy.arange(2,20,2) #步長也表示直方圖的寬度 pyl.hist(data, sty, histtype='stepfilled') # 去除輪廓 # 子圖的繪製和使用 pyl.subplot(2, 2, 2) # (行,列,當前區域) x1 = [2,3,5,8,6,7] y1 = [2,3,5,9,6,7] pyl.plot(x1, y1) pyl.subplot(2, 2, 1) # (行,列,當前區域) x1 = [2,3,5,9,6,7] y1 = [2,3,5,9,6,7] pyl.plot(x1, y1) pyl.subplot(2, 1, 2) # (行,列,當前區域) x1 = [2,3,5,9,6,7] y1 = [2,3,9,5,6,7] pyl.plot(x1, y1) pyl.show()