最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用python爬取連續(xù)降水?dāng)?shù)據(jù)信息實(shí)例

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

介紹

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

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

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

這里以創(chuàng)建的隨機(jī)數(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ù),并按照時間升序進(jìn)行排列。對于其他值,比如暴雨日數(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 計(jì)算間隔天數(shù)

與鄰近的前一天進(jìn)行時間相減計(jì)算,判斷間隔的天數(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ù)全部歸成一類,作為單獨(dú)的dataframe來操作,比如可以用來計(jì)算起止日期和連續(xù)天數(shù)等。

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

日期標(biāo)志需要分成兩部分。

第一部分是不連續(xù)的日期,對應(yīng)的間隔天數(shù)大于1,出現(xiàn)日期也對應(yīng)了其本身日期,另外第一天對應(yīng)的日期也是其本身。通過apply方法來讀取間隔天數(shù)和 datetime進(jìn)行設(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['日期標(biāo)志'] = df_sort[['間隔天數(shù)', 'datetime']].apply(start_date, axis=1)

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

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

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

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

2.4 按類別進(jìn)行劃分

前一步中將連續(xù)天數(shù)的降水以開始日期來標(biāo)志了,也就是日期標(biāo)志列中具有相同值的就算作連續(xù)降水,以groupby函數(shù)對日期標(biāo)志進(jìn)行劃分,并自定義函數(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,
        '累計(jì)降水量(mm)': df['rain(mm)'].sum(),
    }
    return pd.Series(out)
    
out = df_sort.groupby(by='日期標(biāo)志').apply(dateinfo)
out.to_excel('連續(xù)降水統(tǒng)計(jì).xlsx')

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

持續(xù)降水信息

3 小結(jié)

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

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

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

打完,收工!

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

相關(guān)文章

  • 詳解python調(diào)用cmd命令三種方法

    詳解python調(diào)用cmd命令三種方法

    這篇文章主要介紹了詳解python調(diào)用cmd命令三種方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • pandas將DataFrame的幾列數(shù)據(jù)合并成為一列

    pandas將DataFrame的幾列數(shù)據(jù)合并成為一列

    本文主要介紹了pandas將DataFrame的幾列數(shù)據(jù)合并成為一列,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Python3如何日志同時輸出到控制臺和文件

    Python3如何日志同時輸出到控制臺和文件

    這篇文章主要介紹了Python3如何日志同時輸出到控制臺和文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Python logging 模塊的原理和常用配置

    Python logging 模塊的原理和常用配置

    在 程序開發(fā)中,日志是調(diào)試、監(jiān)控、問題排查的核心工具,而在python程序開發(fā)中,內(nèi)置的logging模塊是處理日志的首選方案,本文介紹Python logging模塊的原理和常用配置,感興趣的朋友跟隨小編一起看看吧
    2026-02-02
  • python多進(jìn)程日志以及分布式日志的實(shí)現(xiàn)方式

    python多進(jìn)程日志以及分布式日志的實(shí)現(xiàn)方式

    這篇文章主要介紹了python多進(jìn)程日志以及分布式日志的實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Python實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解

    Python實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用詳解

    這篇文章主要介紹了Python實(shí)例方法、類方法、靜態(tài)方法的區(qū)別與作用,結(jié)合實(shí)例形式分析了Python面向?qū)ο蟪绦蛟O(shè)計(jì)中實(shí)例方法、類方法、靜態(tài)方法的概念、原理、用法及相關(guān)操作技巧,需要的朋友可以參考下
    2019-03-03
  • Python數(shù)據(jù)的標(biāo)準(zhǔn)輸出與格式化輸出

    Python數(shù)據(jù)的標(biāo)準(zhǔn)輸出與格式化輸出

    這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)的標(biāo)準(zhǔn)輸出與格式化輸出的相關(guān)資料,和大多數(shù)語言一樣,Python也是用print()函數(shù)來進(jìn)行輸出,需要的朋友可以參考下
    2023-08-08
  • 使用IPython或Spyder將省略號表示的內(nèi)容完整輸出

    使用IPython或Spyder將省略號表示的內(nèi)容完整輸出

    這篇文章主要介紹了使用IPython或Spyder將省略號表示的內(nèi)容完整輸出,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 最新評論

    武宁县| 达拉特旗| 连江县| 蒲江县| 石首市| 松滋市| 苏尼特右旗| 舞阳县| 阿拉善左旗| 塔城市| 神农架林区| 修武县| 视频| 祥云县| 涟水县| 盈江县| 句容市| 遵义市| 海盐县| 阳东县| 邢台市| 夏邑县| 留坝县| 宁德市| 阳东县| 商南县| 沽源县| 泰宁县| 宜城市| 昭觉县| 察哈| 潞城市| 平阳县| 玉溪市| 台北县| 喀喇沁旗| 平度市| 桑植县| 汕头市| 新宁县| 隆回县|