Python金融數據分析與應用課件 第2章 數據分析相關庫_第1頁
Python金融數據分析與應用課件 第2章 數據分析相關庫_第2頁
Python金融數據分析與應用課件 第2章 數據分析相關庫_第3頁
Python金融數據分析與應用課件 第2章 數據分析相關庫_第4頁
Python金融數據分析與應用課件 第2章 數據分析相關庫_第5頁
已閱讀5頁,還剩45頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章數據分析相關庫Python金融數據分析與應用(微課版)目錄CONTENTS數組運算NumPy2.1數據處理pandas2.2數據繪圖Matplotlib2.32.1數組運算NumPy2.1數組運算NumPy2.1.1NumPy概述(1)NumPy的主要功能及其特點01支持ndarray對象:通過ndarray對象,支持高效的元素級運算。02030405支持廣播機制:支持廣播(Broadcasting),即允許不同形狀的數組進行算術運算。線性代數運算:包含豐富的線性代數函數,可進行矩陣乘法、求逆、特征值計算等操作,為科學計算提供了有力支持。隨機數生成:可以生成各種分布的隨機數,如正態分布、均勻分布、二項分布等的隨機數,廣泛應用于模擬和統計分析。高效的內存管理:采用連續內存塊存儲數據,從而減少了內存碎片、提高了數據訪問效率。2.1數組運算NumPy(2)NumPy的常見應用場景2.1.1NumPy概述01020304金融數據分析:處理和分析大規模金融數據,如股票價格、交易量、收益率等。數值模擬和建模:進行數值模擬和建模,如蒙特卡羅模擬、差分方程求解等。機器學習和數據挖掘:處理和轉換數據,為機器學習算法提供輸入數據。科學研究和工程計算:在物理、化學、生物等領域進行高性能數值計算和分析。2.1數組運算NumPy可以通過將Python列表或元組傳遞給np.array()函數來創建數組,示例代碼如下:2.1.2數組的創建(1)使用列表或元組創建數組importnumpyasnp#使用列表創建一維數組prices=np.array([100,200,300,400,500])#示例數據:股票價格print('一維數組:',prices)#使用元組創建二維數組volumes=np.array([(1000,2000,3000),(4000,5000,6000)])#示例數據:股票成交量print('二維數組:\n',volumes)?代碼運行結果為:一維數組:[100200300400500]二維數組:

