天天看點

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

Python金融大資料挖掘與分析全流程詳解 點選檢視第二章 點選檢視第三章

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
王宇韬 房宇亮 肖金鑫 編著

第1章

Python基礎

千裡之行,始于足下。在利用Python開發各種精彩的項目前,我們需要對Python的基礎知識有一個基本的了解。基礎知識看似簡單,卻是各種複雜代碼的基石,隻有将基礎打紮實,在之後的進階學習中才能更加遊刃有餘。

1.1 Python安裝與第一個Python程式

本節首先介紹Python的安裝,然後帶領大家編寫第一個Python程式,以此打開Python程式設計的大門。同時還将介紹PyCharm編譯器的安裝及使用注意事項。

1.1.1 安裝Python

學習Python的第一步是什麼?自然是安裝Python了。這裡介紹一種非常友善的安裝方法—Anaconda安裝。Anaconda是Python的一個發行版本,安裝好了Anaconda就相當于安裝好了Python,并且裡面還內建了很多關于Python科學計算的第三方庫。

在浏覽器中打開Anaconda的官網下載下傳位址:

https://www.anaconda.com/download/

,或者在搜尋引擎中搜尋Anaconda,進入官網,根據目前作業系統配置選擇相應的版本下載下傳即可。這裡選擇Windows系統的Python 3.7版本,如下圖所示,預設版本是64位的。如果作業系統是32位的,那麼選擇32位的版本下載下傳即可。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

輕按兩下下載下傳好的安裝檔案,進入安裝界面。建議不要改變預設安裝路徑(防止可能出現的安裝問題),然後在彈出的界面中單擊多次“Next”按鈕。安裝到如下圖所示的界面時,注意一定要勾選第一個複選框,其作用相當于自動配置好環境變量,對初學者來說比較友善。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果彈出的界面中詢問是否安裝Microsoft VSCode(Install Microsoft VSCode),單擊“Skip”按鈕跳過即可。最後單擊“Finish”按鈕,完成安裝。

1.1.2 編寫第一個Python程式

安裝完Python,大家是不是有點躍躍欲試了呢?下面就來編寫第一個Python程式。

安裝Anaconda的同時就已經安裝了一些不錯的IDE(指內建開發環境,也就是用于編寫及運作代碼的應用程式),如Spyder、Jupyter Notebook。後面會介紹另一款IDE軟體—PyCharm。這裡先使用Spyder編寫程式。

在“開始”菜單中找到并展開Anaconda的程式組,單擊其中的Spyder即可運作該程式。打開Spyder後,界面如下圖所示。左邊框内是輸入代碼的地方,右邊框内是輸出代碼運作結果的地方,上方的綠色箭頭是運作代碼的按鈕,在Spyder中,也可以按F5鍵運作代碼。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

将輸入法切換到英文輸入模式,在左邊輸入代碼的地方輸入:

print('hello world')           

需要注意的是,輸入時必須切換到英文模式,其中的單引号可以換成雙引号。

然後單擊上方的按鈕(或按F5鍵),在右邊就可以看到輸出結果“hello world”,如下圖所示。讀者可以試試把“hello world”改成其他内容,看看會有怎樣的輸出結果。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

1.1.3 PyCharm的安裝與使用

PyCharm也是一種Python的IDE,其功能與Spyder大緻相同,可以用來編寫和運作程式。PyCharm的界面比較美觀,而且功能也很強大。下面就來為大家介紹PyCharm的安裝和配置步驟。

PyCharm的官網下載下傳位址為:

https://www.jetbrains.com/pycharm/download/

,選擇免費版(Community版)下載下傳安裝即可,如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

輕按兩下下載下傳好的安裝檔案即可開始安裝。安裝過程中,在大多數界面單擊“Next”按鈕和“Install”按鈕即可,其中下圖所示的界面要勾選兩個複選框,以選擇64位的安裝版本及關聯字尾名為.py的Python檔案。目前的PyCharm版本(2019.1版)不再支援32位作業系統(在

下載下傳頁面左側單擊“System requirements”連結可檢視系統要求),32位作業系統可單擊下載下傳頁面左側的“Previous versions”連結,下載下傳2018.3版PyCharm,該版本支援32位作業系統。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

