Python資料科學入門-筆記01
Python資料科學入門
慕課網課程學習筆記
學習環境 win10 + 虛擬機器centos7 + python3
第一節 Annconda 基本介紹
一、Anaconda 介紹
1.Anaconda 介紹
Anaconda /,ænə’kɑndə/
Anaconda 是最著名的Python資料科學平臺,750+ 流行的Python&R包
- 跨平臺,開源,免費,活躍社群
- conda:可擴充套件的包管理工具
2.Anaconda 中的 conda
a).Conda 的 Environment 管理
- 建立一個新的environment:conda create –name python34 python=3.4
- 啟用一個 environment:activity python34 # win系統中
source activity python34 # linux中
- 退出enviornment: deactivate python34 # win系統
source deactivate python34 # linux 中
- 刪除 environment: conda remove –name python34 –all
b).Conda 的Package 管理
- Conda 的包管理有點類似 pip
- 安裝一個python包: conda install packageName
- 檢視已安裝包: conda list / conda list -n python34 # 檢視指定環境的包列表
- 刪除一個 python 包: conda remove -n python34 numpy
c). IDE 比較
拓展:從IPython 到 Jupyter
d). 什麼是 Ipython
- ipython 是一個強大的 互動式 shell
- 是 Jupyter 的kernel
- 支援互動式資料分析和視覺化
- Ipython kernel 主要負責執行使用者程式碼,通過stdin/stdut 和ipython shell互動
用 json message 通過 ZeroMQ 和 notebook 互動
e). 什麼是 Jupyter Notebook
- 前身是 ipython notebook
- 是一個開源的 web application
- 可以建立和分享包含程式碼,檢視,註釋文件
- 可以用於統計資料統計,分析,建模,機器學習等領域
f).notebook 和 Kernel 之間的互動
- 核心是 notebook server
- notebook server 載入和儲存 notebook
g).Notebook 的檔案格式 .ipynb
- 由 Ipython Notebook 定義的一種格式(json)
- 可以讀取線上資料,csv / xls 檔案
- 可以轉換成其他格式(py,html,pdf,md)
h).檢視 .ipynb 檔案 NBViewer
- 一個 online 的 ipynb 格式 notebook 展示工具
- 可以通過 URL 分享
- GitHub 集成了 NBViewer
- 通過轉換器輕鬆整合到 Blogs , emails,wikis ,books
二.環境安裝
1.安裝Anaconda 到 Centos7
官網下載好 Anaconda的 .sh 檔案後
使用SecureCRT的sftp上傳到 centos 中
sftp 的一些命令:lpwd 檢視本地物理機所在目錄,cld 進入本地目錄,put 上傳檔案到 遠端機
- 上傳 安裝檔案後,使用 sh 命令按提示安裝 Anaconda
2.Anaconda 基本命令
- conda –version 檢視版本號
- jupyter notebook –no-browser 只啟動 服務,不啟動瀏覽器
3.ssh 虛擬機器 埠轉發 到本地物理機
如果是桌面版 centos 可直接在虛擬機器裡訪問即可
或者本地機安裝直接使用
可以將遠端伺服器一個埠remote_port繫結到本地埠port,其中-C是進行資料壓縮,-f是後臺操作,只有當提示使用者名稱密碼的時候才轉向前臺。-N是不執行遠端命令,在只是埠轉發時這條命令很有用處。-g 是允許遠端主機連線本地轉發埠。-R表明是將遠端主機埠對映到本地埠。如果是-L,則是將本地埠對映到遠端主機埠。
- win10 下安裝 openSSH
- 安裝好後 開啟 進入 其 bin 目錄下執行命令來實現轉發
轉發命令:(注意引數對應)
- 轉發到遠端:ssh -C -f -N -g -L 本地埠:目標IP:目標埠 使用者名稱@目標IP
- 轉發到本地:ssh -C -f -N -g –R 本地埠:目標IP:目標埠 使用者名稱@目標IP
- ssh -C -f -N -g -D listen_port [email protected]/ip
接著瀏覽器訪問:
三.jupyter 的使用
1.登入
2.新建 notebook
3.操作演示
4.win 系統下啟動 jupyter 服務
5.一些基本操作
第二節 資料科學領域的幾個常用Python庫
資料科學領域 5個 常用Python庫
Numpy/Scipy/Pandas/Matplotlib/Scikit-learn
1.Numpy 特點
- N維陣列(矩陣),快速高效,向量數學運算
- 高效的Index,不需要迴圈
- 開源免費跨平臺,執行效率足以和 C/Matlab 媲美
2.Scipy 特點
- 依賴於Numpy
- 專門為科學和工程設計
- 實現了多種常用科學計算:線性代數,傅立葉變換,訊號和影象處理
3.Pandas 特點
- 結構化資料分析利器(依賴於Numpy)
- 提供多種高階資料結構:Time-Series,DataFrame,Panel
- 強大的資料索引和資料處理能力
4.Matplotlib 特點
- Python 2D繪圖領域使用最廣泛的套件
- 基本能取代Matlab的繪圖功能(散點,曲線,柱形等)
- 通過 mplot3d 可以繪製精美的 3D 圖
5.Scikit-learn 特點
- 機器學習的 Python 模組
- 建立在 Scipy 之上,提供了常用的機器學習演算法:聚類,迴歸
- 簡單易學的API介面
- 另外還有 google 的TensorFlow
第三節 Numpy 入門
1.矩陣回顧
- 基本概念:
- 矩陣:矩形的陣列,即二維陣列。其中向量和標量都是矩陣的特例
- 向量:是指 1 * n 或者 n * 1 的矩陣
- 標量:1 * 1 的矩陣
- 陣列:N 維的陣列,是矩陣的延伸
- 特殊矩陣
- 全 0 、全 1 矩陣
- 單位矩陣
矩陣加減運算兩個矩陣必須要有相同的行和列
- 相加/減的
- 行和列對應元素相加減
陣列乘法(點乘)
- 陣列乘法是對應元素之間的乘法
- 陣列乘法是對應元素之間的乘法
- 矩陣乘法只有當矩陣 A的列數與矩陣 B的行數相等時 A× B才有意義
- 設A為b x p的矩陣, B 為p x n的矩陣,
m * n的矩陣 C 為A與B的乘積,記 C=AB,其中矩陣C中的第 i 行第 j 列元素可以表示為:
- 設A為b x p的矩陣, B 為p x n的矩陣,
2.陣列的建立和訪問
陣列的建立和訪問
import numpy as np
# 建立 列表
list_1 = [1,2,3,4]
list_1
[1, 2, 3, 4]
array_1 = np.array(list_1) #建立一維陣列
array_1
array([1, 2, 3, 4])
list_2 = [5,6,7,8]
array_2 = np.array([list_1,list_2]) # 建立二維陣列
array_2
array([[1, 2, 3, 4],
[5, 6, 7, 8]])
array_2.shape # 返回陣列 維數
(2, 4)
array_2.size # 返回陣列元素個數
8
array_2.dtype # 返回陣列元素型別 (這裡的元素型別一致)
dtype('int32')
array_3 = np.array([[1.0,2,3],[4.0,5,6]]) # 資料型別不同的陣列
array_3.dtype # 資料型別不一致,取精確度最高的
dtype('float64')
通過函式建立矩陣
array_4 = np.arange(1,10) # 通過arange() 函式建立 陣列
array_4 # np.arange(始,終,步長)
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
np.zeros(5) # 一維全 0 矩陣
array([0., 0., 0., 0., 0.])
np.zeros([2,3]) # 二維全 0 矩陣
array([[0., 0., 0.],
[0., 0., 0.]])
np.eye(5) # 5 * 5 單位矩陣
array([[1., 0., 0., 0., 0.],
[0., 1., 0., 0., 0.],
[0., 0., 1., 0., 0.],
[0., 0., 0., 1., 0.],
[0., 0., 0., 0., 1.]])
陣列元素的訪問
a = np.arange(1,10)
a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
a[1]
2
a[1:5] # 訪問2到5元素
array([2, 3, 4, 5])
b = np.array([[1,2,3],[4,5,6]])
b
array([[1, 2, 3],
[4, 5, 6]])
b[1][2] # 訪問二維陣列 注意起始是 0 或者 b[1,0]
6
c = np.array([[1,2,3],[4,5,6],[7,8,9]])
c
array([[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
c[:2,1:] # 二維陣列的切片操作
array([[2, 3],
[5, 6]])
3.陣列和矩陣運算
快速建立陣列
import numpy as np
np.random.randn(10) # 符合標準正態分佈
array([-0.44773486, -1.02510785, -1.29485893, -1.26046504, 0.62437175,
-0.32248227, -0.64261711, 0.79787437, 2.40994751, 0.83609302])
np.random.randint(10) # 隨機返回一個 10 以內的數
6
np.random.randint(10,size=(2,3)) # 返回 10 以內的 2 行 3 列 陣列
array([[0, 3, 2],
[5, 4, 6]])
np.random.randint(10,size=20).reshape(4,5) # 將 20 個元素的一維變為 二維
array([[3, 5, 9, 8, 4],
[4, 6, 1, 8, 8],
[2, 4, 5, 6, 9],
[2, 5, 4, 7, 6]])
陣列運算
a = np.random.randint(10,size=20).reshape(4,5)
a
array([[2, 6, 4, 3, 2],
[0, 6, 3, 4, 0],
[8, 1, 1, 5, 6],
[5, 0, 0, 1, 9]])
b = np.random.randint(10,size=20).reshape(4,5)
b
array([[4, 4, 7, 3, 3],
[2, 4, 2, 1, 5],
[8, 8, 8, 8, 1],
[0, 9, 1, 9, 4]])
a + b
array([[ 6, 10, 11, 6, 5],
[ 2, 10, 5, 5, 5],
[16, 9, 9, 13, 7],
[ 5, 9, 1, 10, 13]])
a - b
array([[-2, 2, -3, 0, -1],
[-2, 2, 1, 3, -5],
[ 0, -7, -7, -3, 5],
[ 5, -9, -1, -8, 5]])
a * b
array([[ 8, 24, 28, 9, 6],
[ 0, 24, 6, 4, 0],
[64, 8, 8, 40, 6],
[ 0, 0, 0, 9, 36]])
a / b # 遇到 被除數為 0 時 --- inf
C:\myapp\Anaconda3\lib\site-packages\ipykernel_launcher.py:1: RuntimeWarning: divide by zero encountered in true_divide
"""Entry point for launching an IPython kernel.
array([[0.5 , 1.5 , 0.57142857, 1. , 0.66666667],
[0. , 1.5 , 1.5 , 4. , 0. ],
[1. , 0.125 , 0.125 , 0.625 , 6. ],
[ inf, 0. , 0. , 0.11111111, 2.25 ]])
建立矩陣
np.mat([[1,2,3],[4,5,6]])
matrix([[1, 2, 3],
[4, 5, 6]])
a
array([[2, 6, 4, 3, 2],
[0, 6, 3, 4, 0],
[8, 1, 1, 5, 6],
[5, 0, 0, 1, 9]])
np.mat(a) # 陣列轉換為矩陣
matrix([[2, 6, 4, 3, 2],
[0, 6, 3, 4, 0],
[8, 1, 1, 5, 6],
[5, 0, 0, 1, 9]])
矩陣的運算
A = np.mat(a)
A
matrix([[2, 6, 4, 3, 2],
[0, 6, 3, 4, 0],
[8, 1, 1, 5, 6],
[5, 0, 0, 1, 9]])
B = np.mat(b)
B
matrix([[4, 4, 7, 3, 3],
[2, 4, 2, 1, 5],
[8, 8, 8, 8, 1],
[0, 9, 1, 9, 4]])
A + B
matrix([[ 6, 10, 11, 6, 5],
[ 2, 10, 5, 5, 5],
[16, 9, 9, 13, 7],
[ 5, 9, 1, 10, 13]])
A * B # 只有當矩陣 A的列數與矩陣 B的行數相等時 A× B才有意義
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-28-a4cedde81ed0> in <module>()
----> 1 A * B
C:\myapp\Anaconda3\lib\site-packages\numpy\matrixlib\defmatrix.py in __mul__(self, other)
307 if isinstance(other, (N.ndarray, list, tuple)) :
308 # This promotes 1-D vectors to row vectors
--> 309 return N.dot(self, asmatrix(other))
310 if isscalar(other) or not hasattr(other, '__rmul__') :
311 return N.dot(self, other)
ValueError: shapes (4,5) and (4,5) not aligned: 5 (dim 1) != 4 (dim 0)
a = np.mat(np.random.randint(10,size=20).reshape(4,5))
a
matrix([[3, 4, 1, 5, 2],
[3, 7, 8, 7, 3],
[4, 2, 6, 9, 6],
[4, 4, 5, 2, 7]])
b = np.mat(np.random.randint(10,size=20).reshape(5,4))
b
matrix([[9, 6, 0, 4],
[4, 3, 6, 5],
[4, 6, 1, 8],
[4, 4, 3, 5],
[2, 1, 1, 1]])
a * b
matrix([[ 71, 58, 42, 67],
[121, 118, 74, 149],
[116, 108, 51, 125],
[ 94, 81, 42, 93]])
Array 常用函式
a = np.random.randint(10,size=20).reshape(4,5)
np.unique(a) # 返回 不重複的值
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
a
array([[0, 5, 3, 2, 7],
[8, 0, 1, 7, 6],
[2, 0, 9, 8, 2],
[7, 1, 2, 9, 4]])
sum(a) # 返回一個數組 列和
array([17, 6, 15, 26, 19])
sum(a[0]) # 返回某一行和
17
sum(a[:,1]) # 返回某一列和
6
a.max() # 返回最大值
9
max(a[0]) # 第 0 行最大值
7
Array 的 input 和 output
使用pickle序列化 bumpy array
import pickle
import numpy as np
x = np.arange(10)
x
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
f = open('x.pkl','wb')
pickle.dump(x,f)
!ls
Array.ipynb
Untitled.ipynb
x.pkl
鏁扮粍涓庣煩闃佃繍綆�.ipynb
f = open('x.pkl','rb')
pickle.load(f)
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
### 使用 save 函式序列化儲存
np.save('one_array',x)
!ls
Array.ipynb
Untitled.ipynb
one_array.npy
x.pkl
鏁扮粍涓庣煩闃佃繍綆�.ipynb
np.load('one_array.npy')
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.arange(20)
y
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
np.savez('two_array.npz',a=x,b=y)
!ls
Array.ipynb
Untitled.ipynb
one_array.npy
two_array.npz
x.pkl
鏁扮粍涓庣煩闃佃繍綆�.ipynb
c = np.load('two_array.npz') # 多個
c['a']
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
c['b']
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])
相關推薦
Python資料科學入門-筆記01
Python資料科學入門 慕課網課程學習筆記 學習環境 win10 + 虛擬機器centos7 + python3 第一節 Annconda 基本介紹 一、Anaconda 介紹 1.Anaconda 介紹 Anaconda
Python資料科學入門-(Pandas)筆記02
第四節 Pandas 入門 慕課網python數科學入門課程學習筆記 一. Series 序列 import numpy as np import pandas as pd s1 = pd.Series([1,2,3,4]) # 建立
Python資料科學入門(matplotlib)筆記04
Python資料科學入門學習筆記——Matloptlib 什麼是matloptlib matloptilib是一個Python包,用於2D繪圖,3D繪圖也可以安裝額外的包,強大流行,有很多擴充套件。
Python資料科學入門(seaborn)筆記05
Python資料科學入門筆記05——seaborn seaborn 是matplotlib的擴充套件 一、seaborn 實現直方圖和密度圖 import numpy as np import p
python資料科學入門與分析
python資料科學入門與分析 第二章 資料科學的Python核心 基本的內建str函式 1.print("hello".capitalize());將第一個字元轉化為大寫,其他字元轉化為小寫 2.print("hello world ".strip());
Python 資料科學入門
不需要昂貴的工具即可領略資料科學的力量,從這些開源工具起步即可。 無論你是一個具有數學或電腦科學背景的資深資料科學愛好者,還是一個其它領域的專家,資料科學提供的可能性都在你力所能及的範圍內,而且你不需要昂貴的,高度專業化的企業級軟體。本文中討論的開源工具就是你入門時
Python 資料科學入門教程:Matplotlib
Matplotlib 入門教程 第一章 Matplotlib 簡介 歡迎閱讀 Python 3+ Matplotlib 系列教程。 在本系列中,我們將涉及 Matplotlib 資料視覺化模組的多個方面。 Matplotlib 能夠建立多數型別的
Python 資料科學入門教程:Pandas
Python 和 Pandas 資料分析教程 大家好,歡迎閱讀 Python 和 Pandas 資料分析系列教程。 Pandas 是一個 Python 模組,Python 是我們要使用的程式語言。Pandas 模組是一個高效能,高效率,高水平的資料分析庫。
Python 《資料科學入門》 讀書筆記第四章 2018-8-2011:30開始
接著看這本書。。看到第三章的時候,腦闊又疼了。用的時候再說吧,而且R軟體功能很強大。蹦過去了。 接著到了第四章。我一想說第四章講的線性代數。。我特麼高等代數都學過還看這個幹嘛啊。 又到了第五章,將統計,我說真巧,我就是統計專業的。 又到了第六章,一看,哇概率論,他咋知道我的專業是概率論與
python《資料科學入門》學習筆記第二章 2018-8-17開始
昨天早晨發現新買不到一週的自行車被偷了,我的2000大洋啊,心在滴血,小偷我草你媽,去學校安保處與派出所報警也花了一上午,下午接到朋友電話,被告知那個她找了新的男朋友,生活真是日了狗了。苟延殘喘。 經過三個來月的python程式設計,雖然能夠寫一些複雜的演算法。但是編寫速度很慢,原因是基本功不紮
python資料科學--numpy入門
numpy庫是python中用於科學計算的核心庫,它提供了一個高效能的多維陣列物件,以及用於處理這些陣列的工具。 匯入numpy模組 import numpy as np 建立陣列 a=np.array([1,2,3]) #建立一維陣列 b=np.array([(1.5
python資料科學--pandas入門
pandas庫建立在numpy之上,為python程式語言提供了易於使用的資料結構和資料分析工具 匯入pandas模組 import pandas as pd pandas資料結構:Series,能夠儲存任何資料型別的一維陣列 DataFrame:可以儲存不同資料型別的二維陣列
Python資料科學手冊學習筆記
Numpy入門 檢視numpy版本 import numpy numpy.__version__ 2.匯入numpy的匯入 import numpy as np 3.建立陣列 import nu
Python資料分析學習筆記(1)numpy模組基礎入門
numpy模組可以進行高效的資料處理,並提供了陣列的支援,很多模組都依賴他,比如pandas、scipy、matplotlib等,因此這個模組是基礎。 (1)匯入: import numpy (2)建立一維和二維陣列: #建立一維陣列 x=numpy.
《Python資料科學手冊》第二章 Numpy入門2.1—2.3
2.1 理解Python中的資料型別 Python的使用者被其易用性所吸引,其中一個易用之處就在於動態輸入,即在Python中,型別是動態推斷的。這意味著可以將任何型別的資料指定給任何變數。但是這種型別靈活性也指出了一個事實: Python
Numpy入門——Python資料分析mooc筆記
資料 一個數據,表達一個含義 一組資料,表達一個或多個含義 列表和陣列 列表:資料型別可以不同 陣列:資料型別相同 Python已有列表型別,為什麼需要一個數組物件(型別)? 陣列物件可以去掉元素間運算所需的迴圈,使一維向量更像單個數據
python資料結構學習筆記-2017-01-08-01-N皇后問題、迷宮問題和跳馬問題的遞迴解決
N皇后問題 棋盤ADT #-*-coding: utf-8-*- # 二維陣列實現棋盤ADT from myarray2d import Array2D class Board(object): def __init__(se
《Python資料科學手冊》高清中文版PDF+高清英文版PDF+原始碼
下載:https://pan.baidu.com/s/1RDTQxG3vjG2xGsX4Mx-5KA 最新出版的《Python資料科學手冊》。 《Python資料科學手冊》高清中文版PDF+高清英文版PDF+原始碼 高清中文版PDF,474頁,帶目錄和書籤,能夠複製貼上;高清英文版PDF,548頁,帶目
Python資料科學手冊 pdf 中文版下載
Python語言擁有大量可用於儲存、操作和洞察資料的程式庫,已然成為深受資料科學研究人員推崇的工具。本書以IPython、NumPy、Pandas、Matplotlib和Scikit-Learn這5個能完成資料科學大部分工作的基礎工具為主,從實戰角度出發,講授如何清洗和視覺化資料、如何用資料建
Python資料科學手冊電子書
原文:http://www.sohu.com/a/156357633_642762 Preface https://nbviewer.jupyter.org/github/jakevdp/PythonDataScienceHandbook/blob/mas