簡體   English   中英

從每日數據中查找每日和每月平均值

[英]Find the daily and monthly mean from daily data

我對 python 很陌生,所以請與我裸露。

到目前為止,我有一個循環可以識別日期范圍內的 netcdf 文件。 我現在需要計算每日平均值,然后計算每個月的月平均值,並將其添加到我的 dataframe 中,這樣我就可以 plot 一個時間序列。

到目前為止,這是我的代碼

# !/usr/bin/python
# MODIS LONDON TIMESERIES 

print ('Initiating AQUA MODIS Time Series')

import pandas as pd              
import xarray as xr
from glob import glob
import netCDF4 
import numpy as np
import matplotlib.pyplot as plt
import os

print ('All packages imported')

#list of files 
days = pd.date_range (start='4/7/2002', end='31/12/2002')

#create dataframe
df = final_data = pd.DataFrame(index = days, columns = ['day', 'night'])

print ('Data frame created')

#for loop iterating through %daterange stated in 'days' to find path using string 

for day in days:
    path = "%i/%02d/%02d/ESACCI-LST-L3C-LST-MODISA-LONDON_0.01deg_1DAILY_DAY-%i%02d%02d000000-fv2.00.nc" % (day.year, day.month, day.day, day.year, day.month, day.day)
    print(path)

歡迎來到 SO,正如建議的那樣。 請嘗試制作一個最小的可重現示例。

如果您能夠創建 Xarray 數據集,這里是如何獲取每月平均值

import xarray as xr

# tutorial dataset with air temperature every 6 hours
ds = xr.tutorial.open_dataset('air_temperature')

# reasamples along time dimension
ds_monthly = ds.resample(time='1MS').mean()

resample()用於放大和縮小時間分辨率。 如果您熟悉 Pandas,它的有效工作方式相同。

resample(time='1MS')意思是沿time分組, 1MS是頻率。 1MS表示按 1 個月采樣(這是1M部分),新的時間向量從月初開始(這是S部分)。 這個很強大,可以提供不同的頻率,見Pandas偏移文檔

.mean()在我們想要的頻率上取數據的平均值。 在這種情況下,每個月。

您可以將mean()替換為min()max()median()std()var()sum() ,也許還有其他一些。

Xarray 有很棒的文檔, resample()文檔在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM