Skip to content

Commit 5a8dbf7

Browse files
kotamatsuokarhshadrach
authored andcommitted
BUG: value_counts not working correctly on ExtensionArrays (pandas-dev#33674)
1 parent ec6e02d commit 5a8dbf7

File tree

4 files changed

+24
-0
lines changed

4 files changed

+24
-0
lines changed

pandas/tests/extension/base/methods.py

+12
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@ def test_value_counts(self, all_data, dropna):
2828

2929
self.assert_series_equal(result, expected)
3030

31+
def test_value_counts_with_normalize(self, data):
32+
# GH 33172
33+
data = data[:10].unique()
34+
values = np.array(data[~data.isna()])
35+
36+
result = (
37+
pd.Series(data, dtype=data.dtype).value_counts(normalize=True).sort_index()
38+
)
39+
40+
expected = pd.Series([1 / len(values)] * len(values), index=result.index)
41+
self.assert_series_equal(result, expected)
42+
3143
def test_count(self, data_missing):
3244
df = pd.DataFrame({"A": data_missing})
3345
result = df.count(axis="columns")

pandas/tests/extension/decimal/test_decimal.py

+4
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,10 @@ def test_value_counts(self, all_data, dropna):
181181

182182
tm.assert_series_equal(result, expected)
183183

184+
@pytest.mark.xfail(reason="value_counts not implemented yet.")
185+
def test_value_counts_with_normalize(self, data):
186+
return super().test_value_counts_with_normalize(data)
187+
184188

185189
class TestCasting(BaseDecimal, base.BaseCastingTests):
186190
pass

pandas/tests/extension/json/test_json.py

+4
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,10 @@ class TestMethods(BaseJSON, base.BaseMethodsTests):
193193
def test_value_counts(self, all_data, dropna):
194194
pass
195195

196+
@unhashable
197+
def test_value_counts_with_normalize(self, data):
198+
pass
199+
196200
@unhashable
197201
def test_sort_values_frame(self):
198202
# TODO (EA.factorize): see if _values_for_factorize allows this.

pandas/tests/extension/test_numpy.py

+4
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,10 @@ class TestMethods(BaseNumPyTests, base.BaseMethodsTests):
199199
def test_value_counts(self, all_data, dropna):
200200
pass
201201

202+
@pytest.mark.xfail(reason="not working. will be covered by #32028")
203+
def test_value_counts_with_normalize(self, data):
204+
return super().test_value_counts_with_normalize(data)
205+
202206
@pytest.mark.skip(reason="Incorrect expected")
203207
# We have a bool dtype, so the result is an ExtensionArray
204208
# but expected is not

0 commit comments

Comments
 (0)