Python大數(shù)據(jù)財務分析 課件 2. 財務數(shù)據(jù)分析利器-Pandas庫_第1頁
Python大數(shù)據(jù)財務分析 課件 2. 財務數(shù)據(jù)分析利器-Pandas庫_第2頁
Python大數(shù)據(jù)財務分析 課件 2. 財務數(shù)據(jù)分析利器-Pandas庫_第3頁
Python大數(shù)據(jù)財務分析 課件 2. 財務數(shù)據(jù)分析利器-Pandas庫_第4頁
Python大數(shù)據(jù)財務分析 課件 2. 財務數(shù)據(jù)分析利器-Pandas庫_第5頁
已閱讀5頁,還剩64頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

財務數(shù)據(jù)分析利器--Pandas庫第二章2024/9/12《Python大數(shù)據(jù)財務分析》配套課件目錄022.1DataFrame的創(chuàng)建03042.2文件的讀取和寫入2.3數(shù)據(jù)讀取與篩選01052.5財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)2.4數(shù)據(jù)表拼接目錄022.1.1通過列表創(chuàng)建DataFrame032.1

DataFrame的創(chuàng)建2.1.2通過字典創(chuàng)建DataFrame01補充知識點:修改索引名稱本章將簡單介紹Python數(shù)據(jù)分析的一大利器,也是一個基礎模塊——pandas庫的使用。pandas庫是基于NumPy的一個開源Python庫,被廣泛用于快速分析數(shù)據(jù),以及數(shù)據(jù)清洗和準備等工作。某種程度上可以把Pandas看作是Python版的Excel。如果是利用Anaconda安裝的Python,那么Anaconda自帶pandas庫,無須單獨安裝。Numpy是另一個重要的庫,是NumericalPython的簡稱(Numpy庫的相關知識點可以參考本書源代碼文件夾中的“補充知識點:Numpy庫基礎.pdf”)。相較于Numpy來說,Pandas更擅長處理二維數(shù)據(jù)。Pandas主要有兩種數(shù)據(jù)結(jié)構(gòu):Series和DataFrame。Series類似于通過Numpy產(chǎn)生的一維數(shù)組,不同的是Series對象不僅包含數(shù)值,還包含一組索引,其創(chuàng)建方式如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件4引言生成結(jié)果如下所示,它也是一個一維數(shù)據(jù)結(jié)構(gòu),并且對于每個元素都有一個行索引可以用來定位,比如可以通過s1[1]來定位到第二個元素“王二”。Series單獨使用相對較少,pandas主要采用DataFrame數(shù)據(jù)結(jié)構(gòu)。DataFrame是一種二維表格數(shù)據(jù)結(jié)構(gòu),直觀一點的話可以將其看作一個Excel表格。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件5引言2.1DataFrame的創(chuàng)建有兩種DataFrame常見的創(chuàng)建方法:通過列表創(chuàng)建、通過字典創(chuàng)建。2.1.1通過列表創(chuàng)建DataFrame首先是通過列表創(chuàng)建,這個和通過Numpy創(chuàng)建二維數(shù)組比較類似。引入pandas庫方式通常為importpandasaspd,然后調(diào)用DataFrame功能創(chuàng)建二維數(shù)組。將a打印輸出,運行結(jié)果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件6和之前通過Numpy生成的二維數(shù)組進行比較:可以看到通過pandas的DataFrame功能生成的二維數(shù)組更像我們在Excel中看到二維表格數(shù)據(jù),它也有行索引和列索引,其中這里的索引序號都是從0開始的。2.1.1通過列表創(chuàng)建DataFrame2024/9/12《Python大數(shù)據(jù)財務分析》配套課件7我們還可以自定義其列索引和行索引名稱,代碼如下:其中columns表示的就是列索引名稱,index表示的就是行索引名稱,輸出結(jié)果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件82.1.1通過列表創(chuàng)建DataFrame通過列表生成DataFrame還可以采用如下的方式,演示代碼如下:其效果如下:a=pd.DataFrame()#創(chuàng)建一個空DataFramedate=[1,3,5]score=[2,4,6]a['date']=datea['score']=scoredatescore012134256注意要保證date列表和score列表的長度一致,否則會報錯2024/9/12《Python大數(shù)據(jù)財務分析》配套課件92.1.1通過列表創(chuàng)建DataFrame除了通過列表創(chuàng)建DataFrame,還可以通過字典來創(chuàng)建DataFrame并可以自定義列索引,這里默認字典鍵為列索引,代碼如下:輸出結(jié)果如下,可以看到列索引已經(jīng)變成了這里字典里的鍵名了。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件102.1.1通過列表創(chuàng)建DataFrame如果想讓字典鍵變成行索引,可以通過from_dict的方式來將字典轉(zhuǎn)換成DataFrame,并同時設置orient參數(shù)為index,代碼如下:其中orient參數(shù)指定字典鍵對應的方向,默認值為columns,如果不設置成index的話,則還是默認字典鍵為列索引,輸出結(jié)果如下,此時的字典鍵已經(jīng)是行索引了。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件112.1.2通過字典創(chuàng)建DataFrame除了通過from_dict()函數(shù)設置orient參數(shù)外,我們還可以通過DataFrame的.T屬性來對列表進行轉(zhuǎn)置,演示代碼如下:結(jié)果如下:此外注意,如果想改變原來的表格結(jié)構(gòu),需要進行重新賦值,寫成b=b.T,這樣就會改變原來b的表格結(jié)構(gòu)了。通過.T同樣可以對表格進行轉(zhuǎn)置。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件122.1.2通過字典創(chuàng)建DataFrame有時要對行索引、列索引進行修改,雖然用的相對較少,這里還是簡單講下。如果想設定行索引那一列的名稱,可以通過的方式來設置,代碼如下:此時表格a如下所示:a=pd.DataFrame([[1,2],[3,4],[5,6]],columns=['date','score'],index=['A','B','C'])='公司'datescore公司

