Skip to content

Commit 35d9300

Browse files
Sarra NebliSarra99
authored andcommitted
Fixing CI errors
1 parent 7ba6ac6 commit 35d9300

File tree

1 file changed

+56
-83
lines changed

1 file changed

+56
-83
lines changed

janitor/functions/adorn.py

Lines changed: 56 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -28,35 +28,32 @@ def tabyl(
2828
Returns:
2929
A DataFrame representing the summary table.
3030
31+
Example :
3132
>>> data = {
32-
... "Category": ["A", "B", "A", "B", "A", "B"],
33-
... "Subcategory": ["X", "X", "Y", "Y", "X", "X"],
34-
... "Value": [1, 2, 3, 4, 5, 6],
33+
... "Category": ["A", "A", "B", "B", "C", "C", "A", "B", "C", "A"],
34+
... "Subcategory": ["X", "Y", "X", "Y", "X", "Y", "X", "Y", "X", "X"],
35+
... "Region": ["North", "South", "East", "West", "North",
36+
... "South", "East", "West", "North", "East"],
37+
... "Value": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
3538
... }
3639
>>> df = pd.DataFrame(data)
3740
38-
>>> result = adorn_percentages(df, col1="Category",
39-
col2="Subcategory", axis="row", fmt=True, include_ns=True)
41+
>>> result = tabyl(df, "Category", "Subcategory", show_percentages=True,
42+
... percentage_axis="row")
4043
>>> print(result)
41-
| Category | X | Y |
42-
|----------|---------|---------|
43-
| A | 50.0% (2) | 50.0% (2) |
44-
| B | 66.7% (2) | 33.3% (1) |
44+
Subcategory Category X Y
45+
0 A 3.0 (75.00%) 1.0 (25.00%)
46+
1 B 1.0 (33.33%) 2.0 (66.67%)
47+
2 C 2.0 (66.67%) 1.0 (33.33%)
4548
46-
>>> result = adorn_percentages(df, col1="Category",
47-
col2="Subcategory", axis="col", fmt=True)
49+
>>> result = tabyl(df, "Category", "Subcategory",
50+
... show_percentages=True, percentage_axis="col")
4851
>>> print(result)
49-
| Category | X | Y |
50-
|----------|---------|---------|
51-
| A | 33.3% (1) | 50.0% (3) |
52-
| B | 66.7% (2) | 50.0% (3) |
53-
54-
In this example:
55-
- The table shows counts and row-wise percentages for the `Category` and
56-
`Subcategory` columns.
57-
- The first row for Category 'A' shows 50.0% for X and 50.0% for Y,
58-
with counts in parentheses.
59-
- The second row for Category 'B' shows 66.7% for X and 33.3% for Y.
52+
Subcategory Category X Y
53+
0 A 3.0 (50.00%) 1.0 (25.00%)
54+
1 B 1.0 (16.67%) 2.0 (50.00%)
55+
2 C 2.0 (33.33%) 1.0 (25.00%)
56+
6057
"""
6158

6259
if col1 not in df.columns:
@@ -132,28 +129,29 @@ def adorn_totals(df, col1, col2, axis=0):
132129
:param axis: 0 to add a 'Total' row, 1 to add a 'Total' column
133130
:return: DataFrame with a 'Total' row/column added
134131
135-
Example:
136-
>>> data = {
137-
... "Category": ["A", "B", "A", "B", "A", "B", "A", "B"],
138-
... "Subcategory": ["X", "X", "Y", "Y", "X", "X", "Y", "Y"],
139-
... "Value": [1, 2, 3, 4, 5, 6, 7, 8],
140-
... }
141-
>>> df = pd.DataFrame(data)
142-
143-
>>> result = adorn_totals(df, col1="Category", col2="Subcategory", axis=0)
144-
>>> print(result)
145-
Category X Y Total
146-
A 6 12 18
147-
B 6 12 18
148-
Total 12 24 36
132+
Example:
133+
>>> data = {
134+
... "Category": ["A", "B", "A", "B", "A", "B", "A", "B"],
135+
... "Subcategory": ["X", "X", "Y", "Y", "X", "X", "Y", "Y"],
136+
... "Value": [1, 2, 3, 4, 5, 6, 7, 8],
137+
... }
138+
>>> df = pd.DataFrame(data)
139+
140+
>>> result = adorn_totals(df, "Category", "Subcategory", axis=0)
141+
>>> print(result)
142+
Subcategory Category X Y
143+
0 A 2 2
144+
1 B 2 2
145+
Total NaN 4 4
146+
147+
>>> result = adorn_totals(df, "Category", "Subcategory", axis=1)
148+
>>> print(result)
149+
Subcategory Category X Y Total
150+
0 A 2 2 4
151+
1 B 2 2 4
149152
150-
>>> result = adorn_totals(df, col1="Category", col2="Subcategory", axis=1)
151-
>>> print(result)
152-
Category X Y Total
153-
A 3 3 6
154-
B 3 3 6
155-
Total 6 6 12
156153
"""
154+
157155
# Generate the crosstab using tabyl with the two specified columns
158156
pivot = tabyl(df, col1, col2)
159157

@@ -182,47 +180,22 @@ def adorn_percentages(
182180
df, col1, col2, axis="row", fmt=True, include_ns=False, decimal_places=1
183181
):
184182
"""
185-
Adds percentages to a crosstab generated by tabyl, with options to format
186-
and include raw counts, and also control the behavior
187-
of adorn_pct_formatting and adorn_ns.
188-
189-
:param df: DataFrame used to generate the crosstab
190-
:param col1: First column to create the crosstab
191-
:param col2: Second column to create the crosstab
192-
:param axis: 'row' to add percentages by row, 'col' for column percentages,
193-
'all' for global percentages
194-
:param fmt: If True, formats percentages as strings
195-
(e.g., "12.5%"), else returns numeric values.
196-
:param include_ns: If True, includes raw counts alongside percentages.
197-
:param decimal_places: Number of decimal places for the percentages
198-
:param thousand_separator: Whether to add a thousand separator to the counts
199-
:param percent_format: Whether to format as percentages
200-
:return: DataFrame with percentages and optional formatting and raw counts
201-
202-
Example:
203-
Example:
204-
>>> data = {
205-
... "Category": ["A", "B", "A", "B", "A", "B"],
206-
... "Subcategory": ["X", "X", "Y", "Y", "X", "X"],
207-
... "Value": [1, 2, 3, 4, 5, 6],
208-
... }
209-
>>> df = pd.DataFrame(data)
210-
211-
>>> result = adorn_percentages(df, col1="Category",
212-
col2="Subcategory", axis="row", fmt=True, include_ns=True)
213-
214-
>>> print(result)
215-
Category X Y
216-
A 20% (1) 80% (4)
217-
B 33.33% (2) 66.67% (4)
218-
219-
>>> result = adorn_percentages(df, col1="Category",
220-
col2="Subcategory", axis="col", fmt=True)
221-
222-
>>> print(result)
223-
Category X Y
224-
A 33.33% (1) 50% (3)
225-
B 66.67% (2) 50% (3)
183+
Adds percentages to a crosstab generated by tabyl, with options to format
184+
and include raw counts, and also control the behavior
185+
of adorn_pct_formatting and adorn_ns.
186+
187+
:param df: DataFrame used to generate the crosstab
188+
:param col1: First column to create the crosstab
189+
:param col2: Second column to create the crosstab
190+
:param axis: 'row' to add percentages by row, 'col' for column percentages,
191+
'all' for global percentages
192+
:param fmt: If True, formats percentages as strings
193+
(e.g., "12.5%"), else returns numeric values.
194+
:param include_ns: If True, includes raw counts alongside percentages.
195+
:param decimal_places: Number of decimal places for the percentages
196+
:param thousand_separator: Whether to add a thousand separator to the counts
197+
:param percent_format: Whether to format as percentages
198+
:return: DataFrame with percentages and optional formatting and raw counts
226199
227200
"""
228201
# Generate the crosstab using tabyl with the two specified columns

0 commit comments

Comments
 (0)