單擊“Install”按鈕後,等待程式安裝,最後單擊“Finish”按鈕即可完成安裝。

初次啟用PyCharm時需要注意以下事項。

第一步:單擊“Do not import settings”單選按鈕,如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

第二步:選擇頁面風格,建議選擇預設的黑色風格。

第三步:選擇輔助工具,直接跳過,不做任何設定。

第四步:單擊“Create New Project”按鈕,建立Python項目。

第五步:為項目檔案夾命名,這一步要展開“Project Interpreter”選項組,單擊“Existing interpreter”單選按鈕,如下圖所示,這樣可以配置之前安裝的Anaconda運作環境。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果上圖中的“Interpreter”後顯示“”,則單擊右側的按鈕,在彈出的對話框左側選擇“System Interpreter”選項,可以在右側看到“Interpreter”清單框中顯示為“×××Anacondapython.exe”,如下圖所示,然後單擊“OK”按鈕。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

傳回項目建立對話框,單擊“Create”按鈕即可建立新的Python項目。

執行“File>New Project”菜單指令也可以建立項目,然後重複上述步驟。在設定“Project Interpreter”時注意選擇“Existing interpreter”選項。

第六步:關閉彈出的官方提示後,等待最下面的Index緩沖完畢,如下圖所示。緩沖的過程其實是在配置Python的運作環境。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

第七步:Index緩沖完畢後即可建立Python檔案。右擊之前建立的項目檔案夾,在彈出的快捷菜單中執行“New>Python File”菜單指令,如下圖所示。将新的Python檔案命名為“hello world”。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

第八步:建立Python檔案後,在代碼輸入框中輸入print('hello world'),其中的單引号可換成雙引号。在标題欄上或代碼輸入框内右擊,在彈出的快捷菜單中選擇“Run 'hello world'”指令,如下圖所示,這樣就能運作程式并在下方輸出“hello world”。注意,如果Index緩沖沒有結束,右鍵菜單中可能看不到“Run 'hello world'”指令,因為運作環境還沒配置完畢。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

單擊界面右上角的按鈕或按快捷鍵Shift+F10也可以運作程式。

這裡再介紹一下PyCharm的字型大小等設定。執行“File>Settings”指令,在“Settings”對話框的左側選擇“Editor”選項組下的“Font”選項,在展開的右側面闆中,“Size”用于設定字型的顯示大小,“Line spacing”用于設定行距,如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

知識點

PyCharm使用常見問題

Q1:為什麼我第一次打開要等很久,才能進行下一步操作?

A1:第一次打開的時候都有一段等待緩沖的時間,特别是第一次安裝的時候,等待最下面的Index緩沖完,再進行之後的操作就沒有問題啦。

Q2:為什麼重新打開PyCharm的時候顯示沒有配置interpreter(運作環境)?如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

A2:這是因為每次重新打開PyCharm時,它都預設建立了一個新的project(項目),Python檔案是屬于這個project的,如果這個project沒有運作環境,Python檔案也沒有辦法運作,那麼這個時候需要配置運作環境。

解決方法:單擊上圖右側的“Configure Python interpreter”(配置Python編譯器,即配置運作環境),或者執行“File>Settings”菜單指令,進入設定Project Interpreter的界面,如下圖所示。在圖中可以看到“Project Interpreter”清單框中顯示的是“”,這就是為什麼每次重新打開PyCharm之後,PyCharm總是顯示沒有配置運作環境,因為PyCharm預設的運作環境為空。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

首先講治标的方法:進入上圖中的界面後,單擊右側的按鈕,在彈出的菜單中選擇“Show All”指令,然後選擇下圖所示的運作環境。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