[[100020003000][400050006000]]2.1數組運算NumPy2.1.2數組的創建(2)使用內置函數創建特殊數組#創建全零數組zeros_array=np.zeros((3,3))#創建3×3的全零數組print('全零數組:\n',zeros_array)#創建全一數組ones_array=np.ones((2,2))#創建2×2的全一數組print('全一數組:\n',ones_array)#創建等差數組arange_array=np.arange(0,10,2)#生成0到10的等差數組,步長為2print('等差數組:',arange_array)#創建線性等間距數組linspace_array=np.linspace(0,1,5)#生成0到1的5個等間距數print('線性等間距數組:',linspace_array)#創建隨機數組random_array=np.random.rand(3,3)#創建3×3的隨機數組,元素在[0,1)內print('隨機數組:\n',random_array)?代碼運行結果為:全零數組:[[0.0.0.][0.0.0.][0.0.0.]]全一數組:[[1.1.][1.1.]]等差數組:[02468]線性等間距數組:[0.0.250.50.751.]隨機數組:[[0.0155390.267845660.45591445][0.749669390.601264090.76659221][0.400356510.647580890.74358865]]2.1數組運算NumPy可以從CSV文件、Excel文件或其他數據源中讀取數據,并將其轉換為NumPy數組(使用.values方法),示例代碼如下:2.1.2數組的創建(3)通過文件或其他數據源創建數組importpandasaspd#讀取文件時需要先導入pandas庫,將在2.2節詳細介紹data_frame=pd.read_csv('stock_data.csv')#示例文件為stock_data.csv文件,需與當前.ipynb文件存儲在同一文件夾內才可成功讀取數據data_array=data_frame.values#將DataFrame轉換為NumPy數組print("從CSV文件創建的數組:\n",data_array)2.1數組運算NumPy2.1.3數組的常用屬性屬性名稱中文釋義說明shape數組的形狀其值為一個包含數組每個維度大小的元組ndim數組的維度其值為數組的維度數(軸的個數),也稱秩size數組中元素的總數數組的元素總數是所有維度大小的乘積dtype數組中元素的數據類型描述數組中元素的數據類型,如整型、浮點型等itemsize數組中每個元素所占的字節數每個元素所占的字節數由數據類型決定nbytes數組所有元素占用的總字節數總字節數等于元素的字節數乘元素總數T數組的轉置是指將數組的行和列互換表2-1NumPy數組的常用屬性2.1數組運算NumPy在數據分析過程中,經常需要改變數組的形狀以適應不同的計算需求和數據結構,NumPy提供了靈活的數組形狀改變方法。2.1.4數組的形狀改變表2-2常見的數組形狀改變方法方法名稱說明reshape()改變數組形狀,不改變數組數據。【注意】需要確保新形狀數組的元素總數與原形狀數組的元素總數一致flatten()將多維數組變為一維數組。【注意】返回一個一維數組的副本,不改變原數組ravel()將多維數組變為一維數組,返回的是原數組的視圖。【注意】不會產生數據副本,因此效率更高transpose()轉置數組,即將數組的維度進行交換,等同于使用屬性.T的效果resize()改變數組的形狀,并且可以改變數組大小。【注意】類似reshape(),但可以改變數組大小。如果新數組大小大于原數組大小,會填充默認值0;如果新數組大小小于原數組大小,會截斷數組expand_dims()擴展數組的形狀,在指定位置插入新的軸squeeze()去除數組形狀中為1的維度,減少數組的維數(1)??索引?索引(Index)是指通過指定位置來訪問數組中的單個元素。在Python中,索引可以用正數、0或負數表示。通常情況下,索引從數組的開始處計算,即第一個元素的索引為0,第二個元素的索引為1,以此類推。而如果用負數表示索引,則從數組的末尾處開始計算,-1表示最后一個元素,-2表示倒數第二個元素,以此類推。索引主要分為基本索引、布爾索引和花式索引。2.1數組運算NumPy?2.1.5?數組的索引與切片8.55.42.53.410.18.90.70123456-7-6-5-4-3-2-1Array:正序索引:逆序索引:?①基本索引:通過指定位置訪問數組中的單個元素。2.1數組運算NumPy?2.1.5?數組的索引與切片??importnumpyasnp#創建一個一維數組表示股票價格prices=np.array([100,200,300,400,500,600])print('原始數組:',prices)#訪問數組中的第一個元素print('第一個元素:',prices[0])#訪問數組中的最后一個元素print('最后一個元素:',prices[-1])?#訪問數組中的第三個元素print('第三個元素:',prices[2])?代碼運行結果為?原始數組:[100200300400500600]第一個元素:100最后一個元素:600第三個元素:300??②?布爾索引:通過條件篩選數組中的元素,返回滿足條件的元素。2.1數組運算NumPy?2.1.5?數組的索引與切片?#創建一個一維數組表示股票價格prices=np.array([100,200,300,400,500,600])#篩選價格大于300的股票high_prices=prices[prices>300]print('價格大于300的股票:',high_prices)?代碼運行結果為“價格大于300的股票:[400500600]”,篩選出了滿足條件的元素。?③花式索引:可以一次性訪問多個不連續的元素。?#創建一個一維數組表示股票價格prices=np.array([100,200,300,400,500,600])#使用花式索引訪問第一個、第三個和第五個元素selected_prices=prices[[0,2,4]]print('選中的股票價格:',selected_prices)?代碼運行結果為?“選中的股票價格:[100300500]”,選中了第一、三、五個元素。2.1數組運算NumPy2.1.5數組的索引與切片(2)切片切片(Slice)是指通過指定一個范圍來訪問數組中的一段連續元素,而不是訪問單個元素。切片操作可以返回原數組的視圖。切片操作使用冒號(:)來分隔開始索引、結束索引和步長。#創建一個一維數組表示股票價格prices=np.array([100,200,300,400,500,600])#獲取第2個到第4個元素(索引從1到3)subset=prices[1:4]print('第2個到第4個元素:',subset)#獲取前3個元素subset=prices[:3]print('前3個元素:',subset)#獲取從第4個元素到末尾的所有元素subset=prices[3:]print('從第4個元素到末尾的所有元素:',subset)#以步長為2獲取元素subset=prices[::2]print('以步長為2獲取的元素:',subset)?代碼運行結果如下:第2個到第4個元素:[200300400]前3個元素:[100200300]從第4個元素到末尾的所有元素:[400500600]以步長為2獲取的元素:[100300500]2.1數組運算NumPy2.1.6數組的運算(1)算術運算NumPy支持對數組進行元素級的算術運算,包括加法運算、減法運算、乘法運算、除法運算等。以下為加法運算的示例代碼:importnumpyasnp#創建兩個一維數組表示股票價格prices1=np.array([100,200,300,400])prices2=np.array([10,20,30,40])#數組加法add_result=prices1+prices2print('數組加法結果:',add_result)?代碼運行結果為:數組加法結果:[110220330440]2.1數組運算NumPy2.1.6數組的運算(2)廣播機制廣播是指NumPy在算術運算期間對數組的形狀進行自動擴展,使形狀不一致的數組也能進行運算。#創建一個一維數組和一個標量prices=np.array([100,200,300,400])scalar=10#通過廣播機制進行數組與標量的加法運算broadcast_result=prices+scalarprint('廣播機制結果:',broadcast_result)?代碼運行結果為:“廣播機制結果:[110210310410]”,原有數組每個元素分別加10。2.1數組運算NumPy2.1.6數組的運算(3)統計運算NumPy可以對數組進行各種統計分析,常用于計算金融數據的均值、標準差等統計量,以評估投資回報和風險。#創建一個一維數組表示股票價格prices=np.array([100,200,300,400,500])#計算均值mean_price=np.mean(prices)print('均值:',mean_price)#計算標準差std_price=np.std(prices)print('標準差:',std_price)#計算最大值max_price=np.max(prices)print('最大值:',max_price)#計算最小值min_price=np.min(prices)print('最小值:',min_price)?代碼運行結果為:均值:300.0標準差:141.4213562373095最大值:500最小值:1002.1數組運算NumPy2.1.6數組的運算(4)聚合運算NumPy支持對數組進行求和、求積、累積和等聚合運算,常用于對多只股票的價格進行求和、求積等操作,以進行組合分析和投資組合優化。#創建一個二維數組表示多只股票的價格prices=np.array([[100,200,300],[400,500,600]])#求和sum_prices=np.sum(prices)print('求和:',sum_prices)#按列求和sum_prices_col=np.sum(prices,axis=0)print('按列求和:',sum_prices_col)#按行求和sum_prices_row=np.sum(prices,axis=1)print('按行求和:',sum_prices_row)?代碼運行結果為:求和:2100按列求和:[500700900]按行求和:[6001500]2.1數組運算NumPy2.1.6數組的運算(5)線性代數運算NumPy提供了豐富的線性代數函數,可以進行矩陣乘法、求逆、特征值計算等操作。#創建兩個二維數組表示矩陣matrix1=np.array([[1,2],[3,4]])matrix2=np.array([[5,6],[7,8]])#矩陣乘法dot_product=np.dot(matrix1,matrix2)print('矩陣乘法結果:\n',dot_product)#矩陣求逆inverse_matrix=np.linalg.inv(matrix1)print('矩陣求逆結果:\n',inverse_matrix)#計算矩陣的特征值和特征向量eigenvalues,eigenvectors=np.linalg.eig(matrix1)print('特征值:',eigenvalues)print('特征向量:\n',eigenvectors)?代碼運行結果為:矩陣乘法結果:[[1922][4350]]矩陣求逆結果:[[-2.1.][1.5-0.5]]特征值:[-0.372281325.37228132]特征向量:

