I have my table with ab test results by segments like this
import pandas as pd
import numpy as np
data = [['a', 'segment1', 12,14], ['a', 'segment1', 12,14], ['b', 'segment2', 12,11],['a', 'segment2', 10,11],
['b', 'segment1', 4,5], ['b', 'segment1', 32,15], ['b', 'segment2', 14,8],['a', 'segment2', 11,21],
['b', 'segment1', 1,21], ['b', 'segment1', 4,21], ['a', 'segment2', 6,32],['b', 'segment2', 3,21],
]
df_data = pd.DataFrame(data, columns = ['test_group', 'segment', 'feature1', 'feature2'])
df_data
| test_group | segment | feature1 | feature2 |
|---|---|---|---|
| a | segment1 | 12 | 14 |
| a | segment1 | 12 | 14 |
| b | segment2 | 12 | 11 |
| a | segment2 | 10 | 11 |
| ... | ... | ... | ... |
And I want to calculate MannWhitney U-test(
scipy.stats.mannwhitneyu(group_a,
group_b,
use_continuity=True, alternative='two-sided')
) group by segments. Desirable table should look like this
| segment | test_group | feature1 | feature2 |
|---|---|---|---|
| segment1 | a | ||
| segment1 | b | p_value | p_value |
| segment2 | a | ||
| segment2 | b | p_value | p_value |