再講治本的方法:修改PyCharm的預設運作環境設定。執行“File>Other Settings”菜單指令,選擇其中的“Settings for New Projects”指令(有的老版本為“Default Settings”指令),如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

然後選擇“Project Interpreter”,選擇已有的interpreter,再單擊右下角的“Apply”按鈕,然後單擊“OK”按鈕,這樣預設的interpreter就被關聯上了。這裡配置的是預設設定,而不是單個項目的設定,是以以後打開PyCharm時就再也不用配置運作環境了。

1.2 Python基礎知識

安裝完Python之後,下面來學習Python的基礎知識。這些基礎知識都是後面具體項目實戰的基石,大家需好好掌握。

1.2.1 變量、行、縮進與注釋

代碼檔案:1.2.1 變量、行、縮進與注釋.py

本小節主要講解變量、行、縮進與注釋的一些基礎内容。注意在Python中輸入代碼時一定要切換到英文模式。

1.變量

變量相當于一個代号。國中數學學過的一次函數y=x+1,其中,x就是變量(稱為自變量),y也是變量(稱為因變量)。變量的命名必須以字母或下畫線開頭,後面可以跟任意數量的字母、數字、下畫線的組合。本書建議用英文字母開頭,如a、b、c、a_1、b_1等。注意兩點:第一,不要用Python的保留字或内置函數來命名變量,例如,不要用print來命名變量,因為它與内置函數print()重名;第二,變量的命名對英文字母區分大小寫,如D和d是兩個不同的變量。

“=”符号可以給變量指派,示範代碼如下:

x = 10
print(x)
y = x + 15
print(y)           

第1行代碼表示将10指派給變量x,第2行代碼表示輸出變量x的值,第3行代碼表示将x的值加上15後指派給變量y,第4行代碼表示輸出變量y的值。

執行該程式,輸出結果如下:

10

25

print()函數

print()函數用于将結果列印輸出,以後會經常用這個函數來輸出結果。

2.行

在Python中,代碼都是一行一行輸入的,輸入完一行後按Enter鍵即可換行。

3.縮進

縮進是Python中非常重要的一個知識點,它類似于Word的首行縮進。縮進的快捷鍵是Tab鍵,在if、for、while等語句中都會用到縮進。先來看下面的代碼:

x = 10
if x > 0:
    print('正數')
else:
    print('負數')           

第2~5行代碼是之後會講到的if判斷語句。其實判斷語句很簡單,if表示“如果”,将上面的代碼翻譯成中文就是:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

在輸入第3行和第5行代碼之前必須按Tab鍵來縮進,否則運作程式時會報錯。

如果要減小縮進量,可以按快捷鍵Shift+Tab。如果要同時對多行代碼調整縮進量,可以選擇多行代碼,按Tab鍵統一增加縮進量,再按快捷鍵Shift+Tab統一減小縮進量。

4.注釋

注釋也叫批注,大多起提示作用,運作程式時會直接跳過注釋。注釋方法主要有兩種:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

可以手動輸入#或''',也可以用快捷鍵來添加注釋。在PyCharm中,添加注釋的快捷鍵是Ctrl+/;在Spyder中,添加注釋的快捷鍵是Ctrl+1。選擇多行代碼後按注釋快捷鍵,可以将選中的代碼批量轉換為注釋。

1.2.2 資料類型:數字與字元串

代碼檔案:1.2.2 資料類型:數字與字元串.py

Python中有6種資料類型:數字、字元串、清單、字典、元組、集合。其中前4種資料類型用得相對較多,本小節先介紹數字和字元串。

數字和字元串的核心知識點是需要知道1和'1'是兩種不同的資料類型。前者是一個數字,可以進行加減乘除的操作;而後者則是一個字元串,也就是常說的文本内容。字元串的最大特點就是在它的兩旁有單引号或雙引号,示範代碼如下所示:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

不同的資料類型是不能互相運算的,例如:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼在運作時會報錯:unsupported operand type(s) for +: 'int' and 'str'(不同類型的資料無法直接運算)。