A12B34C562024/9/12《Python大數(shù)據(jù)財務分析》配套課件13補充知識點:修改行索引或列索引名稱如果想對索引進行重命名的話,可以通過rename()函數(shù),代碼如下:a=a.rename(index={'A':'萬科','B':'阿里','C':'百度'},columns={'date':'日期','score':'分數(shù)'})a.rename(index={'A':'萬科','B':'阿里','C':'百度'},columns={'date':'日期','score':'分數(shù)'},inplace=True)這里通過rename之后并沒有改變原表格結(jié)構(gòu),需要重新賦值給a才能改變原表格,或者在rename()中設置inplace參數(shù)為True,也能實現(xiàn)真正替換,代碼如下:此時表格a:

日期

分數(shù)公司

萬科

12阿里

34百度

562024/9/12《Python大數(shù)據(jù)財務分析》配套課件14補充知識點:修改行索引或列索引名稱如果想讓行索引變成常規(guī)列,可以重置索引,代碼如下,同樣需要將其重新賦值給a變量,或者在reset_index()的括號里設置inplace參數(shù)為True。a=a.reset_index()公司

日期

分數(shù)0萬科121阿里342百度56此時索引將被重置為數(shù)字序號,原索引變成新的一列,表格a如下所示:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件15補充知識點:修改行索引或列索引名稱如果想把常規(guī)列設置為行索引,可以通過如下代碼設置:a=a.set_index('日期')#或者直接寫a.set_index('日期',inplace=True)

公司

分數(shù)日期

1萬科23阿里45百度6此時的表格a如下所示:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件16補充知識點:修改行索引或列索引名稱如果想修改列索引,也可以通過a.columns=['xxx','xxx']來快速進行設置,演示代碼如下:a=pd.DataFrame([[1,2],[3,4],[5,6]],columns=['date','score'],index=['A','B','C'])a.columns=['日期','分數(shù)']2024/9/12《Python大數(shù)據(jù)財務分析》配套課件17補充知識點:修改行索引或列索引名稱目錄022.2.1文件讀取032.2

文件的讀取和寫入2.2.2文件寫入補充知識點:文件相對路徑與絕對路徑012.2.1文件讀取以下代碼用于讀取Excel數(shù)據(jù):這里的Excel工作簿文件后綴名為xlsx,如果是2003版或更早版本的Excel工作簿,其后綴則為xls。這里使用的文件路徑是相對路徑,即代碼所在的文件路徑,也可以設置成絕對路徑(相對路徑和絕對路徑的相關知識點參考3.2.2節(jié)補充知識點)。通過打印data我們便可以查看此時的表格,或者我們可以打印data.head()查看表格的前五行內(nèi)容(如果寫成head(10)則可以查看前10行數(shù)據(jù)),代碼如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件19打印結(jié)果如下:

