Skip to main content

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()