亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基與Python的森林資源監(jiān)測數(shù)據(jù)分析與可視化研究

        2022-05-07 11:21:42冷鴻天楊雨漸楊天淼張占忠
        林業(yè)調(diào)查規(guī)劃 2022年2期
        關(guān)鍵詞:統(tǒng)計表層級森林資源

        冷鴻天,楊雨漸,楊天淼,張占忠

        (云南省林業(yè)調(diào)查規(guī)劃院,云南 昆明 650051)

        21世紀(jì)以來,林業(yè)的發(fā)展方向逐漸由木材生產(chǎn)向生態(tài)建設(shè)轉(zhuǎn)變。通過調(diào)整監(jiān)測目標(biāo)、擴(kuò)充監(jiān)測內(nèi)容、優(yōu)化監(jiān)測方法和應(yīng)用高新技術(shù)等做法,森林資源監(jiān)測水平和服務(wù)能力得到進(jìn)一步提升[1]。為推進(jìn)生態(tài)文明建設(shè),筑牢國家西南生態(tài)安全屏障,維護(hù)生物安全和生態(tài)安全,踐行綠水青山就是金山銀山的理念,推動綠色循環(huán)低碳發(fā)展,實(shí)現(xiàn)人與自然和諧共生,滿足人們?nèi)找嬖鲩L的優(yōu)美生態(tài)環(huán)境需要,努力把云南建設(shè)成為全國生態(tài)文明建設(shè)排頭兵、中國最美麗省份,云南省通過開展森林督查、森林資源管理“一張圖”和森林資源年度監(jiān)測等工作,加強(qiáng)森林資源管理,建立和完善森林資源統(tǒng)一的監(jiān)測和管理制度[2]。

        數(shù)據(jù)分析是為了發(fā)現(xiàn)數(shù)據(jù)規(guī)律的過程,利用數(shù)學(xué)和計算機(jī)手段來處理和挖掘收集來的數(shù)據(jù)中包含的信息[3]。由于技術(shù)水平的發(fā)展,森林資源監(jiān)測圖斑越來越精細(xì),與此同時,數(shù)據(jù)量也越來越大,特別對于省或更大尺度的監(jiān)測區(qū)需要采用先進(jìn)的技術(shù)方法更加方便快捷地對海量數(shù)據(jù)進(jìn)行分析,以適應(yīng)各種不同需求。Python便是一種可以快速對海量數(shù)據(jù)進(jìn)行分析和展示的重要工具。

        自1991年誕生以來,Python已成為最受歡迎的動態(tài)編程語言之一。Python是一種動態(tài)語言,與靜態(tài)語言相比,其具有自由、靈活、簡潔等特征,依托其活躍的社區(qū)和大量強(qiáng)大的類庫可以快速完成各種使用場景的任務(wù)。在過去的10年,Python從一個邊緣或“自擔(dān)風(fēng)險”的科學(xué)計算語言,成為數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、學(xué)界和工業(yè)界軟件開發(fā)最重要的語言之一[4]。

        1 環(huán)境搭建與數(shù)據(jù)準(zhǔn)備

        進(jìn)行數(shù)據(jù)分析必要的Python類庫主要有Pandas,Geopandas,SQLite3,Numpy和Matplotlib等(表1)。Anaconda是一個免費(fèi)開源的Python語言的發(fā)行版本,用于計算科學(xué)(數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)、大數(shù)據(jù)處理和預(yù)測分析),Anaconda擁有進(jìn)行數(shù)據(jù)分析的必要類庫,也可以簡化軟件類庫管理系統(tǒng)和部署。在Anaconda軟件中沒有集成Geopandas包,需要進(jìn)行自行安裝。Anaconda中還包含Jupyter Notebook,其是一個支持運(yùn)行40多種編程語言的交互式筆記本,便于創(chuàng)建和運(yùn)行數(shù)據(jù)分析的代碼,而且還可以用單元格的方式逐塊運(yùn)行代碼,更有利于進(jìn)行數(shù)據(jù)分析。

        海量地理數(shù)據(jù)常用的存儲方法有文件地理數(shù)據(jù)庫(GDB)、Microsoft SQL server數(shù)據(jù)庫和開源的SQLite數(shù)據(jù)庫等。由于文件地理數(shù)據(jù)庫的查詢必須使用閉源收費(fèi)的Arcpy包,雖然Microsoft SQL server數(shù)據(jù)庫更強(qiáng)大,查詢速度更快,但是Microsoft SQL server數(shù)據(jù)庫安裝包很大,過于臃腫,因此決定選擇輕量開源的SQLite數(shù)據(jù)庫,SQLite數(shù)據(jù)庫集成在Python中,不需要重新安裝。

        選取的數(shù)據(jù)為2020年度云南省森林資源監(jiān)測數(shù)據(jù),包含約650萬個圖斑,數(shù)據(jù)量較大。根據(jù)《云南省2020年森林資源監(jiān)測操作細(xì)則》中要求的成果統(tǒng)計表,選擇統(tǒng)計其中較為復(fù)雜的各類土地面積統(tǒng)計表為例,表頭如表2所示。

        表1 數(shù)據(jù)分析主要類庫[4-5]Tab.1 Major class libraries of data analysis[4-5]

        2 數(shù)據(jù)分析與統(tǒng)計

        2.1 數(shù)據(jù)加載

        云南省的森林資源監(jiān)測數(shù)據(jù)量很大,如果全部使用Pandas進(jìn)行讀取會占用大量的內(nèi)存空間,所以需要使用數(shù)據(jù)庫進(jìn)行存儲,利用SQL查詢語句選擇需要使用的數(shù)據(jù)。首先使用SQLite3.connect連接SQLite數(shù)據(jù)庫,然后通過Pandas包中的read_SQL_query將SQL語句查詢分組后的結(jié)果存儲在DataFrame數(shù)據(jù)結(jié)構(gòu)中,極大地壓縮了讀入Pandas中的數(shù)據(jù)量,減輕了內(nèi)存占用和運(yùn)算壓力。代碼如下:

        import sqlite3

        with sqlite3.connect(r’C:UsersAdministratorDesktopSLJC2020.sqlite’) as conn:

        df=pd.read_sql_query(

        ’’’select SHENG as 省,SHI as 州市,XIAN as 縣,LD_QS as 土地所有權(quán),SEN_LIN_LB as 森林類別,SHI_QUAN_D as事權(quán)等級,STQW as 生態(tài)區(qū)位,

        DI_LEI as 地類,sum(MIAN_JI) as 面積

        from XZ02

        表2 各類土地面積統(tǒng)計

        group by SHENG,SHI,XIAN,LD_QS,SEN_LIN_LB,SHI_QUAN_D,STQW,DI_LEI

        order by SHENG,SHI,XIAN,LD_QS,SEN_LIN_LB,SHI_QUAN_D,STQW,DI_LEI’’’

        ,con=conn)

        2.2 數(shù)據(jù)清理

        由于森林資源監(jiān)測數(shù)據(jù)并不是漢字,而是代碼,其中數(shù)據(jù)也有很多空格和空值混用的情況,這會對數(shù)據(jù)分析造成不利影響,需要對數(shù)據(jù)進(jìn)行清理和代碼轉(zhuǎn)換。按照《云南省2020年森林資源監(jiān)測操作細(xì)則》,很多數(shù)據(jù)分類與統(tǒng)計表中所需要的分類并不相同,因此需要通過選擇、賦值和新加列的方法對數(shù)據(jù)進(jìn)行重新分類。通過讀取csv文件中的編碼映射為字典,使用replace可以將統(tǒng)計表中的代碼統(tǒng)一替換為漢字,同時也可以對數(shù)據(jù)中一些空值和空格等難以分辨但又影響分析結(jié)果的數(shù)據(jù)噪聲進(jìn)行處理。將代碼替換為漢字的代碼如下:

        import csv

        mydict={}

        with open(r‘path’) as code:

        reader=csv.reader(code)

        code_dict={rows[0]:rows[1] for rows in reader}

        replace(code_dict)

        tb[’統(tǒng)計單位’]=tb[’統(tǒng)計單位’].replace(code_dict)

        2.3 數(shù)據(jù)重塑

        將數(shù)據(jù)整合為一個DataFrame后,進(jìn)行數(shù)據(jù)重塑,以形成統(tǒng)計表的骨架。其中最重要的是pivot_table方法,其功能與Excel中的透視表一樣,選擇行和列,對聚合的數(shù)值進(jìn)行求和等操作,多個層級的數(shù)據(jù)會形成多級索引,以符合規(guī)定的表頭設(shè)計。核心代碼如下:

        tb=pd.pivot_table(df[df.地類!=’非林地’],values=’面積’,/

        index=[’省’,’州市’,’縣’,’土地所有權(quán)’,’森林類別’,’事權(quán)等級’],/

        columns=[’DILEI_0’,’DILEI_1’,’地類’],aggfunc=’sum’)

        2.4 按層級匯總

        將數(shù)據(jù)進(jìn)行透視表操作后,如果選擇多個行和列會形成多級索引。對多級索引進(jìn)行求和操作即可對所選擇的層級進(jìn)行求和,即對當(dāng)前層級的匯總,也叫分類匯總。如對列的第一層級進(jìn)行匯總,其代碼為:tb.sum(level=0,axis=1)。將按層級匯總好的數(shù)據(jù)根據(jù)表的設(shè)計規(guī)則修改列名為總計、合計或小計,并將索引用MultiIndex.from_tuples方法改為符合表的設(shè)計規(guī)則的多級索引,方便后期實(shí)現(xiàn)完整表格的合并。

        2.5 數(shù)據(jù)合并

        將按層級匯總后的分表、國土總面積表和總表合并。由于按層級匯總后順序和表頭不變,所以用concat方法直接進(jìn)行拼接。而土地總面積因索引名稱不同,要用merge方法的關(guān)鍵字進(jìn)行連接。如分層級統(tǒng)計出省、市、縣的數(shù)據(jù)和與其對應(yīng)的土地總面積與總表進(jìn)行合并,可以使用如下代碼:

        pd.concat([sheng,zhoushi,xian]).merge(tdzmj,on=’統(tǒng)計單位代碼’)

        2.6 表格優(yōu)化

        合并完成后的表頭順序與設(shè)計表頭順序不符,由于表頭和索引都是字符串,且是復(fù)雜的多級索引,不能簡單地使用排序功能實(shí)現(xiàn)設(shè)計的順序,使用Category數(shù)據(jù)類型的效果并不理想,只能采取在索引和列名前增加序號的方法進(jìn)行排序,最后再將序號去掉。統(tǒng)計完成的表格可以直接用to_excel方法生成Excel表格。

        3 數(shù)據(jù)可視化

        3.1 扇形圖

        扇形圖適用于表示每一分量所占總量的比例。扇形圖可以很好地反映云南省每種森林類別占總量的百分比。將數(shù)據(jù)按森林類別使用groupby方法進(jìn)行分組后,即可使用Pandas自帶可視化模塊進(jìn)行扇形圖繪制(圖1)。代碼如下:

        tb.plot.pie(subplots=True,autopct=’%.2f’,figsize=(8,8),title=’云南省森林類別百分比圖’)

        圖1 云南省森林類別占比Fig.1 Percentage of forest categories in Yunnan Province

        3.2 柱狀圖

        柱狀圖可以用于表示每個表示字段的多少。利用柱狀圖表示森林類別權(quán)屬數(shù)量特征可以用Pandas自帶可視化模塊進(jìn)行繪制。但如果需要對數(shù)據(jù)繪制一些復(fù)雜的可視化效果,或者對可視圖形進(jìn)行更精細(xì)的設(shè)置,就需要使用Matplotlib庫進(jìn)行繪制(圖2)。疊加柱狀圖的代碼如下:

        import matplotlib.pyplot as plt

        plt.bar(d1.columns.values,d1.loc[’國有’],label=’國有’)

        plt.bar(d1.columns.values,d1.loc[’集體’],bottom=d1.loc[’國有’],label=’集體’)

        plt.legend()

        ymax=d1.loc[’國有’].max()+d1.loc[’集體’].max()

        plt.ylim(0,ymax)

        plt.ylabel(’面積 單位:萬公頃’)

        圖2 云南省森林類別權(quán)屬Fig.2 Forest category ownership of Yunnan Province

        3.3 地圖繪制

        對于有位置信息的地理數(shù)據(jù),可使用Python繪制專題地圖。Geopandas包便是一個用于對地理信息數(shù)據(jù)進(jìn)行可視化的一個很好的工具。如果使用全省林地小班數(shù)據(jù)進(jìn)行聚類操作再計算森林覆蓋率,由于需要進(jìn)行圖形運(yùn)算,效率會很低,且數(shù)據(jù)量太大,要進(jìn)行分塊操作。所以要先統(tǒng)計出每個縣的覆蓋率,并以縣為關(guān)鍵字連接到云南省行政區(qū)劃地圖上,用Geopandas中的plot方法簡單設(shè)置大小和配色后即可完成繪制(圖3),地圖中顏色越深,表示森林覆蓋率越高。地圖繪制代碼如下:

        import geopandas as gpd

        gdf=gdf.merge(tb,on=’XIAN’)

        fig, ax = plt.subplots(1, 1)

        gdf.plot(column=’FGL’, ax=ax,cmap=’OrRd’,legend=True,figsize=(100, 100))

        圖3 云南省各縣森林覆蓋率分布Fig.3 Distribution of forest coverage in counties of Yunnan Province

        4 結(jié)論與討論

        實(shí)踐證明,使用Python可對森林資源監(jiān)測海量數(shù)據(jù)進(jìn)行快速分析和統(tǒng)計,Python語法結(jié)構(gòu)簡單的特性使其可及時地適應(yīng)不同需求。對于全省上百萬條數(shù)據(jù),從運(yùn)行程序到輸出統(tǒng)計表的時間只需十幾秒,且90%的時間用于SQL語句查詢。如果將查詢結(jié)果用于多張統(tǒng)計表將會極大地提升統(tǒng)計效率。重要的是Python代碼可以復(fù)用,稍作修改便可使用在各種需求的分析統(tǒng)計中。Python作為一種跨平臺的編程語言,將分析方法完整化和系統(tǒng)化后,可以進(jìn)行界面設(shè)計和軟件打包,并將軟件運(yùn)行在各種不同的平臺。也可以使用Python的web框架,將分析工具部署在服務(wù)器上,通過網(wǎng)頁端提供更多的服務(wù)。

        猜你喜歡
        統(tǒng)計表層級森林資源
        2020年部分在晉提前批招生院校錄取統(tǒng)計表
        軍工企業(yè)不同層級知識管理研究實(shí)踐
        基于軍事力量層級劃分的軍力對比評估
        2019年提前批部分院校在晉招生錄取統(tǒng)計表
        保護(hù)好森林資源 讓林區(qū)青山常在
        紅土地(2018年8期)2018-09-26 03:19:16
        神奇的統(tǒng)計表
        新形勢下北方森林資源保護(hù)探討
        上榜派出所統(tǒng)計表
        新形勢下加強(qiáng)森林資源檔案管理工作的構(gòu)想
        任務(wù)期內(nèi)多層級不完全修復(fù)件的可用度評估
        91麻豆国产香蕉久久精品| 白白色白白色视频发布| 日本又色又爽又黄的a片18禁| 国产精品天天在线午夜更新| 亚洲成av人在线观看无堂无码| 丰满人妻被猛烈进入中文字幕护士| 日韩人妻精品中文字幕专区| 丁香六月久久婷婷开心| 精品人妻无码视频中文字幕一区二区三区 | 久久久久久人妻一区精品| 国内精品一区视频在线播放| 日韩精品极品在线观看视频| 国产av剧情刺激对白| 小sao货水好多真紧h无码视频 | 国产成人久久精品一区二区三区| 国产美女网站视频| 久久麻豆精亚洲av品国产精品| 国产免费观看久久黄av麻豆| 日产亚洲一区二区三区| 日本a在线看| 国产精品久久中文字幕亚洲| 三级国产精品久久久99| 精品国产一区av天美传媒| 国产成人拍精品免费视频| 亚洲码无人客一区二区三区| 日韩免费视频| 国产呦系列呦交| 久久中文字幕亚洲精品最新| 精品高清一区二区三区人妖| 中文字幕一精品亚洲无线一区| 国产一区二区三区美女| 国产美女久久久亚洲综合| 国产精品一区二区av麻豆日韩| 日韩一卡2卡3卡4卡新区亚洲| 高清无码精品一区二区三区| 亚洲一区久久蜜臀av| 人妻丰满熟av无码区hd| 国产精品后入内射日本在线观看| 日日骚一区二区三区中文字幕| 亚洲综合中文字幕综合| 亚洲人成未满十八禁网站|