如何擷取和轉換變量的類型

用type()函數可以顯示變量的類型,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

輸出結果如下,表明第一個變量是int格式(整數格式),第二個變量是str格式(字元串格式)。數字類型除了int格式外,還有float格式(浮點數格式,即小數格式)。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

通過str()函數可以把數字轉換成字元串,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

将變量c通過print()函數輸出,結果如下,可以看到實作了字元串拼接的效果。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

通過int()函數可以把字元串轉換成數字,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

以上代碼的輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

1.2.3 資料類型:清單與字典、元組與集合

代碼檔案:1.2.3 資料類型:清單與字典.py

清單(list)和字典(dictionary)是用來存儲内容的容器,在Python中經常會用到。

1.清單

(1)清單入門

清單就像一個容器,可以将不同的資料存儲到裡面并進行調用。例如,一個班級裡有5名學生,需要有一個容器把他們的姓名放在一起,可以采用如下所示的清單格式:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

其中清單的格式為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

清單裡的元素可以是字元串,也可以是數字,甚至可以是另外一個清單。下面的清單就含有三種元素:數字1、字元串'123'、清單[1, 2, 3]。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

利用for循環語句可以周遊清單中的所有元素,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

(2)統計清單的元素個數

有時需要統計清單裡一共有多少個元素(又叫擷取清單的長度),可以使用len()函數。len()函數的一般格式為:len(清單名)。示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

清單class1有5個元素,是以程式輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

(3)調取清單的單個元素

通過在清單名之後加上“[序号]”調取單個元素,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

有些讀者可能會有疑問,這裡class1[1]調取的為什麼不是“丁一”呢?因為在Python中序号都是從0開始的,是以用class1[0]才能調取“丁一”。如果想調取清單中的第5個元素“趙五”,那麼對應的序号就是4,相應的代碼則是print(class1[4])。

(4)清單切片

如果想選取清單中的幾個元素,如選取上述class1中的第2~4個元素,就要用到“清單切片”的方法,一般格式為:清單名[序号1:序号2]。其中,序号1可以取到,而序号2則取不到,俗稱“左閉右開”,加上前面提到的在Python中序号都是從0開始的,是以第2個元素的序号為1,第5個元素的序号為4,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

其中,序号1的元素“王二”是可以取到的,而序号4的元素“趙五”則是取不到的,是以最後的輸出結果為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

有時不确定序号1或序号2,可以采用隻寫一個序号的方式,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

a、b、c的列印輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

(5)添加清單元素

使用append()函數可以給清單添加元素,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼的輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

此時如果又有一個新的元素需要添加,可以使用append()函數繼續添加,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

此時的score清單列印輸出結果如下所示,這樣就在原清單基礎上新增了一個元素。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

這個操作在實戰中經常會用到。例如,在之後章節的資料評分中,因為并不清楚有多少個資料,就可以用append()函數把這些資料一個個加上去。

(6)清單與字元串之間的轉換

清單與字元串之間的轉換在文本篩選中有很大的作用,後面會詳細介紹,這裡先大緻了解一下。例如,要把清單class1轉換成一個字元串'丁一,王二,張三,李四,趙五',可以用下面的方式:

其中,引号(單引号、雙引号皆可)中的内容是字元之間的連接配接符,如“,”“;”等。

是以,若要把class1轉換成一個用逗号連接配接的字元串,代碼為:','.join(class1)。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果把逗号換成空格,那麼輸出的就是“丁一 王二 張三 李四 趙五”。

字元串轉為清單主要用的是split()函數,括号裡的内容為分割符号,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

輸出結果如下,注意這裡使用的分割符号為文字之間的空格。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

2.字典

字典是另一種資料存儲的方式。例如,class1裡的每個人都有一個數學考試分數,想把他們的姓名和分數一一比對到一起,那麼就需要用字典來存儲資料。字典的基本格式如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

