我的数据包含每个用户一行,然后根据与特定产品类别的互动,填充了1
或0
的许多列。
我正在运行一些相关性分析,并且我想删除不太重要的类别以使我的分析更容易阅读,我在我的数据框架上使用.sum()
来查看与大多数人进行交互的类别,但我现在怎样才能在这个集合上运行相关性?
以下是我.sum()
:
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
但是,无论其True
或False
值如何,都会返回所有类别。
我的最终目标是对数据使用.corr()
,如何运行此数据并仅返回类别超过50次交互的网格?
答案 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))