datescoreprice02018-09-037023.5512018-09-047524.4322018-09-056523.4132018-09-066022.8142018-09-077023.21第2行代碼中的read_excel還可以設定參數(shù),使用方式如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件202.2.1文件讀取常見的參數(shù):sheet_name用于指定工作表,可以設置工作表名稱,其取值也可以為數(shù)字(默認為0,即第1個工作表);index_col用于設置某一列設置為行索引。以下代碼用于讀取CSV文件:read_csv()函數(shù)也可以指定參數(shù),使用方式如下:delimiter參數(shù)用于指定CSV文件中的分隔符號,默認為逗號;encoding參數(shù)用于指定編碼方式,一般設置為utf-8或gbk,以避免中文亂碼。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件212.2.1文件讀取以下代碼可以將數(shù)據(jù)寫入Excel工作簿。這里的文件存儲路徑使用的是相對路徑,也可以根據(jù)需要寫成絕對路徑。運行之后將在代碼所在文件夾生成一個名為“演示.xlsx”的文件,文件內(nèi)容如下圖3-1所示。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件222.2.2文件寫入想在寫入數(shù)據(jù)時不保留行索引信息,可以設置to_excel的參數(shù)。to_excel的常見參數(shù)有:sheet_name用于指定工作表名稱;index指定是否寫入行索引信息,默認為True,即保存行索引信息至輸出文件的第1列,若設置為False,則忽略行索引信息;columns用于指定要寫入的的列;encoding用于指定編碼方式。例如,要將data中的第1列數(shù)據(jù)導入Excel工作簿并忽略索引信息,則代碼如下:通過類似的方式,可以將data中的數(shù)據(jù)寫入到CSV文件當中,代碼如下:和to_excel類似,to_csv也可以設置index、columns、encoding等參數(shù)。注意,如果在導出CSV文件事出現(xiàn)了中文亂碼現(xiàn)象,且encoding參數(shù)設置成“utf-8”失效,則需要將encoding參數(shù)設置成“utf_8_sig”,代碼如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件232.2.2文件寫入相對路徑文件相對路徑,即代碼所在的文件夾,例如data.to_excel('data.xlsx')就是在代碼所在的文件夾生成Excel文件。此外,如果寫成data.to_excel('XX文件夾/data.xlsx')則是表示在代碼所在文件夾下的“XX文件夾”中生成Excel文件。絕對路徑文件絕對路徑,就是文件完整的路徑名稱,例如'E:\大數(shù)據(jù)分析\data.xlsx'就是絕對路徑,不過因為在Python中反斜杠“\”經(jīng)常有特殊含義,比如“\n”表示換行,所以通常建議寫絕對路徑的時候?qū)憙蓚€反斜杠取消可能存在的單個反斜杠的特殊含義,寫成'E:\\大數(shù)據(jù)分析\\data.xlsx’。在文件路徑的字符串前面加一個r也可以取消單個反斜杠的特殊含義,代碼如下:補充知識點:文件相對路徑與絕對路徑data.to_excel('E:\\大數(shù)據(jù)分析\\data.xlsx')#絕對路徑推薦寫法1data.to_excel(r'E:\大數(shù)據(jù)分析\data.xlsx')#絕對路徑推薦寫法2data.to_excel('E:/大數(shù)據(jù)分析/data.xlsx')#絕對路徑推薦寫法32024/9/12《Python大數(shù)據(jù)財務分析》配套課件24目錄022.3.1按照行列進行數(shù)據(jù)篩選03042.3

