根据.sum()总计

时间:2018-06-12 11:52:41

标签: python pandas

我的数据包含每个用户一行,然后根据与特定产品类别的互动,填充了10的许多列。

我正在运行一些相关性分析,并且我想删除不太重要的类别以使我的分析更容易阅读,我在我的数据框架上使用.sum()来查看与大多数人进行交互的类别,但我现在怎样才能在这个集合上运行相关性?

以下是我.sum()

中的outpul示例
shoes_and_flats                                                                                           37
nightwear_and_slippers                                                                                    61
shorts_and_shorts                                                                                         23
accessories_and_fragrance                                                                                 25
jackets_and_coats_and_wool                                                                                12
dresses_and_skirts_and_sleeveless_dresses                                                                 35
swimwear_and_bikinis                                                                                      49
dresses_and_skirts_and_floral_dresses                                                                      7
jackets_and_coats_and_harrington_jackets                                                                  18
dresses_and_skirts_and_tunic_dresses                                                                       8
sports_performance_tops_and_vests                                                                          4
jeans_and_bootcut_jeans                                                                                    2
nightwear_and_nightwear                                                                                    1

通过做...

创建

totals = df.sum()

我决定删除交互少于50的类别,所以我用... totals = totals[1: -1].sort_values() > 50

但是,无论其TrueFalse值如何,都会返回所有类别。

我的最终目标是对数据使用.corr(),如何运行此数据并仅返回类别超​​过50次交互的网格?

2 个答案:

答案 0 :(得分:2)

您想要过滤数据框中的列。您使用sc.parallelize([v]).saveAsTextFile(...) True结果走在正确的轨道上,您只需将其用作过滤器

假设数据位于名为False的数据框中,这将只返回您想要的列:

df

答案 1 :(得分:0)

我相信你可以使用:

totals = totals[totals > 50]

编辑:上面接受的答案的语法对我不起作用,以防万一这里发生了其他人我发现的工作

totals = df.sum()
totals = totals[totals > 50]
df_more_than_50 = df.filter(totals.index))