《金融計(jì)算:基于Python》 課件 第3章-Python金融計(jì)算基礎(chǔ)_第1頁
《金融計(jì)算:基于Python》 課件 第3章-Python金融計(jì)算基礎(chǔ)_第2頁
《金融計(jì)算:基于Python》 課件 第3章-Python金融計(jì)算基礎(chǔ)_第3頁
《金融計(jì)算:基于Python》 課件 第3章-Python金融計(jì)算基礎(chǔ)_第4頁
《金融計(jì)算:基于Python》 課件 第3章-Python金融計(jì)算基礎(chǔ)_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

金融計(jì)算:基于Python

第3章 Python金融計(jì)算基礎(chǔ)【教學(xué)目的與要求】通過本章學(xué)習(xí),結(jié)合習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義經(jīng)濟(jì)思想,講授Python金融數(shù)據(jù)的基本計(jì)算命令,描述性統(tǒng)計(jì),常見概率分布,數(shù)據(jù)可視化,python-scipy模塊及數(shù)據(jù)下載平臺(tái)?!局攸c(diǎn)和難點(diǎn)】Python金融數(shù)據(jù)的基本計(jì)算命令,描述性統(tǒng)計(jì),常見概率分布,數(shù)據(jù)可視化,python-scipy模塊?!舅颊四繕?biāo)】將習(xí)近平新時(shí)代中國(guó)特色社會(huì)主義經(jīng)濟(jì)思想融入到Python金融數(shù)據(jù)計(jì)算的基礎(chǔ)知識(shí)與命令的學(xué)習(xí)中?!菊n程學(xué)習(xí)目標(biāo)】了解Python金融數(shù)據(jù)的基本計(jì)算命令,描述性統(tǒng)計(jì),常見概率分布,掌握數(shù)據(jù)可視化,python-scipy模塊及數(shù)據(jù)下載平臺(tái)。金融計(jì)算:基于Python2主要內(nèi)容3.1.數(shù)據(jù)的基本計(jì)算3.2.描述性統(tǒng)計(jì)3.3.常見概率分布3.4.數(shù)據(jù)的可視化3.5.python-scipy模塊3.6.Baostock數(shù)據(jù)平臺(tái)3.7.數(shù)據(jù)爬取3.8.AKShare數(shù)據(jù)平臺(tái)3.9.Efinance數(shù)據(jù)平臺(tái)金融計(jì)算:基于Python33.1. 數(shù)據(jù)的基本計(jì)算3.1.1.算術(shù)運(yùn)算.序列運(yùn)算序列運(yùn)算是根據(jù)行列索引,對(duì)齊后運(yùn)算,運(yùn)算默認(rèn)產(chǎn)生浮點(diǎn)數(shù),對(duì)齊時(shí)缺項(xiàng)填充NaN(空值)。自動(dòng)的數(shù)據(jù)對(duì)齊在索引處引入NAN值,缺失值在運(yùn)算過程中傳播。.DdtaFrame運(yùn)算除了用+、-、*、/,還可以用Series和DataFrame的算術(shù)方法,因?yàn)?c'和'e'列均不在兩個(gè)DataFrame對(duì)象中,在結(jié)果中以缺省值呈現(xiàn),行也是同樣,沒有共用的列或行標(biāo)簽,結(jié)果都會(huì)是空。金融計(jì)算:基于Python4.運(yùn)算中值填充在對(duì)不同索引的對(duì)象算術(shù)運(yùn)算時(shí),希望當(dāng)一個(gè)對(duì)象中某個(gè)軸標(biāo)簽在另一個(gè)對(duì)象中找不到時(shí)填充一個(gè)特殊值。如使用df1的add(sub)方法,實(shí)現(xiàn)數(shù)據(jù)的加法(減法)。.DataFrame和序列之間運(yùn)算從一個(gè)矩陣減去一個(gè)行序列時(shí),每一行都會(huì)執(zhí)行這一個(gè)操作。.函數(shù)的應(yīng)用元素級(jí)數(shù)組方法也可用于操作pandas對(duì)象;函數(shù)也可應(yīng)用到由各列或行所形成的一維數(shù)組上。如建立一個(gè)函數(shù)f,計(jì)算一個(gè)Series的最大值和最小值的差,在frame的每列都執(zhí)行一次。金融計(jì)算:基于Python53.1.2. 排序和排名.數(shù)據(jù)集排序根據(jù)條件可以對(duì)數(shù)據(jù)集進(jìn)行排序運(yùn)算,使用sort_index方法可以對(duì)行或列索引進(jìn)行排序(按字典順序),它將返回一個(gè)已排序的新對(duì)象:.DataFrame排序可以根據(jù)DataFrame任意一個(gè)軸上的索引進(jìn)行排序。.序列數(shù)據(jù)值的排序sort_values方法可以實(shí)現(xiàn)按值對(duì)Series進(jìn)行排序。任何缺失值默認(rèn)都會(huì)被放到Series的末尾。.DataFrame數(shù)據(jù)值的排序sort_values可以實(shí)現(xiàn)DataFrame一個(gè)或多個(gè)列中的值進(jìn)行排序。金融計(jì)算:基于Python63.2. 描述性統(tǒng)計(jì)Pandas可以實(shí)現(xiàn)常用的數(shù)學(xué)和統(tǒng)計(jì)功能,主要用于從Series中提取單個(gè)值(如sum或mean)或從DataFrame的行或列中提取一個(gè)Series。3.2.1.數(shù)據(jù)匯總統(tǒng)計(jì).數(shù)據(jù)求和Sum可以實(shí)現(xiàn)數(shù)據(jù)的匯總功能,返回一個(gè)含有列的和的序列。.間接統(tǒng)計(jì)Idxmin或idxmax可以實(shí)現(xiàn)一些間接統(tǒng)計(jì),返回達(dá)到最小值或最大值的索引。金融計(jì)算:基于Python73.2.2. 相關(guān)系數(shù)與協(xié)方差相關(guān)系數(shù)和協(xié)方差是通過參數(shù)對(duì)計(jì)算出來的,corr方法用于計(jì)算兩個(gè)序列中重疊的、非NA的、按索引對(duì)齊的值的相關(guān)系數(shù);cov方法用于計(jì)算協(xié)方差。corrwith方法,可以計(jì)算DataFrame其列或行跟另一個(gè)Series或DataFrame之間的相關(guān)系數(shù)。傳入一個(gè)Series將會(huì)返回一個(gè)相關(guān)系數(shù)值Series(針對(duì)各列進(jìn)行計(jì)算)。金融計(jì)算:基于Python83.2.3. 其它統(tǒng)計(jì).唯一值unique函數(shù)可以得到Series中的唯一值數(shù)組。.值的頻率統(tǒng)計(jì)value_counts可以計(jì)算一個(gè)Series中各值按值頻率降序排列。.資格統(tǒng)計(jì)isin是用于判斷矢量化集合的成員資格,一般用于過濾Series中或DataFrame列中數(shù)據(jù)的子集。金融計(jì)算:基于Python93.3. 常見概率分布3.3.1.連續(xù)型隨機(jī)變量的常見分布.均勻分布均勻分布指的是一類在定義域內(nèi)概率密度函數(shù)處處相等的統(tǒng)計(jì)分布。.正態(tài)分布正態(tài)分布也叫高斯分布.指數(shù)分布指數(shù)分布通常被廣泛用在描述一個(gè)特定事件發(fā)生所需要的時(shí)間,在指數(shù)分布隨機(jī)變量的分布中,有著很少的大數(shù)值和非常多的小數(shù)值.金融計(jì)算:基于Python103.3.2. 連續(xù)型隨機(jī)變量的常見分布.伯努利分布伯努利分布描述的是離散型變量且發(fā)生1次的概率分布,且X取值只有2個(gè),要么是0,要么是1..二項(xiàng)分布二項(xiàng)分布可以認(rèn)為是一種只有兩種結(jié)果(成功/失敗)的單次試驗(yàn)重復(fù)多次后成功次數(shù)的分布概率。.泊松分布假設(shè)已知事件在單位時(shí)間(或者單位面積)內(nèi)發(fā)生的平均次數(shù)為λ,則泊松分布描述了事件在單位時(shí)間(或者單位面積)內(nèi)發(fā)生的具體次數(shù)為k的概率。金融計(jì)算:基于Python113.4. 數(shù)據(jù)的可視化3.4.1.常用的繪圖函數(shù)matplotlib是Python用于創(chuàng)建圖表的繪圖包,提供了一整套繪圖命令,繪制中文圖形時(shí),必須進(jìn)行基本的設(shè)置。importmatplotlib.pyplotasplt #基本繪圖包plt.rcParams['font.sans-serif']=['KaiTi'] #黑體plt.rcParams['axes.unicode_minus']=False #正常顯示圖中負(fù)號(hào)plt.figure(figsize=(5,4))#圖形大小金融計(jì)算:基于Python12.基本統(tǒng)計(jì)圖bar()命令是繪制條形圖。pie()是繪制餅圖的命令。plot()是繪制拆線圖的命令。hist()用于表示連續(xù)型變量的頻數(shù)分布,實(shí)際應(yīng)用中常用于考察變量的分布是否服從某種分類類型。scatter()是繪制散點(diǎn)圖的命令。金融計(jì)算:基于Python13.圖形參數(shù)設(shè)置繪制圖形過程中,標(biāo)題、標(biāo)簽、顏色、線形等參數(shù)設(shè)置命令及說明。金融計(jì)算:基于Python14命令說明plt.title標(biāo)題,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.xlim設(shè)置橫坐標(biāo)范圍,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.ylim設(shè)置縱坐標(biāo)范圍,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.xlabel設(shè)置橫坐標(biāo)名稱,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.ylabel設(shè)置縱坐標(biāo)名稱,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.xticks設(shè)置橫坐標(biāo)刻度,可以指定名稱、位置、顏色、字體大小等參數(shù)。plt.yticks設(shè)置縱坐標(biāo)刻度,可以指定名稱、位置、顏色、字體大小等參數(shù)。colors或c控制圖形的顏色,'r':設(shè)置為紅色,'b':設(shè)置為藍(lán)色,'g':設(shè)置為綠色,'c':設(shè)置為青色,'m':設(shè)置為品紅色,'y':設(shè)置為黃色,'k':設(shè)置為黑色,'w':設(shè)置為白色linestyle控制連線的線形(‘-’:實(shí)線,‘--’:虛線,'-.'點(diǎn)劃線,':'虛線)linewidth或lw線寬,(字符串格式)可以輸入浮點(diǎn)數(shù)。marker控制符號(hào)的類型,詳見表3-3plt.axvline在縱坐標(biāo)y處畫垂直線plt.axhline在橫坐標(biāo)x處畫垂直線text(x,y,labels,...)在(x,y)處添加用labels指定的文字legend為圖形加圖例,可以指定圖例的大小、位置、標(biāo)簽。grid添加網(wǎng)格??梢灾付ňW(wǎng)格的方向、線類型、線寬、顏色。標(biāo)記符說明'.'點(diǎn)','像素點(diǎn)'o'循環(huán)'*'星號(hào)'v'下三角'^'上三角'<'左三角'>'右三角'1'向下微調(diào)'2'向上微調(diào)'3'向左微調(diào)'4'向右微調(diào)'s'正方形'p'五邊形'h'六邊形1'H'六邊形2'+'加號(hào)'P'加滿'x'x'X'X滿'D'鉆石'd'鉆石瘦'_'水平線‘|’排.多圖繪制可以通過add_subplot創(chuàng)建多個(gè)圖。金融計(jì)算:基于Python153.4.2. 基于pandas的繪圖在pandas中的數(shù)據(jù)包含多列、多行的數(shù)據(jù),還有行和列標(biāo)簽,自身內(nèi)置的方法可以簡(jiǎn)化從DataFrame和Series繪制圖形,修改默認(rèn)的顏色方案和繪圖類型,提高可讀性和美觀度。Plot()可以實(shí)現(xiàn)Series和DataFrame的繪制圖表的功能,默認(rèn)生成的是線型圖。DataFrame.plot(kind='line')將所有列繪制的圖到一張圖片中,用不同線條顏色及不同的圖例標(biāo)簽來表示。其中,kind是圖類型:line(缺?。┦遣鹁€圖;bar是垂直條圖;barh是水平條圖;hist是直方圖;box是箱線圖;kde是核密度估計(jì)圖,對(duì)柱狀圖添加概率密度線,與density功能一樣;area是面積圖;pie是餅圖;scatter是散點(diǎn)圖。金融計(jì)算:基于Python163.4.3. 特殊統(tǒng)計(jì)圖.數(shù)學(xué)函數(shù)圖.氣泡圖金融計(jì)算:基于Python173.5. python-scipy模塊scipy模塊依賴于numpy模塊,能方便的給出很多數(shù)學(xué)操作?;咀幽K及功能如表3-3。金融計(jì)算:基于Python18子模塊名稱功能說明scipy.special:特殊函數(shù)模塊里面有各種特殊的數(shù)學(xué)函數(shù),可以直接調(diào)用,如貝塞爾函數(shù).egrate:積分模塊??梢郧蠖嘀胤e分,高斯積分,解常微分方程scipyoptimize.優(yōu)化模塊里面有各種優(yōu)化算法,包括用來求有/無約束的多元標(biāo)量函數(shù)最小值算法,最小二乘法,求有/無約束的單變量函數(shù)最小值算法,還有解各種復(fù)雜方程的算法erpolation:插值模塊提供各種一維、二維、N維插值算法,包括B樣條插值、徑向基函數(shù)插值等.scipy.fftpack:FFT(快速傅里葉變換)模塊。可以進(jìn)行FFT/DCT/DSTsipsgnak:信號(hào)處理模塊包括樣條插值,卷積,差分等濾波方法,還有FIR/IR濾波,中值、排序、維納、希爾伯特等濾波器,各種譜分析算法scipy.linalg:線代模塊提供各種線性代數(shù)中的常規(guī)操作scipy.sparse:稀疏矩陣模塊提供了大型稀疏矩陣計(jì)算中的各種算法scipy.spatial:空間結(jié)構(gòu)模塊提供了一些空間相關(guān)的數(shù)據(jù)結(jié)構(gòu)和算法,如elaunay三角剖分,共面點(diǎn),凸包維諾圖,Kd樹等scipy.stats:統(tǒng)計(jì)模塊提供一些統(tǒng)計(jì)學(xué)上常用的函數(shù)scipy.ndimage:多維圖像處理模塊提供一些多維圖像處理上的常用算法scipy.io:lO模塊提供與其他文件的接口,如matlab文件、IDL文件、Wav(音頻)文件、ARFF文件3.5.1. 求積分integrate子模塊是積分函數(shù):quad()是自適應(yīng)求積分;fixed_quad()是固定高斯求積分;quadrature()是自適應(yīng)高斯求積;romberg()是自適應(yīng)龍貝格求積分。金融計(jì)算:基于Python193.5.2. 插值計(jì)算利率曲線的擬合等金融領(lǐng)域經(jīng)常會(huì)用到插值法計(jì)算,可以使用interpolate模塊下的interp1d(x,y,kind)函數(shù):nearest是最近鄰插值;zero是階梯插值法;slinear是線性插值法;quadratic是2階樣條插值;cubic:3是階樣條插值。金融計(jì)算:基于Python203.5.3. 方程組求解方程組求解可使用solve函數(shù)、fsolve函數(shù)實(shí)現(xiàn)。金融計(jì)算:基于Python213.5.4. 優(yōu)化問題