數(shù)據(jù)讀取與篩選2.3.2按照特定條件篩選2.3.3數(shù)據(jù)整體情況查看012.3.4數(shù)據(jù)運算、排序與刪除2.3數(shù)據(jù)讀取與篩選創(chuàng)建了DataFrame之后,就可以對其中的數(shù)據(jù)進行讀取與編輯操作.首先創(chuàng)建一個3行3列的DataFrame用于演示,行索引設定為r1、r2、r3,列索引設定為c1、c2、c3.代碼如下:打印輸出結(jié)果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件262.3.1按照行列進行數(shù)據(jù)篩選(1)按照列來選取數(shù)據(jù)先從簡單的讀取單列數(shù)據(jù)入手,代碼如下:a的打印輸出結(jié)果如下:讀取的數(shù)據(jù)不包含列索引信息,返回一維結(jié)構(gòu)序列。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件272.3.1按照行列進行數(shù)據(jù)篩選(1)按照列來選取數(shù)據(jù)通過如下代碼可以返回一個二維的表格數(shù)據(jù)(序列和表格是不同的數(shù)據(jù)結(jié)構(gòu))b的打印輸出結(jié)果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件282.3.1按照行列進行數(shù)據(jù)篩選(1)按照列來選取數(shù)據(jù)若要選取多列,則需要在中括號[]中指定列表。a的打印輸出結(jié)果如下:要讀取c1和c3列,可以寫為data[['c1','c3']]。需要特別注意的是,必須是一個列表,而不能是data['c1','c3']2024/9/12《Python大數(shù)據(jù)財務分析》配套課件29(2)按照行來選取數(shù)據(jù)可以根據(jù)行的序號來讀取數(shù)據(jù),代碼如下:打印輸出結(jié)果如下:2.3.1按照行列進行數(shù)據(jù)篩選2024/9/12《Python大數(shù)據(jù)財務分析》配套課件30(2)按照行來選取數(shù)據(jù)而pandas推薦使用iloc方法來根據(jù)行序號讀取數(shù)據(jù),這樣更直觀,而且不會像data[1:3]可能會引起混淆。代碼如下:而且如果要讀取單行,就必須用iloc方法,例如,選擇倒數(shù)第一行,代碼如下:2.3.1按照行列進行數(shù)據(jù)篩選此時如果使用data[-1]則會報錯,因為程序可能會認為-1是列名,導致混淆報錯。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件31(2)按照行來選取數(shù)據(jù)除了通過行序號讀取數(shù)據(jù)外,還可以通過loc方法根據(jù)行的名稱來讀取數(shù)據(jù),代碼如下:如果行數(shù)很多,可以通過head()函數(shù)來讀取前5行數(shù)據(jù),代碼如下:2.3.1按照行列進行數(shù)據(jù)篩選這里因為只data中只有3行數(shù)據(jù),所以通過data.head()會讀取全部數(shù)據(jù),如果只想取前2行的數(shù)據(jù),可以寫成data.head(2)。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件32(3)按照區(qū)塊來選取如果想選取某幾行的某幾列數(shù)據(jù),例如,獲得c1和c3列的前2行數(shù)據(jù),代碼如下:其實就是把前面通過行和列讀取數(shù)據(jù)的方法進行了整合,打印輸出結(jié)果如下:在實戰(zhàn)中,通常采用iloc和列讀取混合的方式來讀取特定的區(qū)塊數(shù)據(jù),代碼如下:2.3.1按照行列進行數(shù)據(jù)篩選2024/9/12《Python大數(shù)據(jù)財務分析》配套課件33(3)按照區(qū)塊來選取如果要讀取單個值,那么該方法就更有優(yōu)勢,例如,讀取c3列第1行的數(shù)據(jù),就不能寫成data['c3'][0]或data[0]['c3']了,而要采用下面的寫法,先用iloc[0]讀取第1行,再讀取c3列。2.3.1按照行列進行數(shù)據(jù)篩選也可以使用iloc和loc方法同時讀取行和列,代碼如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件34(3)按照區(qū)塊來選取loc方法使用字符串作為索引讀取數(shù)據(jù),iloc方法使用數(shù)字作為索引讀取數(shù)據(jù),d和e的打印輸出結(jié)果如下:2.3.1按照行列進行數(shù)據(jù)篩選記憶小技巧loc是location(定位、位置)的縮寫,所以通過字符索引來定位,而iloc中多了一個字母i,而i又經(jīng)常代表數(shù)字,所以是用數(shù)字作為索引iloc[0,1]表示第1行,第2列單元格。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件352.3.2按照特定條件篩選通過在中括號里設定篩選條件可以過濾行。例如,讀取c1列中數(shù)字大于1的行,代碼如下:a的打印輸出結(jié)果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件36如果有多個篩選條件,可以通過“&”符號(表示“且”)或“|”(表示“或”)連接。例如,篩選c1列數(shù)字大于1且c2列中數(shù)字小于8的行,代碼如下,注意在篩選條件兩側(cè)要加上小括號。打印輸出結(jié)果如下:2.3.2按照特定條件篩選2024/9/12《Python大數(shù)據(jù)財務分析》配套課件372.3.3數(shù)據(jù)整體情況查看通過表格的shape屬性,可以查看表格整體的行數(shù)和列數(shù),在表格數(shù)據(jù)量較大的時候能快速了解表格的行數(shù)和列數(shù)運行結(jié)果如下,其中第一個數(shù)字為表格行數(shù),第二個數(shù)字為表格列數(shù)。通過表格的describe()函數(shù)可以快速的查看表格每一列的數(shù)量、平均值、標準差、最小值、25分位數(shù)、50分位數(shù)、75分位數(shù)、最大值等信息,代碼如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件382.3.3數(shù)據(jù)整體情況查看通過表格的describe()函數(shù)可以快速的查看表格每一列的數(shù)量、平均值、標準差、最小值、25分位數(shù)、50分位數(shù)、75分位數(shù)、最大值等信息,代碼如下:

