欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python爬取連續(xù)降水數(shù)據(jù)信息實例

 更新時間:2024年01月23日 10:08:22   作者:里斯斯里?氣象小筑  
這篇文章主要為大家介紹了使用python提取連續(xù)降水數(shù)據(jù)信息實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

介紹

給定每日的降水數(shù)據(jù)(數(shù)據(jù)可以缺測),提取存在連續(xù)降水的信息和累計降水量等。

程序使用python實現(xiàn),具體如下。

1 數(shù)據(jù)展示

這里以創(chuàng)建的隨機數(shù)為例:

time = pd.date_range(start='2020-01-01', end='2022-12-31', freq='D')
np.random.seed(42)
rain = np.random.uniform(-30, 30, size=len(time))
df = pd.DataFrame({'datetime':time, 'rain(mm)':rain})
df.loc[df['rain(mm)']<0, 'rain(mm)'] = 0
print(df)

打印結(jié)果如下,主要分成兩列,一列是時間datetime,一列是降水量rain(mm)。時間用來判斷是否鄰近同一天,降水用來判斷是否為降水天數(shù)。

       datetime   rain(mm)
0    2020-01-01   0.000000
1    2020-01-02  27.042858
2    2020-01-03  13.919637
3    2020-01-04   5.919509
4    2020-01-05   0.000000
...         ...        ...
1091 2022-12-27   8.978799
1092 2022-12-28   6.464208
1093 2022-12-29   0.761311
1094 2022-12-30   0.000000
1095 2022-12-31   0.000000

[1096 rows x 2 columns]

2 思路

2.1 篩選出降水天數(shù)

篩選出降水大于0的天數(shù),并按照時間升序進行排列。對于其他值,比如暴雨日數(shù)(日降水>50mm)也可以做同樣的篩選。

df_rain = df[df['rain(mm)']>0].copy()
df_sort = df_rain.sort_values(by=['datetime'], ascending=True)

打印df_sort來看一下。

       datetime   rain(mm)
1    2020-01-02  27.042858
2    2020-01-03  13.919637
3    2020-01-04   5.919509
7    2020-01-08  21.970569
8    2020-01-09   6.066901
...         ...        ...
1088 2022-12-24  29.470118
1090 2022-12-26  26.563906
1091 2022-12-27   8.978799
1092 2022-12-28   6.464208
1093 2022-12-29   0.761311

[549 rows x 2 columns]

2.2 計算間隔天數(shù)

與鄰近的前一天進行時間相減計算,判斷間隔的天數(shù)。

df_sort['間隔天數(shù)'] = df_sort['datetime'] - df_sort['datetime'].shift(1)
df_sort['間隔天數(shù)'] = df_sort['間隔天數(shù)'].apply(lambda x: x.days)

兩個日期相減出來,數(shù)據(jù)類型是timedelta64[ns],需要轉(zhuǎn)換為整數(shù),可以直接使用其屬性days。

其中第一條對應(yīng)的間隔天數(shù)為空,值為np.nan。

間隔天數(shù)

2.3 連續(xù)降水劃分

將出現(xiàn)連續(xù)降水的條數(shù)全部歸成一類,作為單獨的dataframe來操作,比如可以用來計算起止日期和連續(xù)天數(shù)等。

而在歸類時所有連續(xù)降水的條數(shù)均當作獨特的一類,也就是類名需要唯一,因此這里設(shè)置成開始日期作為唯一值。這里創(chuàng)建新的一列(日期標志)來存儲類名。

日期標志需要分成兩部分。

第一部分是不連續(xù)的日期,對應(yīng)的間隔天數(shù)大于1,出現(xiàn)日期也對應(yīng)了其本身日期,另外第一天對應(yīng)的日期也是其本身。通過apply方法來讀取間隔天數(shù)和 datetime進行設(shè)置:

def start_date(df_in):
    delta = df_in['間隔天數(shù)']
    if np.isnan(delta):
        return df_in['datetime']
    elif delta&gt;1.0:
        return df_in['datetime']
    else:
        return None

df_sort['日期標志'] = df_sort[['間隔天數(shù)', 'datetime']].apply(start_date, axis=1)

不連續(xù)日期對應(yīng)標志

第二部分是連續(xù)天數(shù),對應(yīng)的間隔天數(shù)為1,可以用前面的數(shù)值來進行填充,具體方法如下:

df_sort['日期標志'].fillna(method='ffill', inplace=True)

連續(xù)日期對應(yīng)標志