在字典中,每個元素都有兩個部分(而清單中每個元素隻有一個部分),前一個部分稱為鍵,後一個部分稱為值,中間用冒号相連。

鍵相當于一把鑰匙,值相當于一個箱子,一把鑰匙對應一個箱子。那麼對于class1裡的每個人來說,一個人的姓名對應一個分數,相應的字典寫法如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果要提取字典中的某一個元素的值,可以通過如下格式實作:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

例如,擷取王二的分數,可以通過如下代碼實作:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果想把每個人的姓名和分數都列印出來,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

這裡的i是字典裡的鍵,也就是“丁一”“王二”等内容,class1[i]輸出的就是值,即這些人的分數。因為分數為數字格式,在進行字元串拼接時需要通過str()函數進行轉換。輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

另外一種周遊字典的方法是通過字典的items()函數,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

其輸出結果如下所示,通過items()函數傳回的是可周遊的(鍵,值)元組數組。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

除了清單和字典外,還有兩種存儲内容的方式:元組(tuple)和集合(set)。

元組的定義和使用方法與清單非常類似,差別在于清單的符号是中括号[],而元組的符号是小括号(),并且元組中的元素不可修改,元組的示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

運作結果如下,可以看到它選取元素的方法和清單是一樣的。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

集合是一個無序不重複的序列,和清單也比較類似,用于存儲不重複資料。通過大括号{}或set()函數建立集合,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

運作結果如下,可以看到通過set()函數獲得了一個集合,删除了重複的内容。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

相對于清單和字典,元組和集合用得較少。

1.2.4 運算符

代碼檔案:1.2.4 運算符介紹與實踐.py

運算符主要用于将資料(數字和字元串)進行運算及連接配接,常用的運算符見下表。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

1.算術運算符

算術運算符有“+”“-”“*”“/”,這裡主要講一下“+”,因為它除了能進行數字的相加,還能進行字元串的拼接,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

2.比較運算符

比較運算符常用的是“>”“<”“==”。以“<”運算符為例,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

因為-10小于0,是以輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

需要注意的是,不要混淆“==”和“=”。“=”的作用是給變量指派,如前面講過的a=1。而“==”的作用則是比較兩個對象(如數字)是否相等,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

此處a和b不相等,是以輸出結果為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

3.邏輯運算符

邏輯運算符主要有not、and、or。例如,當某條新聞的分數是負數,并且它的年份是2019年,才把它錄入資料庫,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

這裡有兩個注意點:第一,and前後的兩個判斷條件最好加上括号,雖然有的時候不加也沒問題,但是這是比較嚴謹的做法;第二,year==2019的邏輯判斷式中是兩個等号。

因為代碼中設定的變量值同時滿足分數小于0且年份為2019年的條件,是以輸出結果為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果把代碼中的and換成or,那麼隻要滿足一個條件,就可以錄入資料庫。

1.3 Python語句

本節主要介紹條件語句、循環語句及異常處理語句。其中,條件語句和循環語句是程式設計語言很重要的知識點,因為涉及程式設計語言的一些底層邏輯—判斷和循環;異常處理語句則可以避免因程式運作異常而導緻程式中斷。

1.3.1 if條件語句

代碼檔案:1.3.1 if條件語句介紹.py

if條件語句主要用于判斷,基本的文法格式如下所示,注意不要遺漏冒号及代碼前的縮進。如果條件滿足,則執行代碼1;如果條件不滿足,則執行代碼2。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

前面的内容已經多次出現過if條件語句,這裡再做一個簡單的示範,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

因為85大于60,是以輸出結果為“及格”。

如果有多個判斷條件,可以使用elif語句進行處理,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

這裡的elif是elseif的縮寫,用得相對較少,了解即可。

1.3.2 for循環語句

代碼檔案:1.3.2 for循環語句介紹.py

for語句的底層邏輯是循環,其常用格式如下所示,注意冒号和縮進。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

這裡的i就是清單裡的元素,上述代碼的輸出結果為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