c1c2c3count3.03.03.0mean4.05.06.0std3.03.03.0min1.02.03.025%2.53.54.550%4.05.06.075%5.56.57.5max7.08.09.0運行效果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件39通過value_counts()函數(shù)則可以快速的查看某一列都有什么數(shù)據(jù),以及該數(shù)據(jù)出現(xiàn)的頻次,代碼如下:運行效果如下,可以看到c1列共有3種不同的數(shù)據(jù),且每個出現(xiàn)的頻次為1次。2.3.3數(shù)據(jù)整體情況查看2024/9/12《Python大數(shù)據(jù)財務分析》配套課件402.3.4數(shù)據(jù)運算、排序與刪除(1)數(shù)據(jù)運算從已有的列中,通過數(shù)據(jù)運算創(chuàng)造新的一列,代碼如下:輸出結(jié)果如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件41(2)數(shù)據(jù)排序使用sort_values()函數(shù)可以根據(jù)列對數(shù)據(jù)進行排序。例如,要對c2列進行降序排序,代碼如下:其中,參數(shù)by用于指定哪一列來排序;參數(shù)ascending為上升的意思,默認值為True,設置為False則表示降序排序。a的打印輸出結(jié)果如下:2.3.4數(shù)據(jù)運算、排序與刪除2024/9/12《Python大數(shù)據(jù)財務分析》配套課件42(2)數(shù)據(jù)排序使用sort_index()函數(shù)則可以根據(jù)行索引進行排序。按行索引進行升序排列的代碼如下:運行上述代碼后,則前面按c2列降序排序后生成的a表格的行索引又變成r1、r2、r3的升序排列了。同樣也可以設置ascending參數(shù)為False來進行降序排序。2.3.4數(shù)據(jù)運算、排序與刪除2024/9/12《Python大數(shù)據(jù)財務分析》配套課件43(3)數(shù)據(jù)刪除

如果要刪除數(shù)據(jù)表中的指定數(shù)據(jù),就需要用到drop()函數(shù)。具體用法如下:drop()函數(shù)常用的幾個參數(shù)解釋如下:index用于指定要刪除的行;columns用于指定要刪除的列;inplace的默認值為False,表示該刪除操作不改變原表格,而是返回一個執(zhí)行刪除操作后的新DataFrame,如果設置為True,則會直接在原表格中進行刪除操作。例如,刪除c1列的數(shù)據(jù),代碼如下:2.3.4數(shù)據(jù)運算、排序與刪除2024/9/12《Python大數(shù)據(jù)財務分析》配套課件44(3)數(shù)據(jù)刪除刪除多列的數(shù)據(jù),例如,c1和c3列,可以通過列表的方式聲明,代碼如下:刪除行數(shù)據(jù),例如,刪去第1行和第3行的數(shù)據(jù),代碼如下2.3.4數(shù)據(jù)運算、排序與刪除上述代碼中刪除數(shù)據(jù)后又賦值給新的變量,不會改變原表格data的結(jié)構(gòu),如果想改變原表格data的結(jié)構(gòu),可以設置inplace參數(shù)為True,代碼如下:輸入行索引的名稱而不是數(shù)字序號2024/9/12《Python大數(shù)據(jù)財務分析》配套課件45目錄022.4.1merge()函數(shù)032.4