金融計(jì)算:基于Python223.6. Baostock數(shù)據(jù)平臺(tái)3.6.1.平臺(tái)說明證券寶是一個(gè)免費(fèi)、開源的證券數(shù)據(jù)平臺(tái)(無需注冊(cè))。提供大量準(zhǔn)確、完整的證券歷史行情數(shù)據(jù)、上市公司財(cái)務(wù)數(shù)據(jù)等。返回的數(shù)據(jù)格式:pandasDataFrame類型,以便于用pandas/NumPy/Matplotlib進(jìn)行數(shù)據(jù)分析和可視化。同時(shí)支持通過BaoStock的數(shù)據(jù)存儲(chǔ)功能,將數(shù)據(jù)全部保存到本地后進(jìn)行分析。支持語言:目前版本BaoS目前只支持Python3.5及以上(暫不支持python2.x)。金融計(jì)算:基于Python23數(shù)據(jù)說明時(shí)間范圍股票數(shù)據(jù)日、周、月K線數(shù)據(jù),時(shí)間范圍:1990-12-19至今;5、15、30、60分鐘K線數(shù)據(jù)1999-07-26至今指數(shù)數(shù)據(jù)日、周、月K線已經(jīng)包含指數(shù):綜合指數(shù),規(guī)模指數(shù),一級(jí)行業(yè)指數(shù),二級(jí)行業(yè)指數(shù),策略指數(shù),成長(zhǎng)指數(shù),價(jià)值指數(shù),主題指數(shù),基金指數(shù),債券指數(shù)。2006-01-01至今季頻財(cái)務(wù)數(shù)據(jù)已經(jīng)包含的財(cái)務(wù)數(shù)據(jù):部分上市公司資產(chǎn)負(fù)債信息、上市公司現(xiàn)金流量信息、上市公司利潤(rùn)信息、上市公司杜邦指標(biāo)信息。2007年至今季頻公司報(bào)告上市公司業(yè)績(jī)預(yù)告信息;上市公司業(yè)績(jī)快報(bào)信息2003年至今;2006年至今.login()函數(shù)登錄系統(tǒng)。建立與服務(wù)器的連接,無需注冊(cè)即可登錄。需要說明的是,登錄后超過一段時(shí)間沒有操作再調(diào)用api請(qǐng)求時(shí)會(huì)超時(shí),需要重新登錄才能繼續(xù)下載數(shù)據(jù)不需要使用的時(shí)候可以主動(dòng)調(diào)用bs.logout()函數(shù)斷開與服務(wù)器的連接。.logout()函數(shù)不需要使用數(shù)據(jù)的時(shí)候可以主動(dòng)調(diào)用bs.logout()函數(shù)斷開與服務(wù)器的連接。金融計(jì)算:基于Python24.query_history_k_data_plus()函數(shù)通過API接口獲取A股歷史交易數(shù)據(jù),可以通過參數(shù)設(shè)置獲取日k線、周k線、月k線,以及5分鐘、15分鐘、30分鐘和60分鐘k線數(shù)據(jù),適合搭配均線數(shù)據(jù)進(jìn)行選股和分析。返回類型:pandas的DataFrame類型;樣本:1990-12-19至當(dāng)前時(shí)間的數(shù)據(jù);數(shù)據(jù)種類:不復(fù)權(quán)、前復(fù)權(quán)、后復(fù)權(quán)數(shù)據(jù)。金融計(jì)算:基于Python253.6.3. 季頻數(shù)據(jù)獲取函數(shù).query_profit_data()函數(shù)通過API接口獲取季頻盈利能力信息,可以通過參數(shù)設(shè)置獲取對(duì)應(yīng)年份、季度數(shù)據(jù),提供2007年至今數(shù)據(jù)。返回類型:pandas的DataFrame類型。.query_operation_data()函數(shù)通過API接口獲取季頻營(yíng)運(yùn)能力信息,可以通過參數(shù)設(shè)置獲取對(duì)應(yīng)年份、季度數(shù)據(jù),提供2007年至今數(shù)據(jù)。返回類型:pandas的DataFrame類型。金融計(jì)算:基于Python263.6.4.板塊數(shù)據(jù)獲取函數(shù).query_stock_industry()函數(shù)通過API接口獲取行業(yè)分類信息,更新頻率:每周一更新。返回類型:pandas的DataFrame類型。金融計(jì)算:基于Python273.6.5.宏觀經(jīng)濟(jì)數(shù)據(jù)獲取函數(shù).query_deposit_rate_data()函數(shù)通過API接口獲取存款利率,可以通過參數(shù)設(shè)置獲取對(duì)應(yīng)起止日期的數(shù)據(jù)。返回類型:pandas的DataFrame類型。金融計(jì)算:基于Python283.6.6.指定數(shù)據(jù)導(dǎo)入.獲取指定日期全部股票的日K線數(shù)據(jù).獲取指定時(shí)間區(qū)域部分股票的日K線數(shù)據(jù)金融計(jì)算:基于Python293.7. 數(shù)據(jù)爬取在大數(shù)據(jù)時(shí)代,互聯(lián)網(wǎng)成為獲取金融數(shù)據(jù)的重要途徑之一,因此,掌握一些Python、Web前端與爬蟲的相關(guān)知識(shí)是非常必要的。3.7.1.網(wǎng)頁結(jié)構(gòu)任意打開一個(gè)網(wǎng)頁(/),單擊鼠標(biāo)右鍵,從彈出的快捷菜單中選擇“檢查”選項(xiàng),即可查看該網(wǎng)頁結(jié)構(gòu)的相應(yīng)代碼,如圖3-1所示。分析圖3-1,該圖左半部分為HTML文件,右半部分為CSS樣式,用<script></script>標(biāo)簽的就是JavaScript代碼。用戶瀏覽的網(wǎng)頁就是瀏覽器染后的結(jié)果,瀏覽器就是把HTML、CSS和JavaScript進(jìn)行翻譯得到用戶使用的網(wǎng)頁界面。金融計(jì)算:基于Python303.7.2. Python與爬蟲.爬蟲基本原理網(wǎng)頁請(qǐng)求和響應(yīng)的過程:Request(請(qǐng)求)。每一個(gè)用戶打開的網(wǎng)頁都必須在最開始由用戶向服務(wù)器發(fā)送訪問的請(qǐng)求。Response(響應(yīng))。服務(wù)器在接收到用戶的請(qǐng)求后,會(huì)驗(yàn)證請(qǐng)求的有效性,然后向用戶發(fā)送相應(yīng)的內(nèi)容。客戶端接收到服務(wù)器的相應(yīng)內(nèi)容后,再將此內(nèi)容展示出來,以供用戶瀏覽。網(wǎng)頁請(qǐng)求的方式一般分為GET和POST兩種:GET是最常見的請(qǐng)求方式,一般用于獲取或者查詢資源信息,也是大多數(shù)網(wǎng)站使用的方式。POST與GET相比,多了以表單形式上傳參數(shù)的功能,因此除了查詢信息外,還可以修改信息。金融計(jì)算:基于Python31基礎(chǔ)爬蟲主要包括爬蟲調(diào)度器、URL管理器、HTML下載器、HTML解析器和數(shù)據(jù)存儲(chǔ)器等五大模塊,功能如下: 爬蟲調(diào)度器統(tǒng)籌其他4個(gè)模塊的協(xié)調(diào)工作;

