lsapy.stats.spatial_stats_summary#
- lsapy.stats.spatial_stats_summary(data, areas, name='area', mask_kwargs=None, **kwargs)[source]#
Generate a descriptive statistics summary of the data for given areas.
Returns a pandas DataFrame of data according to the given parameters. The statistics includes count, mean, std, min, max, and 25%, 50%, and 75% percentiles. Bins can be provided to further group the data into intervals. The statistics are calculated for each area provided in the areas GeoDataFrame.
- Parameters:
data (
DataArray|Dataset) – The input data.areas (
GeoDataFrame) – Areas to be used as spatial masks.name (
str) – Name of the area column in the output DataFrame. Default is ‘area’.mask_kwargs (
dict[str,Any] |None) – Additional keyword arguments passed to regionmask.from_geopandas.**kwargs (dict, optional) – Additional keyword arguments passed to lsapy.stats.stats_summary.
- Returns:
A DataFrame with the statistics for each area, including: count, mean, std, min, max, and 25%, 50%, and 75% percentiles.
- Return type:
DataFrame
Examples
>>> from lsapy.utils import open_data >>> from lsapy import SuitabilityCriteria, LandSuitabilityAnalysis >>> import lsapy.standardize as lstd >>> from xclim.indicators.atmos import growing_degree_days >>> import geopandas as gpd
Let’s first define a Land Suitability Analysis (LSA):
>>> drainage = open_data("land", variables="drainage") >>> tas = open_data("climate", variables="tas") >>> sc = { ... "drainage_class": SuitabilityCriteria( ... name="drainage_class", ... long_name="Drainage Class Suitability", ... weight=3, ... category="soilTerrain", ... indicator=drainage, ... func=lstd.discrete, ... fparams={"rules": {0: 0, 1: 0.1, 2: 0.5, 3: 0.9, 4: 1}}, ... ), ... "growing_degree_days": SuitabilityCriteria( ... name="growing_degree_days", ... long_name="Growing Degree Days Suitability", ... weight=1, ... category="climate", ... indicator=growing_degree_days(tas, thresh="10 degC", freq="YS-JUL"), ... func=lstd.vetharaniam2022_eq5, ... fparams={"a": -1.41, "b": 801}, ... ), ... } >>> lsa = LandSuitabilityAnalysis("land_use", sc) >>> lsa.run(inplace=True)
We can then load a GeoDataFrame of areas and compute the statistics summary for each area.
>>> areas = gpd.read_file("path_to_your_areas_file.shp") >>> stats = spatial_stats_summary(lsa.data, areas)