带有matplotlib绘图的高级熊猫value_counts()

时间:2020-03-24 13:48:44

标签: python pandas dataframe matplotlib seaborn

我有一个网站要管理,并且我一直在与Pandas进行数据分析,以从我的产品和提供它们的公司中获得有用的见识。

现在在我的网站上,有成千上万的产品,我为每个产品提供一个ID,以标识公司生产的每个产品,因此,公司可以拥有不同的产品。产品ID。

在我的网站上,您可以比较满足不同公司需求的产品,而我对我的网站进行了编程,只允许进行三个比较。您一次只能比较三种具有各种功能的产品。

我已经能够设置Google Analytics(分析)来跟踪数据。因此,例如下图所示:客户将product IDs 920470212并排比较。

enter image description here

我想为每种产品独立执行value_counts,然后查看哪些产品与其他产品的比较最多,并且具有这样的Seabornmatplotlib Group bar plot

enter image description here

为方便起见,这里是dataframe

df = pd.DataFrame({'ProductID_A': ['920','162','920','920','920','165','920'],
 'ProductID_B': ['470','470','470','212', np.nan,'470','470'],
 'ProductID_C': ['212','212',"212", "570",'212','1670', '212']})

感谢您的时间。

1 个答案:

答案 0 :(得分:-1)

这能达到您想要的结果吗?

df. unstack旋转原始数据帧,然后使用reset_index转换所有内容,因此不再进行分组。 groupby中的列名称是unstack的默认默认值,但可以在绘图中更改或指定。

df1 = pd.DataFrame(df.unstack()).reset_index()

df2 = df1[[0, 'level_0']].groupby(0).count()

sns.barplot(x= df2.index, y = 'level_0', data = df2)
plt.ylabel('count')
plt.xlabel('product ID')

enter image description here