URL管理器管理URL鏈接,維護(hù)已經(jīng)爬取的URL集合和未爬取的URL集合,提供獲取新URL鏈接的接口;

HTML下載器用于從URL管理器中獲取未爬取的URL鏈接,并下載HTML網(wǎng)頁;

HTML解析器用于從HTML下載器中獲取已經(jīng)下載的HTML網(wǎng)頁,并從中解析出新的URL鏈接交給URL管理器,解析出有效數(shù)據(jù)交給數(shù)據(jù)存儲(chǔ)器; 數(shù)據(jù)存儲(chǔ)器用于將HTML解析器解析出來的數(shù)據(jù)通過文件或者數(shù)據(jù)庫的形式存儲(chǔ)起來。.urllib模塊使用Python編寫爬蟲代碼,要解決的第一個(gè)問題是Python如何訪問互聯(lián)網(wǎng),為此Python專門準(zhǔn)備了urllib模塊。urllib是URL和lib兩個(gè)單詞共同構(gòu)成的,URL就是網(wǎng)頁的地址,lib是library(庫)的縮寫。URL的一般格式為(帶方括號(hào)[]的為可選項(xiàng)):protocol://hostname[port]/path/[parameters][?query]#fragment.URL由以下三部分組成:協(xié)議:常見的有HTTP、HTTPS、FTP、FILE(訪問本地文件夾)、ED2K(電驢的專用鏈接)等。存放資源的服務(wù)器的域名系統(tǒng)(DNS)主機(jī)名或IP地址(有時(shí)候要包含端口號(hào),各種傳輸協(xié)議都有默認(rèn)的端口號(hào),如HTTP的默認(rèn)端口為80)主機(jī)資源的具體地址,如目錄和文件名等。金融計(jì)算:基于Python32[例3.7.1]使用urllib訪問目標(biāo)網(wǎng)頁在urllib模塊中可以使用urllib.request.urlopen()函數(shù)訪問網(wǎng)頁,urllib.request.urlopen()函數(shù)的參數(shù)為:urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=False,context=None)金融計(jì)算:基于Python33[例3.7.2]使用urllib獲取響應(yīng)信息通過response.getcode()、response.geturl()及response.getheaders()獲取各種響應(yīng)信息。金融計(jì)算:基于Python34.Requests庫Requests庫是用Python語言編寫的,基于urllib,采用Apache2Licensed開源協(xié)議的HTTP庫,它比urllib更方便,可以節(jié)約開發(fā)者的工作量,完全滿足HTTP測(cè)試求。Requests實(shí)現(xiàn)了HTTP協(xié)議中的地大部分功能,它提供的功能包括Keep-Alive、連接池、Cookie持久化、內(nèi)容自動(dòng)解壓、HTTP代理、SSL認(rèn)證、連接超時(shí)、Session等很多特性,更重要的是它同時(shí)兼客Python2和Python3。導(dǎo)入importrequests,使用requests庫模擬發(fā)送并且獲取響應(yīng)對(duì)象賦給變量res格式為:res=requests.請(qǐng)求方式(url,相關(guān)參數(shù))金融計(jì)算:基于Python35參數(shù)功能res.encoding查看響應(yīng)正文的編碼格式res.text查看響應(yīng)正文的文本內(nèi)容返回的是一個(gè)字符串格式res.content查看響應(yīng)正文的文本內(nèi)容返回的是一個(gè)字節(jié)格式如果獲取圖片數(shù)據(jù)或者音視頻數(shù)據(jù)通過它直接獲取二進(jìn)制數(shù)據(jù)并進(jìn)行保存res.status_code查看響應(yīng)的狀態(tài)碼res.headers查看響應(yīng)的響應(yīng)頭res.url查看響應(yīng)的URLres.request.headers查看請(qǐng)求頭信息res.request.body查看請(qǐng)求正文res.request.url查看請(qǐng)求urlres.request.method查看請(qǐng)求方式res.cookies獲取響應(yīng)中的cookie得到的是一個(gè)RequestsCookieJar對(duì)象[例3.7.3]自定義請(qǐng)求響應(yīng)頭先定義一個(gè)字典格式:h={"請(qǐng)求頭鍵":"對(duì)應(yīng)的值","請(qǐng)求頭鍵2":"對(duì)應(yīng)的值",...};然后讓定義的字典與請(qǐng)求產(chǎn)生關(guān)聯(lián)res=requests.請(qǐng)求方式(url,headers=h)。金融計(jì)算:基于Python36[例3.7.4]發(fā)送攜帶查詢字符串參數(shù)的GET請(qǐng)求方法1:參數(shù)直接寫在url中,res=requests.get("/s?wd=河北經(jīng)貿(mào)大學(xué)方法2:先定義一個(gè)字典,p={"查詢參數(shù)1":"對(duì)應(yīng)的值","查詢參數(shù)2":"對(duì)應(yīng)的值",...}(查詢參數(shù)就是值查詢字符串參數(shù)URL中?后面接的就是查詢字符串參數(shù));然后讓定義的字典與請(qǐng)求產(chǎn)生關(guān)聯(lián),res=requests.get(url,params=p)金融計(jì)算:基于Python37[例3.7.5]使用GET方式抓取網(wǎng)頁數(shù)據(jù)輸入:#導(dǎo)入requests庫importrequests#訪問目標(biāo)網(wǎng)頁url=""#將獲取的數(shù)據(jù)保存到strhtml變量中strhtml=requests.get(url)#打印網(wǎng)頁源代碼print(strhtml.text)金融計(jì)算:基于Python38[例3.7.6]使用GET方式抓取網(wǎng)頁數(shù)據(jù),并設(shè)置超時(shí)反應(yīng)輸入:#導(dǎo)入requests庫importrequests#訪問目標(biāo)網(wǎng)頁url1=""r=requests.get(url1,timeout=3)#打印網(wǎng)頁源代碼print(r.status_code)金融計(jì)算:基于Python39[例3.7.7]使用GET方式抓取網(wǎng)頁圖片輸入:importrequests#訪問目標(biāo)網(wǎng)頁url1="/it/u=3287115334,1498982333&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281"r1=requests.get(url1)withopen('ls1.png','wb')asf:f.write(r1.content)importmatplotlib.pyplotaspltfromPILimportImageimg=Image.open('ls1.png')img=np.array(img)plt.imshow(img)plt.show()金融計(jì)算:基于Python403.7.3. 爬取網(wǎng)頁內(nèi)容一般地,按照爬取網(wǎng)頁、解析數(shù)據(jù)、保存網(wǎng)頁的思路爬取所需要的網(wǎng)頁內(nèi)容。防止亂碼,設(shè)置編碼為utf-8。[例3.7.9]爬取/top250?start=網(wǎng)頁的電影詳情鏈接、圖片鏈接、影片中文名、影片外國(guó)名、評(píng)分、評(píng)價(jià)數(shù)、概況、相關(guān)信息,將評(píng)分前100的信息保存到excel文件中。第一步,數(shù)據(jù)庫導(dǎo)入第二步,設(shè)置正則表達(dá)式第三步,設(shè)置爬取網(wǎng)頁的函數(shù)第四步,設(shè)置變量存儲(chǔ)爬取的網(wǎng)頁信息的函數(shù)第五步,設(shè)置得到指定一個(gè)URL的網(wǎng)頁內(nèi)容的函數(shù)第六步,設(shè)置保存數(shù)據(jù)到表格的函數(shù)第七步,調(diào)用函數(shù)的程序金融計(jì)算:基于Python413.8. AKShare數(shù)據(jù)平臺(tái)AKShare是基于Python的財(cái)經(jīng)數(shù)據(jù)接口庫,目的是實(shí)現(xiàn)對(duì)股票、期貨、期權(quán)、基金、外匯、債券、指數(shù)、加密貨幣等金融產(chǎn)品的基本面數(shù)據(jù)、實(shí)時(shí)和歷史行情數(shù)據(jù)、衍生數(shù)據(jù)從數(shù)據(jù)采集、數(shù)據(jù)清洗到數(shù)據(jù)落地的一套工具,主要用于學(xué)術(shù)研究目的。AKShare的特點(diǎn)是獲取的是相對(duì)權(quán)威的財(cái)經(jīng)數(shù)據(jù)網(wǎng)站公布的原始數(shù)據(jù),通過利用原始數(shù)據(jù)進(jìn)行各數(shù)據(jù)源之間的交叉驗(yàn)證,進(jìn)而再加工,從而得出科學(xué)的結(jié)論。金融計(jì)算:基于Python423.8.1. 安裝目前AKShare僅支持64位版本的操作系統(tǒng)安裝和使用,支持Python3.8(64位)及以上版本。AKShare推薦安裝最新版本的Anaconda(64位),可以解決大部分環(huán)境配置問題。安裝命令:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論