【发布时间】:2019-08-30 01:51:40
【问题描述】:
如何轻松比较多个同类群组的分布?
通常,https://seaborn.pydata.org/generated/seaborn.distplot.html 将是直观地比较分布的好工具。但是,由于我的数据集的大小,我需要对其进行压缩并只保留计数。
它被创建为:
SELECT age, gender, compress_distributionUDF(collect_list(struct(target_y_n, count, distribution_value))) GROUP BY age, gender
其中compress_distributionUDF 只需获取一个元组列表并返回每个组的计数。
这给我留下了一个列表
Row(distribution_value=60.0, count=314251, target_y_n=0)
嵌套在 pandas.Series 中,但每个 chohort 一个。
基本上类似于:
pd.DataFrame({'foo':[1,2], 'bar':['first', 'second'], 'baz':[{'target_y_n': 0, 'value': 0.5, 'count':1000},{'target_y_n': 1, 'value': 1, 'count':10000}]})
我想知道如何比较分布:
- 在
0与1的target_y_n的群组内 - 多个同类群组
以一种视觉上仍然可以理解的方式,而不仅仅是一团糟。
编辑
对于单个群组Plotting pre aggregated data in python 可能是答案,但是如何比较多个群组(不仅仅是在循环中),因为这会导致太多地块无法比较?
【问题讨论】:
-
您能否添加另一个代表您预期输出的数据框。
-
不,这个想法不是拥有另一个数据框,而是分布的视觉比较。 IE。类似于stackoverflow.com/questions/46045750/…,但使用压缩分布而不是原始值
-
qqplot会做吗?您基本上想检查组之间的分布差异:
target==0和target==1并且对于每个组,您都有值和每个值的计数,对吗? -
确实我有这些值,需要检查。
-
seaborn 有一个简单的方法来实现这一点吗?
标签: pandas matplotlib seaborn distribution