溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

發(fā)布時間:2021-11-30 14:49:44 來源:億速云 閱讀:806 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

第一部分是學(xué)習(xí)使用pandas進(jìn)行數(shù)據(jù)數(shù)據(jù)。pandas中有兩大數(shù)據(jù)結(jié)構(gòu),分別是series序列和DataFrame數(shù)據(jù)框。使用pandas的實(shí)驗(yàn)對象是之前電腦本地的一些氣象數(shù)據(jù),存儲格式為.xlsx。實(shí)驗(yàn)數(shù)據(jù)僅僅是實(shí)驗(yàn)數(shù)據(jù)而已,用它來練習(xí)pandas還是不錯的,至少目前。

pandas數(shù)據(jù)分析的大概步驟也不復(fù)雜,導(dǎo)入庫—>讀取數(shù)據(jù)—>數(shù)據(jù)操作(切片,篩選,組合,排序,批處理等)—>寫出數(shù)據(jù)到csv或xlsx或txt純文本。

pandas的數(shù)據(jù)讀取很容易:

import pandas as pddata = pd.read_excel(r'D:\inuyasha\codeX\Python\氣象數(shù)據(jù)1960-2018\1960.xlsx')
series = data['平均氣溫'] #序列,就是1,2,3這樣排列下去的series_to_dataframe=pd.DataFrame(series) #把series數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)為數(shù)據(jù)框結(jié)構(gòu),pd兩大數(shù)據(jù)結(jié)構(gòu)series_to_dataframe

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

重命名,增加索引操作:

datare = data.rename(columns={'平均氣溫':'平均溫'}) #使用rename方法重命名列的名字,字典,1是原名,2是更換后的名字datare['INDEX'] = datare.index #原基礎(chǔ)上增加索引,.index方法,名INDEXdatare['均溫'] = datare['平均溫'] #沒有替代原來的那一列,而是新增一列,一模一樣的,末尾添加datare.drop(columns='INDEX') #刪除原來列datare

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

刪除某一行,也可以刪除多行,index是行索引,axis指針對所有列:

df1 = datare.drop(index=0,axis=1)
據(jù)索引刪除多行,index是行索引,axis指針對所有列df2 = datare.drop(index=[0,1,2,3],axis=1)

定位和提取數(shù)據(jù):

datare['區(qū)站號'].isin([50136]) #isin函數(shù)判斷這一列中是否存在這個數(shù),數(shù)字這不要加引號,否則就成字符串了datare[datare['區(qū)站號'].isin([50136])] #在原始數(shù)據(jù)中取出定位到的數(shù)據(jù)datare[-datare['區(qū)站號'].isin([50136])] #在原始數(shù)據(jù)中取出定位到的數(shù)據(jù),前面加一個橫線表示反選

如果想一次就提取多列呢,那就把需要的列以list形式放進(jìn)去

data_multicolu2 = datare[['區(qū)站號','緯度','經(jīng)度','年','月','日','平均溫']] #列表形式把需要的多列切片提取出來data_multicolu2

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

排序:

datare.sort_values(by='平均溫',ascending=False)

還有更多功能,這里就不一一寫出來了。多用幾次就熟悉了。之前想的一個問題,如何提取多個xlsx里面的某些數(shù)據(jù),這不就發(fā)揮作用了嘛哈哈。

第二部分是Geopandas讀取shp數(shù)據(jù)+繪圖展示+添加經(jīng)緯度標(biāo)識(EWSN)

腳本如下:

import geopandas as gpdimport numpy as npimport matplotlib.pyplot as pltimport cartopy.crs as ccrsfrom cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatterimport cmaps#import arcpy
gd_boundary = gpd.read_file('D:\ArcGISgeobase\guangdata\gd_boundary.shp')gd_road = gpd.read_file('D:\ArcGISgeobase\guangdata\gd_road.shp')#fig,ax = plt.subplots(figsize=(16,12)) #設(shè)置畫布大小plt.figure(figsize=(16, 12))ax = plt.subplot(projection=ccrs.PlateCarree())#全局設(shè)置plt.rcParams['font.family'] = 'Times New Roman'plt.rcParams['font.size'] = 16
gd_boundary.plot(ax=ax,facecolor='none',edgecolor='k',linewidth=0.99) #邊界設(shè)置gd_road.plot(ax=ax,edgecolor='b',cmap=cmaps.posneg_2,lw=0.3,legend=False) #路網(wǎng)設(shè)置
ax.set_yticks(np.arange(20, 26, 1.0),crs=ccrs.PlateCarree())ax.set_xticks(np.arange(109, 118, 1.0),crs=ccrs.PlateCarree())
ax.xaxis.set_major_formatter(LongitudeFormatter()) #經(jīng)緯度標(biāo)識顯示,EWSNax.yaxis.set_major_formatter(LatitudeFormatter())

#ax.set_axis_on() #打開矩形邊框ax.set_title('Guangdong_Roads',fontsize=16) #設(shè)置標(biāo)題
plt.grid() #設(shè)置網(wǎng)格

展示結(jié)果如下圖,發(fā)現(xiàn)了連經(jīng)緯度標(biāo)識都沒有,雖然可以根據(jù)數(shù)據(jù)變化方向識別,不過增加上經(jīng)緯度標(biāo)識還是要好一些。然后古哥瀏覽器找了一下看看有沒有解決方法,結(jié)果沒找到,看到很多教程都沒有添加這個經(jīng)緯度標(biāo)識,于是自己動手:

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

自己動手添加經(jīng)緯度標(biāo)識:

plt.figure(figsize=(16, 10))ax = plt.subplot(projection=ccrs.PlateCarree())ax.set_yticks(np.arange(20, 26, 1.0),crs=ccrs.PlateCarree())ax.set_xticks(np.arange(109, 118, 1.0),crs=ccrs.PlateCarree())
ax.xaxis.set_major_formatter(LongitudeFormatter()) #經(jīng)緯度標(biāo)識顯示,EWSNax.yaxis.set_major_formatter(LatitudeFormatter())

現(xiàn)在來看看效果吧,啊哈,這樣的話,經(jīng)緯度標(biāo)識不就來了嘛

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

然后我又想使用ArcPy做一下路網(wǎng)線密度分析,但是配置它太麻煩了,于是轉(zhuǎn)到ArcGIS去操作一把(雖然害怕隨時會卡退啊,特別是數(shù)據(jù)沒保存的情況下)

第三部分使用ArcGIS做一下路網(wǎng)線密度操作以及局部放大圖。局部放大圖有它自己的作用,就是假如在密集度很大的情況下,看起來是模糊一片的,那么就可能需要局部放大了,畫一個示意圖吧:

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

So,來到ArcGIS,加載路網(wǎng)數(shù)據(jù)和矢量邊界這兩個數(shù)據(jù)就夠了

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

修飾出圖,看起來勉強(qiáng),這個color好像是前幾天自己調(diào)的來著,應(yīng)該是吧,沒記錯的話。

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

有一些地方感覺太密集了,不好看,那么就給它局部放大一下,原理就是新建一個數(shù)據(jù)框。

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖

以上是“如何使用Pandas,GeoPandas和ArcGIS實(shí)現(xiàn)數(shù)據(jù)處理和繪圖”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI