Winsorize
winsorize(raster, percentiles, bands=None, inside=False, nodata=None)
Winsorize data based on specified percentile values.
Takes one nodata value that will be ignored in calculations. Replaces values between [minimum, lower percentile] and [upper percentile, maximum] if provided. Works both one-sided and two-sided but raises error if no percentile values provided.
Percentiles are symmetrical, i.e. percentile_lower = 10 corresponds to the interval [min, 10%]. And percentile_upper = 10 corresponds to the intervall [90%, max]. I.e. percentile_lower = 0 refers to the minimum and percentile_upper = 0 to the data maximum.
Calculation of percentiles is ambiguous. Users can choose whether to use the value for replacement from inside or outside of the respective interval. Example: Given the np.array[5 10 12 15 20 24 27 30 35] and percentiles(10, 10), the calculated percentiles are (5, 35) for inside and (10, 30) for outside. This results in [5 10 12 15 20 24 27 30 35] and [10 10 12 15 20 24 27 30 30], respectively.
If no band/column selection specified, all bands/columns will be used. If a parameter contains only 1 entry, it will be applied for all bands. The percentiles can be set for each band individually, but inside parameter is same for all bands.
Parameters:
Name | Type | Description | Default |
---|---|---|---|
raster |
DatasetReader
|
Data object to be transformed. |
required |
bands |
Optional[Sequence[int]]
|
Selection of bands to be transformed. |
None
|
percentiles |
Sequence[Tuple[Optional[Number], Optional[Number]]]
|
Lower and upper percentile values (lower, upper) between [0, 100]. |
required |
inside |
bool
|
Whether to use the value for replacement from the left or right of the calculated percentile. |
False
|
nodata |
Optional[Number]
|
Nodata value to be considered. |
None
|
Returns:
Name | Type | Description |
---|---|---|
out_array |
ndarray
|
The transformed data. |
out_meta |
dict
|
Updated metadata. |
out_settings |
dict
|
Log of input settings and calculated statistics if available. |
Raises:
Type | Description |
---|---|
InvalidRasterBandException
|
The input contains invalid band numbers. |
NonMatchingParameterLengthsException
|
The input does not match the number of selected bands. |
InvalidParameterValueException
|
The input does not match the requirements (values, order of values) |
Source code in eis_toolkit/transformations/winsorize.py
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
|