數(shù)據(jù)表拼接2.4.2concat()函數(shù)2.4.3append()函數(shù)012.4數(shù)據(jù)表拼接Pandas庫提供的數(shù)據(jù)合并與重塑為兩個數(shù)據(jù)表的拼接提供了極大的便利。主要包括merge()函數(shù)、concat()函數(shù)、append()函數(shù),其中merge和append筆者個人用得較多。假設創(chuàng)建了如下兩個DataFrame數(shù)據(jù)表,需要將它們合并:上述代碼得到的df1和df2的內(nèi)容如下表所示df1df2

公司分數(shù)

公司股價0萬科900萬科201阿里951阿里1802百度852京東302024/9/12《Python大數(shù)據(jù)財務分析》配套課件472.4.1.merge()函數(shù)merge()函數(shù)可以根據(jù)一個或多個列將不同數(shù)據(jù)表格中的行連接起來,代碼如下:df3的內(nèi)容如下表所示:

公司分數(shù)股價0萬科90201阿里95180可以看到,merge()函數(shù)直接根據(jù)相同的列名(“公司”列)對數(shù)據(jù)表格進行了進行合并,而且默認選取的是兩個表共有的列內(nèi)容(萬科、阿里)。如果相同的列名不止一個,可以通過on參數(shù)指定按照哪一列進行合并,代碼如下:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件48默認的合并其實是取交集(inner連接),即選取兩表共有的內(nèi)容,如果想取并集(outer連接),即選取兩表所有的內(nèi)容,可以設置how參數(shù),代碼如下:運行代碼后,df3的內(nèi)容如下表所示,可以看到所有數(shù)據(jù)都在,原來沒有的內(nèi)容則賦值為空值NaN。

公司分數(shù)股價0萬科90.020.01阿里95.0180.02百度85.0NaN3京東NaN30.02.4.1.merge()函數(shù)2024/9/12《Python大數(shù)據(jù)財務分析》配套課件49如果想保留左表(df1)全部內(nèi)容,而不太在意右表(df2),可以將how參數(shù)設置為left,代碼如下:此時df3的內(nèi)容如下表所示,完整保留了df1的內(nèi)容(萬科、阿里、百度)。

公司分數(shù)股價0萬科90.020.01阿里95.0180.02百度85.0NaN2.4.1.merge()函數(shù)2024/9/12《Python大數(shù)據(jù)財務分析》配套課件50如果想保留右表(df2)的全部內(nèi)容,而不太在意左表(df1),可以將how參數(shù)設置為right。如果想根據(jù)行索引進行合并,可以設置left_index和right_index參數(shù),代碼如下:此時df3如下表所示,兩張表按照它們的行索引進行了合并。

公司_x分數(shù)公司_y股價0萬科90萬科201阿里95阿里1802百度85京東302.4.1.merge()函數(shù)2024/9/12《Python大數(shù)據(jù)財務分析》配套課件512.4.2.concat()函數(shù)concat()函數(shù)是一種全連接(UNIONALL)方式,它不需要對齊,而是直接進行合并,即不需要兩表的某些列或者索引相同,只是把數(shù)據(jù)整合到一起。所以concat()函數(shù)沒有how和on參數(shù),而是通過axis參數(shù)指定連接的軸向。該參數(shù)默認為0,按行方向連接,即縱向拼接,代碼如下:此時df3的內(nèi)容如下表所示。

公司分數(shù)股價0萬科90.0NaN1阿里95.0NaN2百度85.0NaN0萬科NaN20.01阿里NaN180.02京東NaN30.02024/9/12《Python大數(shù)據(jù)財務分析》配套課件52此時行索引為原來兩個表各自的索引,如果想重置索引,可以使用reset_index()函數(shù)將索引重置,或者在concat()函數(shù)中設置ignore_index=True,忽略原有索引,生成新的數(shù)字序列作為索引進行排序,代碼如下:如果想按列方向連接,即橫向拼接,可以設置axis參數(shù)為1,代碼如下:此時df3的內(nèi)容如下表所示。

公司分數(shù)公司股價0萬科90萬科201阿里95阿里1802百度85京東302.4.2.concat()函數(shù)2024/9/12《Python大數(shù)據(jù)財務分析》配套課件532.4.3append()函數(shù)append()函數(shù)可以被認為是concat()函數(shù)的簡化版,效果和pd.concat([df1,df2])類似,實現(xiàn)的也是縱向拼接,代碼如下:append()函數(shù)還有個常用的功能,和列表.append()一樣,可用于新增元素,代碼如下:這里一定要設置ignore_index=True,用來忽略原索引,否則會報錯(如果拼接的是DataFrame,不加這個也沒事,只是行數(shù)字索引會使用各個拼接表的原數(shù)字索引),此時df3的內(nèi)容如下表所示。