for後面的i隻是一個代号,可以換成任何内容,如j或一個字元串,隻需和要重複執行的代碼内容比對即可。例如,在上述代碼中,将for後面的i換成j,第3行代碼就要改成print(j)。

for語句還常與range()函數合用。range()函數可建立一個整數清單,它的基本用法如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

其本質是建立一個如下所示的清單:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

for語句與range()函數結合的示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼的輸出結果為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

需要注意的是,for i in range(3)的确會循環3次,但在Python中,第1個元素的序号是0,是以如果輸入如下代碼:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

那麼輸出的結果是從0開始的,也就是0~2,如下所示:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

有些讀者可能會對for i in range(3)中的i有些疑惑,剛才的i代表清單裡的元素,這裡的i又是什麼意思呢?下面給大家做一個總結:

● 對于“for i in 區域”來說,若區域是一個清單,則i代表清單的元素;

● 對于“for i in 區域”來說,若區域是一個字典,則i代表字典的鍵名;

● 對于“for i in 區域”來說,若區域是一個range(n),則i代表0~n-1的n個整數。

1.3.3 while循環語句

代碼檔案:1.3.3 while循環語句介紹.py

while語句的底層邏輯也是循環,其使用格式如下所示,注意冒号及縮進。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

下面舉個例子:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

a一開始等于1,滿足小于3的條件,列印輸出1,然後a在1的基礎上加上1等于2;此時a仍然小于3,是以仍會執行列印輸出的指令,列印輸出2,然後a在2的基礎上加上1等于3;此時a已經不滿足小于3的條件,循環便終止了。最後輸出如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

while經常與True搭配使用,寫成while True進行永久循環,其基本結構如下所示:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

大家可以試試輸入如下代碼,體驗一下永久循環的效果。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果想停止while True的循環,單擊PyCharm界面右上角的按鈕即可。

1.3.4 try/except異常處理語句

代碼檔案:1.3.4 異常處理語句介紹.py

通過try/except異常處理語句可以避免因為某一步程式出錯而導緻整個程式終止,使用方法如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

根據已經學過的知識,print(1 + 'a')這行代碼是會報錯的,因為數字和字元串不可以直接相加。那麼使用try/except之後,try這一部分代碼出錯後就會跳轉到except部分執行相應的代碼,即print('主代碼運作失敗'),最後輸出的内容為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

在具體項目實戰中,也常常會用到try/except異常處理語句。注意不要過度使用try/except異常處理語句,因為有時需要利用程式的報錯資訊來定位出錯的地方,進而進行程式調試。

1.4 函數與庫

本節将介紹程式設計中比較重要的兩個知識點:函數與庫。通過函數與庫,可以避免很多重複性及複雜的工作。所謂函數,就是把具有獨立功能的代碼塊組織為一個小子產品,在需要的時候可以反複調用。函數分為編譯器自帶的函數(内建函數)和使用者自己建立的函數(使用者自定義函數)。内建函數是編譯器開發者已經定義好的函數,使用者可以直接使用,如print()函數;自定義函數是使用者按照需求自己編制并定義的函數。當各種函數很多的時候,開發者會把函數分組,分别放到不同的檔案裡,這樣每個檔案包含的代碼就相對較少而且可以是同一類函數,這個檔案就稱為庫(也叫子產品)。

總之,函數和庫的作用就是将一些常用的代碼封裝好,使用者需要實作相應功能時就不必重複寫代碼,而是直接調用即可。

1.4.1 函數的定義與調用

代碼檔案:1.4.1 函數的定義與調用.py

自定義函數的格式如下,用def來定義一個函數,注意冒号及縮進。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

用一進制一次函數y=x+1來示範一下Python函數的寫法:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

第1行和第2行代碼定義了一個函數y(x),第3行代碼調用y(x)函數,其中将1指派給y(x)函數的參數x。輸出結果如下所示:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

