Skip to content

Commit a5f5115

Browse files
authored
CLN: groupby (#41363)
1 parent 5db1866 commit a5f5115

File tree

3 files changed

+29
-37
lines changed

3 files changed

+29
-37
lines changed

pandas/core/groupby/generic.py

+24-32
Original file line numberDiff line numberDiff line change
@@ -688,9 +688,9 @@ def describe(self, **kwargs):
688688

689689
def value_counts(
690690
self,
691-
normalize=False,
692-
sort=True,
693-
ascending=False,
691+
normalize: bool = False,
692+
sort: bool = True,
693+
ascending: bool = False,
694694
bins=None,
695695
dropna: bool = True,
696696
):
@@ -715,7 +715,7 @@ def apply_series_value_counts():
715715
# scalar bins cannot be done at top level
716716
# in a backward compatible way
717717
return apply_series_value_counts()
718-
elif is_categorical_dtype(val):
718+
elif is_categorical_dtype(val.dtype):
719719
# GH38672
720720
return apply_series_value_counts()
721721

@@ -807,44 +807,36 @@ def apply_series_value_counts():
807807
sorter = np.lexsort((out if ascending else -out, cat))
808808
out, codes[-1] = out[sorter], codes[-1][sorter]
809809

810-
if bins is None:
811-
mi = MultiIndex(
812-
levels=levels, codes=codes, names=names, verify_integrity=False
813-
)
814-
815-
if is_integer_dtype(out):
816-
out = ensure_int64(out)
817-
return self.obj._constructor(out, index=mi, name=self._selection_name)
818-
819-
# for compat. with libgroupby.value_counts need to ensure every
820-
# bin is present at every index level, null filled with zeros
821-
diff = np.zeros(len(out), dtype="bool")
822-
for level_codes in codes[:-1]:
823-
diff |= np.r_[True, level_codes[1:] != level_codes[:-1]]
810+
if bins is not None:
811+
# for compat. with libgroupby.value_counts need to ensure every
812+
# bin is present at every index level, null filled with zeros
813+
diff = np.zeros(len(out), dtype="bool")
814+
for level_codes in codes[:-1]:
815+
diff |= np.r_[True, level_codes[1:] != level_codes[:-1]]
824816

825-
ncat, nbin = diff.sum(), len(levels[-1])
817+
ncat, nbin = diff.sum(), len(levels[-1])
826818

827-
left = [np.repeat(np.arange(ncat), nbin), np.tile(np.arange(nbin), ncat)]
819+
left = [np.repeat(np.arange(ncat), nbin), np.tile(np.arange(nbin), ncat)]
828820

829-
right = [diff.cumsum() - 1, codes[-1]]
821+
right = [diff.cumsum() - 1, codes[-1]]
830822

831-
_, idx = get_join_indexers(left, right, sort=False, how="left")
832-
out = np.where(idx != -1, out[idx], 0)
823+
_, idx = get_join_indexers(left, right, sort=False, how="left")
824+
out = np.where(idx != -1, out[idx], 0)
833825

834-
if sort:
835-
sorter = np.lexsort((out if ascending else -out, left[0]))
836-
out, left[-1] = out[sorter], left[-1][sorter]
826+
if sort:
827+
sorter = np.lexsort((out if ascending else -out, left[0]))
828+
out, left[-1] = out[sorter], left[-1][sorter]
837829

838-
# build the multi-index w/ full levels
839-
def build_codes(lev_codes: np.ndarray) -> np.ndarray:
840-
return np.repeat(lev_codes[diff], nbin)
830+
# build the multi-index w/ full levels
831+
def build_codes(lev_codes: np.ndarray) -> np.ndarray:
832+
return np.repeat(lev_codes[diff], nbin)
841833

842-
codes = [build_codes(lev_codes) for lev_codes in codes[:-1]]
843-
codes.append(left[-1])
834+
codes = [build_codes(lev_codes) for lev_codes in codes[:-1]]
835+
codes.append(left[-1])
844836

845837
mi = MultiIndex(levels=levels, codes=codes, names=names, verify_integrity=False)
846838

847-
if is_integer_dtype(out):
839+
if is_integer_dtype(out.dtype):
848840
out = ensure_int64(out)
849841
return self.obj._constructor(out, index=mi, name=self._selection_name)
850842

pandas/core/groupby/groupby.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -1837,7 +1837,7 @@ def first(x: Series):
18371837
return obj.apply(first, axis=axis)
18381838
elif isinstance(obj, Series):
18391839
return first(obj)
1840-
else:
1840+
else: # pragma: no cover
18411841
raise TypeError(type(obj))
18421842

18431843
return self._agg_general(
@@ -1862,7 +1862,7 @@ def last(x: Series):
18621862
return obj.apply(last, axis=axis)
18631863
elif isinstance(obj, Series):
18641864
return last(obj)
1865-
else:
1865+
else: # pragma: no cover
18661866
raise TypeError(type(obj))
18671867

18681868
return self._agg_general(
@@ -3271,7 +3271,7 @@ def get_groupby(
32713271
from pandas.core.groupby.generic import DataFrameGroupBy
32723272

32733273
klass = DataFrameGroupBy
3274-
else:
3274+
else: # pragma: no cover
32753275
raise TypeError(f"invalid type: {obj}")
32763276

32773277
return klass(

pandas/core/groupby/ops.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -276,11 +276,11 @@ def get_out_dtype(self, dtype: np.dtype) -> np.dtype:
276276

277277
@overload
278278
def _get_result_dtype(self, dtype: np.dtype) -> np.dtype:
279-
...
279+
... # pragma: no cover
280280

281281
@overload
282282
def _get_result_dtype(self, dtype: ExtensionDtype) -> ExtensionDtype:
283-
...
283+
... # pragma: no cover
284284

285285
def _get_result_dtype(self, dtype: DtypeObj) -> DtypeObj:
286286
"""

0 commit comments

Comments
 (0)