公司分數(shù)0萬科901阿里952百度853騰訊902024/9/12《Python大數(shù)據(jù)財務分析》配套課件54目錄022.5.1讀取年度數(shù)據(jù)032.5

財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)2.5.2

數(shù)據(jù)清洗2.5.3比率計算及篩選012.5財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)在本章前幾小節(jié)我們已經(jīng)介紹了如何進行pandas基礎操作,這里我們結(jié)合剛剛講到的有關DataFrame的知識點介紹一下如何使用python進行杜邦比率分析。什么是杜邦分析?杜邦分析最初由美國杜邦公司成功應用而得名,是利用各財務比率之間的內(nèi)在聯(lián)系,對公司財務狀況和經(jīng)營成果進行綜合系統(tǒng)評價的系統(tǒng)方法。通過該分析體系,一下子把本書第七章、第八章、第九章介紹的各個財務比率有機地結(jié)合了起來,打通了比率之間的聯(lián)系。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件562.5財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)什么是ROE?凈資產(chǎn)收益率(ROE)根據(jù)計算公式可以分解為以下三個指標:凈資產(chǎn)收益率

=凈利潤/營業(yè)收入×營業(yè)收入/總資產(chǎn)×總資產(chǎn)/股東權益=營業(yè)凈利率×總資產(chǎn)周轉(zhuǎn)次數(shù)×權益乘數(shù)以下這個英文的公式可能更便于記憶:ROE=NI/S×S/A×A/E2024/9/12《Python大數(shù)據(jù)財務分析》配套課件572.5財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)凈資產(chǎn)收益率

=凈利潤/營業(yè)收入×營業(yè)收入/總資產(chǎn)×總資產(chǎn)/股東權益=營業(yè)凈利率×總資產(chǎn)周轉(zhuǎn)次數(shù)×權益乘數(shù)上述分解可以表示為下圖:2024/9/12《Python大數(shù)據(jù)財務分析》配套課件582.5財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)凈資產(chǎn)收益率

=凈利潤/營業(yè)收入×營業(yè)收入/總資產(chǎn)×總資產(chǎn)/股東權益=營業(yè)凈利率×總資產(chǎn)周轉(zhuǎn)次數(shù)×權益乘數(shù)還有一句簡便的‘暗號’幫助記憶:”從銀行取錢到超市買白酒“這句暗號里涉及三個行業(yè),銀行代表著很高的權益乘數(shù),超市代表著很高的總資產(chǎn)周轉(zhuǎn)次數(shù),白酒代表著很高的營業(yè)凈利率。這樣一來就將三個不易記憶的比率毫無違和地串聯(lián)在了一句話里。2024/9/12《Python大數(shù)據(jù)財務分析》配套課件592.5財務數(shù)據(jù)處理–杜邦分析案例實戰(zhàn)凈資產(chǎn)收益率

=凈利潤/營業(yè)收入×營業(yè)收入/總資產(chǎn)×總資產(chǎn)/股東權益=營業(yè)凈利率×總資產(chǎn)周轉(zhuǎn)次數(shù)×權益乘數(shù)要想提高凈資產(chǎn)收益率,就可以努力提高上述任意一個比率?!盃I業(yè)凈利率”體現(xiàn)了企業(yè)的盈利能力;“總資產(chǎn)周轉(zhuǎn)次數(shù)”體現(xiàn)了企業(yè)的運營能力;“權益乘數(shù)”則體現(xiàn)了企業(yè)的償債能力。更深入地說,“營業(yè)凈利率”對企業(yè)利潤表進行了概括反映、“權益乘數(shù)”對企業(yè)資產(chǎn)負債表進行了概括反映,而“總資產(chǎn)周轉(zhuǎn)次數(shù)”則把利潤表和資產(chǎn)負債表聯(lián)系起來,使ROE指標可以綜合分析評價企業(yè)整體經(jīng)營成果和財務狀況。2024/9/12《Pyt

溫馨提示

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

評論

0/150

提交評論