2013版基層自治組織統計程式碼資料整理

2013版基層自治組織統計程式碼資料整理

民政部網站上提供了基層組織統計程式碼,只有2012、2013兩年有這個檔案下載,同時這兩年也提供了縣以下行政程式碼表,htm格式的。因為每年都有行政區劃的調整,2014至今都是隻提供縣以上的資料和縣以下的變更資料。

2013版基層自治組織統計程式碼資料整理

我們今天來整理2013版的基層組織統計程式碼資料:

下載解壓出文字檔案

2013版基層自治組織統計程式碼資料整理

這個檔案有23M資料73。7萬行。

我們用Power Query作簡單處理:

資料載入後是這個樣子的:

用的TAB鍵來區分層級歸屬,這樣的格式不方便我們作資料統計,所以我們要作適當地整理。

2013版基層自治組織統計程式碼資料整理

DAX中有PATH是非常適合處理這種層級結構資料,但是需要給出父級、子級的編碼,然後才能用PATH類的函式來做資料統計。

子碼整理比較簡單,只是去掉多餘的字元就可以了。

2013版基層自治組織統計程式碼資料整理

父級編碼要複雜一些,我們先把原始碼分列用TAB分列:

2013版基層自治組織統計程式碼資料整理

這樣我們就能看清楚真實的層級關係了,為了整理父級編碼,我們需要向下填充所有的編碼,在填充之前需要替換空白為null:

2013版基層自治組織統計程式碼資料整理

然後向下填充:

2013版基層自治組織統計程式碼資料整理

有的同學會說,兩個省交界的位置會出現越界情況:

2013版基層自治組織統計程式碼資料整理

這個沒關係,我們最後要透過子碼來判斷,子碼與前面的每一列進行判斷,相等才有結果。

作判斷之前要對前面的這些列作格式整理,清楚不可見字元:

2013版基層自治組織統計程式碼資料整理

穩妥起見Text。Clean、Text。Trim都做一次,然後我們來建立父碼:

2013版基層自治組織統計程式碼資料整理

其實原理很簡單,就是用子碼與前面的每一列對比,

與第一列相同,沒有父級null;

與第二列相同,父級是第一列;

與第三列相同,父級是第二列;

與第四列相同,父級是第三列;

與第五列相同,父級是第四列;

這裡還有特殊情況要處理,直轄市的第二列是null,所以我們要判斷如果是直轄市,本來父級是第二列的要改成第一列,四個直轄市的二位編碼是:

北京:11

天津:12

上海:31

重慶:50

多加一個if判斷就好了。

最後刪除前面的列就可以了:

2013版基層自治組織統計程式碼資料整理

DAX整理

資料統計的時候我們還是要處理一下直轄市的層級問題,不然直轄市的區會與其他省的地級市同級,所以我們要先做一個層級深度的調整:

2013版基層自治組織統計程式碼資料整理

透過這個度量值來調整直轄市區及以下組織程式碼的層級,直轄市區及以下組織程式碼的層級

度加1。

我們可以用這個層級深度來作為篩選條件,篩選出各個層級的表格:

2013版基層自治組織統計程式碼資料整理

[p]=1就是省級行政單位

[p]=2就是地市級行政單位

[p]=3就是區縣級行政單位

[p]=4就是街道級行政單位

[p]=5就是社群居委會級行政單位

2013版基層自治組織統計程式碼資料整理

然後我們要統計這些資料就很簡單啦,分別統計各個表的行數就可以了,當然我們也可以不用建立這些實際表,直接寫在度量值中也是可以的。

我們可以根據層級關係來建立關係:

2013版基層自治組織統計程式碼資料整理

然後看統計結果:

2013版基層自治組織統計程式碼資料整理

各省地級市數量:

2013版基層自治組織統計程式碼資料整理

各省區縣數量:

2013版基層自治組織統計程式碼資料整理

各省街道數量:

2013版基層自治組織統計程式碼資料整理

各省社群數量:

2013版基層自治組織統計程式碼資料整理

分解樹:

2013版基層自治組織統計程式碼資料整理