調用函數很簡單,隻要輸入函數名,如函數名y,如果函數含有參數,如函數y(x)中的x,那麼在函數名後面的括号中輸入相關參數即可。上面代碼第3行的y(1)就是表示y(1)=1+1,如果第3行代碼換成y(2),那麼最後輸出的結果就是3。

函數參數隻是一個代号,可以換成其他内容,例如,可以把其中的x換成z,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

定義函數時也可以傳入兩個參數,以數學中的二進制函數y(x,z)=x+z+1為例,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

此時調用函數的時候就得輸入兩個參數,如上面的y(1,2),最後運作結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

定義函數時也可以不要參數,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

前3行代碼定義了一個函數,第4行代碼調用了這個函數,在定義這個函數時并沒有要求輸入參數,是以直接輸入y()就可以調用函數了,運作結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

1.4.2 函數的傳回值與作用域

代碼檔案:1.4.2 函數的傳回值與作用域.py

1.傳回值

函數的傳回值用得相對較少,讀者可以先初步了解。把1.4.1小節開頭的代碼稍微修改一下,把print改成return,其他内容不變,得到如下代碼:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

再次運作會發現沒有任何輸出結果,這是因為return語句和print()函數不同。通俗地說,return類似看不見的print()函數,它把原來該由print()輸出的值指派給了y(x)函數,更嚴謹的說法就是該函數的傳回值為x+1。稍稍修改代碼就可以把y(x)的值顯現出來,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎
帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

y(1)已經是一個有數值的内容了,隻是不能直接看到,将其指派給變量a,便可以利用print()函數将其列印出來,當然也可以直接寫print(y(1))。

上面這4行代碼的輸出結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

在實際應用中,return後面一般不加括号,例如,上面的代碼一般直接寫成return x+1。

有讀者可能會感到疑惑:有了print()為什麼還要用return?這是因為print()僅僅是将函數執行結果列印在控制台,之後就無法再使用了,而return則是将return後面的部分作為函數的輸出結果,即函數的傳回值,之後可以指派給别的變量,繼續使用該傳回值做其他事。

2.變量的作用域

在函數内使用的變量和函數外的代碼是沒有關系的,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

單純看上面幾行代碼,大家思考一下最後會輸出什麼内容呢?先來看看輸出結果:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

同樣是print(x),為什麼列印出來的内容不一樣呢?這是因為函數y(x)裡面的x和外面的x沒有關系。之前講過,可以把y(x)換成y(z),代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

再看上面的代碼,大家應該會更容易明白,這樣輸出的内容肯定就是4和1了。這個y(z)中的z或者說y(x)中的x隻在函數内部生效,它不會影響外部的變量。正如前面所說,函數的形式參數隻是個代号,屬于函數内的局部變量,是以不會影響函數外部的變量。

1.4.3 常用基本函數介紹

代碼檔案:1.4.3 常用基本函數介紹.py

下面介紹Python中常用的一些函數,它們在之後的項目實戰中用得也很多。

1.str()函數與int()函數

str()函數用于将數字轉換成字元串,在進行字元串拼接的時候經常用到,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

int()函數用于将字元串轉換成數字,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

2.len()函數

len()函數可以用于統計清單元素個數,示範代碼如下,運作結果為3。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

len()函數在實戰中常和range()函數一起使用,示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

其中,range(len(title))表示range(3),是以這裡for循環語句中的i表示的是0、1、2這3個整數,是以在生成标題序号時要寫成i+1,并通過上面提到的str()函數轉換成字元串,再進行字元串拼接,最終運作結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

len()函數還可以統計字元串的長度,示範代碼如下,輸出結果為10,即10個字元。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

3.replace()函數

replace()函數主要用于替換指定内容,一般格式為:字元串.replace(舊内容,新内容)。示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼的運作結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

4.strip()函數

strip()函數主要的作用是删除空白字元(包括換行符“n”和空格字元“ ”),一般格式為:字元串.strip()。示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

運作上述代碼,就可以将字元串中多餘的空格删除,結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

