国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Pandas源碼分析(一): 核心類型DataFrame的實現(xiàn)

2023-02-02 19:17 作者:StepfenShawn  | 我要投稿

最近在玩數(shù)據(jù)分析需要用到Pandas處理數(shù)據(jù), 在網(wǎng)上看到了各種騷操作,為了提升開發(fā)效率(避免造輪子)必須得read?the?fucking?source?code?只有讀懂了源代碼?,才算是懂了原理。順便來模仿(學習)一下大神寫代碼的風格。。。

DataFrame?類的定義

我們先來看一下DataFrame結構是怎么定義的:

我們寫一個簡單的Pandas案例并使用pbd進行調試, 看看新建一個DataFrame對象后會發(fā)生什么:

我們輸入"s"進入構造函數(shù)調用:

然后一直輸入"n&l"進行逐行調試并打印, 我們看到首先它會判斷數(shù)據(jù)和數(shù)據(jù)類型是否為空:

之后又會根據(jù)所給的數(shù)據(jù)類型進行相應的操作,中間的代碼有點多,我們先來看看data是dict時的情況:

?它會調用"dict_to_mgr"方法賦值給一個臨時變量mgr, 然后用mgr初始化父類NDFrame。

那么我們來看看"dict_to_mgr"方法做了些什么, 代碼的注釋大概是說將序列轉化為矩陣:

然后它會判斷列是否為None, 我們沒有聲明columns, 所以進入else:

else部分會計算出keys, columns, 然后來看看keys和colums的值是多少:

此時columns是一個Index類型了, 列的索引已經(jīng)計算好了,接下來到計算行的操作了!!!

調試一波后arrays的值為一個list, 它把dict的所有的value放入一個list里了:

最后返回為一個mgr類型:

這樣就求出mgr了, 我們發(fā)現(xiàn)mgr是BlockManager的:

一個DataFrame就新建完了, 然后我們打印時又df時調用了__repr__:

我們來總結一下吧, 創(chuàng)建一個DataFrame時首先會檢查data和columns是否為None, 然后判斷所給data的類型, 然后獲取data的key作為columns的索引, 然后運用key新建一個索引Index類,?最后轉化為BlockFrame類型, 使用這個類可以更方便管理表格的每一個塊。


Pandas的源代碼是真得復雜, 不過用pdb逐行調試慢慢地揭開了這堆抽象的代碼結構。。。

Pandas源碼分析(一): 核心類型DataFrame的實現(xiàn)的評論 (共 條)

分享到微博請遵守國家法律
星座| 从化市| 晋中市| 泰宁县| 邵阳县| 诸城市| 女性| 阳信县| 佛教| 温州市| 巴马| 循化| 镇赉县| 唐海县| 西乌珠穆沁旗| 舞钢市| 唐海县| 高雄县| 鄂州市| 石家庄市| 安丘市| 六安市| 潼南县| 北流市| 田林县| 河西区| 鄢陵县| 新余市| 长沙市| 安阳县| 潜江市| 印江| 应城市| 康保县| 赣州市| 淮北市| 鹰潭市| 青岛市| 中江县| 岳阳县| 北碚区|