[[-0.82456484-0.41597356][0.56576746-0.90937671]]2.2數據處理pandas2.2數據處理pandas2.2.1pandas概述(1)pandas的主要功能及其特點01高級數據結構:pandas提供了兩種核心數據結構——Series(序列)和DataFrame(數據框)。Series是一個帶有標簽的一維數組,DataFrame是一個帶有行列標簽的二維數據結構。使用這些數據結構可以輕松地進行索引、切片和其他數據操作。強大的數據操作功能:pandas支持對數據進行增刪改查、排序、合并等各種操作,極大地方便了數據的清洗和處理。數據讀取與存儲:pandas能夠讀取與存儲多種數據格式的數據,如CSV、Excel、SQL、JSON格式的數據等,使數據的導入、導出更加方便。數據處理:pandas提供了強大的數據處理功能,可以方便地檢測、替換、刪除缺失數據,以確保數據的完整性和一致性。高性能:pandas底層基于NumPy實現,具有高性能,能夠處理大規模數據集。020304052.2數據處理pandas2.2.1pandas概述(2)pandas的常見應用場景04

010203金融及商業數據分析:pandas可以用來處理和分析銷售數據、客戶數據等商業數據及大規模金融數據,幫助企業做出數據驅動式的決策。科研數據處理:在科學研究中,pandas用于處理實驗數據、研究數據等,可進行統計分析和可視化展示。數據清洗和預處理:pandas使數據清洗和預處理(如處理缺失值、重復數據、異常值等)變得簡單、高效,并可與其他大數據工具(如Dask、PySpark)集成,擴展其處理能力。機器學習數據準備:pandas在機器學習中的數據準備階段扮演著重要角色,它可用于特征工程、數據歸一化、數據拆分等。2.2數據處理pandas2.2.2Series的創建(1)使用列表或數組創建Series可以通過將Python列表、NumPy數組傳遞給pd.Series()函數來創建Series,示例代碼如下:importpandasaspdimportnumpyasnp#使用列表創建Seriesstock_prices=pd.Series([100,200,300,400,500])print('使用列表創建的Series:\n',stock_prices)#使用NumPy數組創建Seriesprice_changes=np.array([5,-2,3,-1,4])price_series=pd.Series(price_changes)print('使用NumPy數組創建的Series:\n',price_series)2.2數據處理pandas2.2.2Series的創建(2)使用字典創建Series可以通過將字典傳遞給pd.Series()函數來創建Series,字典的鍵會作為Series的索引,值會作為Series的數據。#使用字典創建Seriesstock_dict={'AAPL':150,'MSFT':250,'GOOG':2750}stock_series=pd.Series(stock_dict)print('使用字典創建的Series:\n',stock_series)(3)指定索引創建SeriesSeries的每個元素都有一個與之相關的標簽(索引),可以在創建Series時顯式地指定索引,以確保數據與索引一一對應。#指定索引創建Seriesstock_prices=pd.Series([100,200,300,400,500],index=['AAPL','MSFT','GOOG','AMZN','META'])print('指定索引創建的Series:\n',stock_prices)2.2數據處理pandas2.2.3Series的索引及切片(1)索引常見的Series索引方法有基于位置的索引(整數或.iloc屬性)、基于標簽的索引(標簽名或.loc屬性)、布爾索引,示例代碼如下:importpandasaspd#創建一個示例Seriesstock_prices=pd.Series([100,200,300,400,500],index=['AAPL','MSFT','GOOG','AMZN','META'])print('原始Series:\n',stock_prices)#基于位置的索引:通過整數索引第一個元素print('第一個元素:',stock_prices[0])#基于位置的索引:通過整數索引最后一個元素print('最后一個元素:',stock_prices[-1])#基于位置的索引:使用.iloc屬性索引元素print('使用.iloc基于位置的索引:',stock_prices.iloc[2])#基于標簽的索引:通過標簽名索引元素print("標簽為'GOOG'的元素:",stock_prices['GOOG'])#基于標簽的索引:使用.loc屬性索引元素print('使用.loc基于標簽的索引:',stock_prices.loc['GOOG'])#布爾索引:篩選價格大于300的股票high_prices=stock_prices[stock_prices>300]print('價格大于300的股票:\n',high_prices)2.2數據處理pandas2.2.3Series的索引及切片(2)切片常見的Series切片方法有基于位置的切片(整數或.iloc屬性)、基于標簽的切片(標簽名或.loc屬性)。#基于位置的切片:通過整數訪問第二個到第四個元素(切片)print('第二個到第四個元素:\n',stock_prices[1:4])#基于位置的切片:使用.iloc屬性切片print('使用.iloc基于位置的切片:\n',stock_prices.iloc[1:4])#基于標簽的切片:通過標簽名切片print("標簽從'MSFT'到'AMZN'的元素:\n",stock_prices['MSFT':'AMZN'])#基于標簽的切片:使用.loc屬性切片print('使用.loc基于標簽的切片:\n',stock_prices.loc['MSFT':'AMZN'])2.2數據處理pandas2.2.4DataFrame的創建(1)使用字典創建DataFrameimportpandasaspd#使用字典創建DataFramedata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Salary':[50000,60000,70000]}df=pd.DataFrame(data)print('使用字典創建的DataFrame:\n',df)將字典傳遞給pd.DataFrame()函數來創建DataFrame,字典的鍵作為列名,值作為列數據。2.2數據處理pandas2.2.4DataFrame的創建(2)使用列表創建DataFrame#使用列表創建DataFramedata=[['Alice',25,50000],['Bob',30,60000],['Charlie',35,70000]]df=pd.DataFrame(data,columns=['Name','Age','Salary'])print('使用列表創建的DataFrame:\n',df)將列表傳遞給pd.DataFrame()函數來創建DataFrame。2.2數據處理pandas2.2.4DataFrame的創建(3)使用NumPy數組創建DataFrameimportnumpyasnp#使用NumPy數組創建DataFramedata=np.array([['Alice',25,50000],['Bob',30,60000],['Charlie',35,70000]])df=pd.DataFrame(data,columns=['Name','Age','Salary'])print('使用NumPy數組創建的DataFrame:\n',df)將NumPy數組傳遞給pd.DataFrame()函數來創建DataFrame。2.2數據處理pandas2.2.4DataFrame的創建(4)使用Series創建DataFrame#使用Series創建DataFramenames=pd.Series(['Alice','Bob','Charlie'])ages=pd.Series([25,30,35])salaries=pd.Series([50000,60000,70000])df=pd.DataFrame({'Name':names,'Age':ages,'Salary':salaries})print('使用Series創建的DataFrame:\n',df)通過Series來創建新的DataFrame。?2.2數據處理pandas(1)寫入與讀取CSV文件?使用DataFrame.to_csv()函數可將DataFrame寫入CSV文件,使用pd.read_csv()函數可從CSV文件中讀取數據,并將其轉換為DataFrame。2.2.5