5.split()函數

split()函數的主要作用是分割字元串,最後生成的結果為一個清單,一般格式為:字元串.split('分割符')。示範代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

運作結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

如果想調用分割完得到的年份資訊或月份資訊,可以通過如下代碼實作:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

1.4.4 庫

代碼檔案:1.4.4 Python庫介紹.py

庫(也稱為子產品)是Python這些年發展如此迅猛的一個原因,因為很多優秀的IT工程師在研發出非常棒的代碼之後,願意把它共享給大家使用,而存儲這些共享代碼的地方就稱為庫。有的庫是Python自帶的,有的庫則需要使用者自己安裝。程式設計時,在代碼中使用庫之前需要引用庫,引用庫的兩種常見方法如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

引用完庫之後就可以使用庫裡面的功能。用如下例子來示範庫的使用:如果想讓Python輸出目前的時間,那麼引用time庫即可,這個庫是Python自帶的,不需要安裝。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼就可以輸出當天的時間,運作結果如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

從datetime庫裡引用datetime功能也能實作同樣的效果。前一個datetime是庫名,後一個datetime可以了解成功能,然後使用datetime功能的now()函數擷取時間,代碼如下:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

輸出的時間格式為:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

也可以使用如下代碼,輸出結果一樣。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

在項目實戰中,如網絡資料挖掘領域,經常會用到Requests庫,它是通過Python程式通路網站的基礎。下面就以安裝Requests庫為例介紹安裝庫的兩種常用方法。

1.pip安裝法

pip安裝法是通過指令行來安裝,指令格式為:pip install 庫名。這裡以Windows系統為例介紹具體操作。

第一步:按快捷鍵Win+R(Win鍵即鍵盤左下角的Windows标志鍵,通常在Ctrl鍵和Alt鍵之間),打開“運作”對話框,輸入“cmd”後單擊“确定”按鈕,如右圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

第二步:此時會彈出指令行視窗,輸入指令“pip install requests”,如右圖所示,然後按Enter鍵,等待安裝結束即可。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

2.PyCharm安裝法

如果使用的是PyCharm,可以直接在PyCharm中安裝庫,具體安裝步驟如下。

第一步:執行“File>Settings”菜單指令,打開“Settings”對話框。

第二步:展開Project選項組,選擇“Project Interpreter”選項,單擊右側的加号按鈕,如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

第三步:搜尋要安裝的庫的名字,如Requests庫,搜尋完成後選中要安裝的庫,單擊左下角的“Install Package”按鈕,即可進行安裝,如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

相比較而言,PyCharm安裝法更加直覺,但如果有些庫在PyCharm裡找不到,用pip安裝法也很友善。

安裝好Requests庫之後,來小小實戰一下吧。輸入如下代碼:

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

上述代碼的含義如下:

第1行:引用Requests庫;

第2行:将一個網址指派給變量,注意不要隻輸入“

www.baidu.com

”,而要輸入完整的網址“

https://www.baidu.com

”;

第3行:通過Requests庫的get()函數通路該網址,通過.text擷取網頁源代碼的文本内容;

第4行:列印輸出擷取的網頁源代碼。

上述代碼的運作結果如下圖所示。

帶你讀《Python金融大資料挖掘與分析全流程詳解》之一:Python基礎Python基礎

可以看到擷取到的内容還是比較粗糙的,有很多需要改進的地方,例如,裡面的中文出現了亂碼,以及擷取到的内容并不完整,但不必着急,之後會詳細講解如何擷取完整的内容。此時的重點在于,通過簡單的4行代碼就能擷取網頁上的資訊。如果把網址由“

”換成Python官網的位址“

https://www.python.org

”,爬取到的内容則完整得多(因為是英文網站,是以沒有亂碼現象),感興趣的讀者可以自己試一下。之後爬取百度新聞、搜狗新聞、新浪财經等都是一樣的原理,是以大家要樹立起資料挖掘并不難學的信心。