2.4 按類別進行劃分

前一步中將連續(xù)天數(shù)的降水以開始日期來標志了,也就是日期標志列中具有相同值的就算作連續(xù)降水,以groupby函數(shù)對日期標志進行劃分,并自定義函數(shù)來提取需要的信息。

def dateinfo(df):
    out = {
        '出現(xiàn)日期':df.iloc[0]['datetime'],
        '結(jié)束日期': df.iloc[-1]['datetime'],
        '持續(xù)天數(shù)': (df.iloc[-1]['datetime']-df.iloc[0]['datetime']).days+1,
        '累計降水量(mm)': df['rain(mm)'].sum(),
    }
    return pd.Series(out)
    
out = df_sort.groupby(by='日期標志').apply(dateinfo)
out.to_excel('連續(xù)降水統(tǒng)計.xlsx')

這里我提取了出現(xiàn)日期、結(jié)束日期、持續(xù)天數(shù)、累計降水量(mm),并作為一個Series返回,最終存儲為DataFrame。

持續(xù)降水信息

3 小結(jié)

通過給定的日降水數(shù)據(jù)(包含日期和降水)來判斷連續(xù)降水相關(guān)信息,比如起止日期、持續(xù)天數(shù)、累計降水量等。

當然降水是以0為界,也可以設(shè)置成暴雨(50為界)判斷等,核心思路類似。

可以是針對其他的數(shù)據(jù),需要做連續(xù)發(fā)生天數(shù)的統(tǒng)計等。

打完,收工!

以上就是使用python提取連續(xù)降水數(shù)據(jù)信息實例的詳細內(nèi)容,更多關(guān)于python提取降水數(shù)據(jù)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實現(xiàn)鍵盤控制鼠標移動

    python實現(xiàn)鍵盤控制鼠標移動

    這篇文章主要為大家詳細介紹了python實現(xiàn)鍵盤控制鼠標移動,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • python圖片灰度化處理的幾種方法

    python圖片灰度化處理的幾種方法

    灰度化處理是我們進行圖像處理的很重要的一個過程,本文主要介紹了python圖片灰度化處理的幾種方法,感興趣的可以了解一下
    2021-06-06
  • Python3基于sax解析xml操作示例

    Python3基于sax解析xml操作示例

    這篇文章主要介紹了Python3基于sax解析xml操作,結(jié)合實例形式分析了Python3使用sax解析xml文檔的相關(guān)原理與實現(xiàn)技巧,需要的朋友可以參考下
    2018-05-05
  • Python input()函數(shù)案例教程

    Python input()函數(shù)案例教程

    在 Python 中,input() 函數(shù)用于獲取用于的輸入,并給出提示。input() 函數(shù),總是返回 string 類型,因此,我們可以使用 input() 函數(shù),獲取用戶輸入的任何數(shù)據(jù)類型 ,這篇文章主要介紹了Python input()函數(shù)案例詳解,需要的朋友可以參考下
    2023-01-01
  • python?numpy庫中數(shù)組遍歷的方法

    python?numpy庫中數(shù)組遍歷的方法

    本文主要介紹了python?numpy庫中數(shù)組遍歷的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • python怎么判斷素數(shù)

    python怎么判斷素數(shù)

    在本篇文章里小編給大家整理了關(guān)于python判斷素數(shù)的方法和代碼,需要的朋友們可以學習下。
    2020-07-07
  • Python獲取指定字符前面的所有字符方法

    Python獲取指定字符前面的所有字符方法

    下面小編就為大家分享一篇Python獲取指定字符前面的所有字符方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解matplotlib中pyplot和面向?qū)ο髢煞N繪圖模式之間的關(guān)系

    詳解matplotlib中pyplot和面向?qū)ο髢煞N繪圖模式之間的關(guān)系

    這篇文章主要介紹了詳解matplotlib中pyplot和面向?qū)ο髢煞N繪圖模式之間的關(guān)系,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python基于queue和threading實現(xiàn)多線程下載實例

    python基于queue和threading實現(xiàn)多線程下載實例

    這篇文章主要介紹了python基于queue和threading實現(xiàn)多線程下載實例,是比較實用的技巧,需要的朋友可以參考下
    2014-10-10
  • Python快速從注釋生成文檔的方法

    Python快速從注釋生成文檔的方法

    這篇文章主要介紹了Python快速從注釋生成文檔的方法的相關(guān)資料,非常的簡單實用,需要的朋友可以參考下
    2016-12-12

最新評論