Common Methods
🔎 Selection & Indexing
sel()→ label-based selection (like Pandas.loc)
da.sel(time="2001-01-01", latitude=10.0, longitude=120.0)da.sel(time="2001-01-01", method="nearest") # nearest neighbor
isel()→ index-based selection (like Pandas.iloc)
da.isel(time=0, latitude=5, longitude=10)
where()→ conditional masking / filtering
da.where(da.wind_speed > 30, drop=True)
drop_sel()→ drop along coordinates by labels
da.drop_sel(time="2001-01-01")
interp()→ interpolation to new coordinate values
da.interp(latitude=10.5, longitude=120.5)
📊 Aggregation & Reduction
mean()→ mean along dimensions
da.mean(dim="time")
sum(),max(),min(),median()
da.max(dim="latitude")
std(),var()→ standard deviation, variance
da.std(dim="longitude")
count()→ count non-NaN values
da.count(dim="time")
🔄 Reshaping & Grouping
groupby()→ group by coordinate values
ds.groupby("time.month").mean()
resample()→ resample along a time dimension
ds.resample(time="1M").mean() # monthly mean
rolling()→ rolling window operation
ds.rolling(time=7, center=True).mean()
coarsen()→ downsample by block averaging
ds.coarsen(latitude=2, longitude=2, boundary="trim").mean()
stack()/unstack()→ reshape dimensions
ds.stack(points=("latitude", "longitude"))ds.unstack("points")
🛠️ Data Handling
fillna()→ fill missing values
da.fillna(0)
dropna()→ drop missing values along dimension
da.dropna(dim="time")
interpolate_na()→ interpolate missing values
da.interpolate_na(dim="time", method="linear")
clip()→ clip values to a range
da.clip(min=0, max=100)
📂 I/O Operations
open_dataset()→ read NetCDF
ds = xr.open_dataset("file.nc")
to_netcdf()→ save to NetCDF
ds.to_netcdf("output.nc")
open_mfdataset()→ open multiple NetCDF files as one dataset
ds = xr.open_mfdataset("*.nc", combine="by_coords")
🎨 Visualization
plot()→ quick plotting
da.isel(time=0).plot()
plot.pcolormesh()→ 2D color plot
da.isel(time=0).plot.pcolormesh()
plot.contour(),plot.contourf()→ contour plots
da.isel(time=0).plot.contourf()