SkillTable
self, data) SkillTable(
Visualize skill metrics.
SkillTable object for visualization and analysis returned by the comparer’s skill
method. The object wraps the pd.DataFrame class which can be accessed from the attribute data
.
The columns are assumed to be metrics and data for a single metric can be accessed by e.g. s.rmse
or s["rmse"]
. The resulting object can be used for plotting.
Examples
>>> sk = cc.skill()
>>> sk.mod_names
'SW_1', 'SW_2']
[>>> sk.style()
>>> sk.sel(model='SW_1').style()
>>> sk.rmse.plot.bar()
Attributes
Name | Description |
---|---|
metrics | List of metrics (columns) in the SkillTable |
mod_names | List of model names (in index) |
obs_names | List of observation names (in index) |
quantity_names | List of quantity names (in index) |
Methods
Name | Description |
---|---|
query | Select a subset of the SkillTable by a query string |
round | Round all values in SkillTable |
sel | Filter (select) specific models or observations. |
sort_index | Sort by index (level) e.g. sorting by observation |
sort_values | Sort by values e.g. sorting by rmse values |
style | Style SkillTable with colors using pandas style |
swaplevel | Swap the levels of the MultiIndex e.g. swapping ‘model’ and ‘observation’ |
to_dataframe | Convert SkillTable to pd.DataFrame |
to_geodataframe | Convert SkillTable to geopandas.GeoDataFrame |
query
SkillTable.query(query)
Select a subset of the SkillTable by a query string
wrapping pd.DataFrame.query()
Parameters
Name | Type | Description | Default |
---|---|---|---|
query | str | string supported by pd.DataFrame.query() | required |
Returns
Name | Type | Description |
---|---|---|
SkillTable | A subset of the original SkillTable |
Examples
>>> sk = cc.skill()
>>> sk_above_0p3 = sk.query("rmse>0.3")
round
round(decimals=3) SkillTable.
Round all values in SkillTable
Parameters
Name | Type | Description | Default |
---|---|---|---|
decimals | int | Number of decimal places to round to (default: 3). If decimals is negative, it specifies the number of positions to the left of the decimal point. | 3 |
Returns
Name | Type | Description |
---|---|---|
SkillTable | A new SkillTable with rounded values |
sel
=None, reduce_index=True, **kwargs) SkillTable.sel(query
Filter (select) specific models or observations.
Select a subset of the SkillTable by a query, (part of) the index, or specific columns
Parameters
Name | Type | Description | Default |
---|---|---|---|
reduce_index | bool | Should unnecessary levels of the index be removed after subsetting? Removed levels will stay as columns. By default True | True |
**kwargs | Any | Concrete keys depend on the index names of the SkillTable (from the “by” argument in cc.skill() method) “model”=… to select specific models, “observation”=… to select specific observations | {} |
Returns
Name | Type | Description |
---|---|---|
SkillTable | A subset of the original SkillTable |
Examples
>>> sk = cc.skill()
>>> sk_SW1 = sk.sel(model = "SW_1")
>>> sk2 = sk.sel(observation = ["EPL", "HKNA"])
sort_index
*args, **kwargs) SkillTable.sort_index(
Sort by index (level) e.g. sorting by observation
Wrapping pd.DataFrame.sort_index()
Returns
Name | Type | Description |
---|---|---|
SkillTable | A new SkillTable with sorted index |
Examples
>>> sk = cc.skill()
>>> sk.sort_index()
>>> sk.sort_index(level="observation")
sort_values
*args, **kwargs) SkillTable.sort_values(
Sort by values e.g. sorting by rmse values
Wrapping pd.DataFrame.sort_values()
Returns
Name | Type | Description |
---|---|---|
SkillTable | A new SkillTable with sorted values |
Examples
>>> sk = cc.skill()
>>> sk.sort_values("rmse")
>>> sk.sort_values("rmse", ascending=False)
>>> sk.sort_values(["n", "rmse"])
style
SkillTable.style(=3,
decimals=None,
metrics='OrRd',
cmap=True,
show_best**kwargs,
)
Style SkillTable with colors using pandas style
Parameters
Name | Type | Description | Default |
---|---|---|---|
decimals | int | Number of decimal places to round to (default: 3). | 3 |
metrics | str or List[str] | apply background gradient color to these columns, by default all; if columns is [] then no background gradient will be applied. | None |
cmap | str | colormap of background gradient, by default “OrRd”, except “bias” column which will always be “coolwarm” | 'OrRd' |
show_best | bool | indicate best of each column by underline, by default True | True |
Returns
Name | Type | Description |
---|---|---|
pd.Styler | Returns a pandas Styler object. |
Examples
>>> sk = cc.skill()
>>> sk.style()
>>> sk.style(precision=1, metrics="rmse")
>>> sk.style(cmap="Blues", show_best=False)
swaplevel
*args, **kwargs) SkillTable.swaplevel(
Swap the levels of the MultiIndex e.g. swapping ‘model’ and ‘observation’
Wrapping pd.DataFrame.swaplevel()
Returns
Name | Type | Description |
---|---|---|
SkillTable | A new SkillTable with swapped levels |
Examples
>>> sk = cc.skill()
>>> sk.swaplevel().sort_index(level="observation")
>>> sk.swaplevel("model", "observation")
>>> sk.swaplevel(0, 1)
to_dataframe
=True) SkillTable.to_dataframe(drop_xy
Convert SkillTable to pd.DataFrame
Parameters
Name | Type | Description | Default |
---|---|---|---|
drop_xy | bool | Drop the x, y coordinates?, by default True | True |
Returns
Name | Type | Description |
---|---|---|
pd.DataFrame | Skill data as pd.DataFrame |
to_geodataframe
='EPSG:4326') SkillTable.to_geodataframe(crs
Convert SkillTable to geopandas.GeoDataFrame
Note: requires geopandas to be installed
Note: requires x and y columns to be present
Parameters
Name | Type | Description | Default |
---|---|---|---|
crs | str | Coordinate reference system identifier passed to the GeoDataFrame constructor, by default “EPSG:4326” | 'EPSG:4326' |
Returns
Name | Type | Description |
---|---|---|
gpd.GeoDataFrame | Skill data as GeoDataFrame |