DataFrame的寫入與讀取?importpandasaspd#創建一個示例DataFramedata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Salary':[50000,60000,70000]df=pd.DataFrame(data)#將DataFrame寫入CSV文件df.to_csv('employee_data.csv',index=False)print('DataFrame已寫入CSV文件:employee_data.csv')#從CSV文件中讀取數據,并將其轉換為DataFramedf_csv=pd.read_csv('employee_data.csv')print('從CSV文件讀取的DataFrame:\n',df_csv)?2.2數據處理pandas(2)寫入與讀取Excel文件??使用DataFrame.to_excel()函數可將DataFrame寫入Excel文件,使用pd.read_excel()函數可從Excel文件中讀取數據,并將其轉換為DataFrame。使用上述創建的DataFrame。2.2.5

DataFrame的寫入與讀取?#將DataFrame寫入Excel文件df.to_excel('employee_data.xlsx',index=False)print('DataFrame已寫入Excel文件:employee_data.xlsx')#從Excel文件中讀取數據,并將其轉換為DataFramedf_excel=pd.read_excel('employee_data.xlsx')print('從Excel文件讀取的DataFrame:\n',df_excel)2.2數據處理pandas2.2.6DataFrame的索引(1)行索引importpandasaspd#創建一個示例DataFramedata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Salary':[50000,60000,70000]}df=pd.DataFrame(data)print('原始DataFrame:\n',df)#訪問第一行數據print('\n訪問第一行數據:\n',df.iloc[0])DataFrame的每一行都有一個唯一的索引,這個索引可以是整數、字符串或日期等。默認情況下,DataFrame的行索引是整數,從0開始,類似Python列表的索引。2.2數據處理pandas2.2.6DataFrame的索引(2)列索引#訪問'Age'列print("\n訪問'Age'列:\n",df['Age'])#訪問多列數據print('\n訪問多列數據:\n',df[['Name','Salary']])DataFrame的每一列也可以有一個索引,通常是一個字符串,表示列的名稱。列索引用于標識DataFrame中的每列數據。使用上述創建好的df進行列索引。2.2數據處理pandas2.2.6DataFrame的索引(3)多級索引#創建一個帶有多級索引的DataFramearrays=[['AAPL','AAPL','MSFT','MSFT'],['2018','2019','2018','2019']]index=pd.MultiIndex.from_arrays(arrays,names=('Stock','Year'))data={'Price':[150,160,200,210]}df_multi=pd.DataFrame(data,index=index)print('帶有多級索引的DataFrame:\n',df_multi)#使用多級索引進行數據查詢print('\n查詢多級索引的數據(按Stock):\n',df_multi.loc['AAPL'])print('\n查詢多級索引的數據(按Stock和Year):\n',df_multi.loc[('AAPL','2018')])DataFrame可以有多個索引層次,稱為多級索引或分層索引。多級索引允許DataFrame的行和列都有多個索引,使得DataFrame可以表示更復雜的數據結構。2.2數據處理pandas2.2.7DataFrame的增刪改查(1)增加數據importpandasaspd#創建一個示例DataFramedata={'Name':['Alice','Bob','Charlie'],'Age':[25,30,35],'Salary':[50000,60000,70000]}df=pd.DataFrame(data)#增加新列:直接賦值df['Department']=['HR','Engineering','Finance']#增加新行:使用索引df.loc[df.index.max()+1]=['Tom',29,43000,'Marketing']print('\n增加新行后的DataFrame:\n',df)可通過直接賦值來增加新列,或使用索引增加新行。2.2數據處理pandas2.2.7DataFrame的增刪改查(2)刪除數據#刪除列df=df.drop(columns=['Department'])#刪除Department列#刪除行df=df.drop(index=2)#刪除索引為2的行print('\n刪除行后的DataFrame:\n',df)可使用drop()函數刪除指定列或指定行。(3)修改數據#修改單個元素df.at[0,'Age']=26#修改整列數據df['Salary']=df['Salary']+5000#修改符合條件的行數據df.loc[df['Name']=='Tom','Age']='39'print('\n修改數據后的DataFrame:\n',df)可通過行列索引直接賦值修改單個元素,也可在條件篩選后通過賦值來修改整列或整行。2.2數據處理pandas2.2.7DataFrame的增刪改查(4)查找數據#按條件查找數據high_salary=df[df['Salary']>60000]print('\n查找工資高于60000的數據:\n',high_salary)#按標簽查找數據print('\n按標簽查找數據:\n',df.loc[1])#按位置查找數據print('\n按位置查找數據:\n',df.iloc[1])可使用布爾索引查找數據,或使用.loc或.iloc查找特定行或列。2.2數據處理pandas2.2.8DataFrame的合并(1)concat()函數importpandasaspd#創建示例DataFrame表示股票價格df1=pd.DataFrame({'Stock':['AAPL','MSFT','GOOG'],'Price':[150,200,2750]})df2=pd.DataFrame({'Stock':['AMZN','META'],'Price':[3400,300]})#沿行拼接result=pd.concat([df1,df2],axis=0,ignore_index=True)print('沿行拼接后的DataFrame:\n',result)使用concat()函數可將多個DataFrame沿指定軸(行或列)拼接在一起。2.2數據處理pandas2.2.8DataFrame的合并(2)merge()函數#創建示例DataFrameleft=pd.DataFrame({'Stock':['AAPL','MSFT','GOOG'],'Price':[150,200,2750]})right=pd.DataFrame({'Stock':['AAPL','MSFT','GOOG'],'Volume':[1000,2000,1500]})使用merge()函數可根據指定的鍵或索引將兩個DataFrame連接在一起,類似SQL中的JOIN操作,連接類型包括內連接(InnerJoin)、外連接(OuterJoin)、左連接(LeftJoin)和右連接(RightJoin)。#內連接result=pd.merge(left,right,on='Stock')print('內連接后的DataFrame:\n',result)#外連接result=pd.merge(left,right,how='outer',on='Stock')print('外連接后的DataFrame:\n',result)#左連接result=pd.merge(left,right,how='left',on='Stock')print('左連接后的DataFrame:\n',result)#右連接result=pd.merge(left,right,how='right',on='Stock')print('右連接后的DataFrame:\n',result)2.2數據處理pandas2.2.8DataFrame的合并(3)combine_first()函數#創建示例DataFramedf1=pd.DataFrame({'Stock':['AAPL','MSFT','GOOG'],'Price':[150,200,None],'Volume':[1000,None,1500]})df2=pd.DataFrame({'Stock':['AAPL','MSFT','GOOG'],'Price':[None,200,2750],'Volume':[1000,2000,None]})#使用combine_first()函數合并result=bine_first(df2)print('使用combine_first()合并后的DataFrame:\n',result)使用combine_first()函數將兩個DataFrame合并在一起,可以保留第一個DataFrame中的非缺失數據,并用第二個DataFrame中的非缺失數據填充第一個DataFrame中的缺失數據。2.3數據繪圖Matplotlib2.3數據繪圖Matplotlib2.3.1Matplotlib繪圖基礎(1)安裝與導入在使用Matplotlib繪圖前,需要通過“importmatplotlib.pyplotasplt”語句導入matplotlib.pyplot模塊。?【注意】若Anaconda沒有安裝Matplotlib庫,則需先使用pip命令語句“pipinstallmatplotlib”安裝庫,再導入matplotlib.pyplot模塊。2.3數據繪圖Matplotlib2.3.1Matplotlib繪圖基礎(2)基本繪圖流程Matplotlib的基本繪圖流程包括以下步驟,如圖2-2所示。圖2-2基本繪圖流程2.3數據繪圖Matplotlib2.3.1Matplotlib繪圖基礎(2)基本繪圖流程步驟1創建畫布與子圖。創建一個空白畫布,并將整個畫布劃分為多個部分,以便在同一個圖上繪制多個圖形。函數名稱函數作用plt.figure()創建一個空白畫布,可以指定畫布大小、像素figure.add_subplot()創建并選中子圖,可以指定子圖的行數、列數和要繪制的子圖序號表2-3畫布與子圖函數步驟2繪制圖形。可使用plt.plot()、plt.scatter()等函數在畫布上繪制折線圖、散點圖等(詳見2.3.2節)。2.3數據繪圖Matplotlib2.3.1Matplotlib繪圖基礎(2)基本繪圖流程步驟3自定義圖形。Matplotlib提供了豐富的自定義選項,包括線型、顏色、標記樣式等,可以通過函數參數進行調整,以達到所需的視覺效

溫馨提示

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

評論

0/150

提交評論