【问题标题】:Advanced pandas value_counts() with matplotlib plotting带有 matplotlib 绘图的高级 pandas value_counts()
【发布时间】:2020-07-05 00:38:05
【问题描述】:

我有一个自己管理的网站,我一直在使用 Pandas 进行数据分析,以便从我的产品和提供这些产品的公司中获得有用的见解。

现在在我的网站上,有大量的产品,我给每个产品一个 ID 来识别公司生产的每个产品,这意味着一个公司可以有不同的产品,即。产品 ID。

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

我已经能够设置谷歌分析来跟踪数据。例如下面的图表:客户将product IDs 920470212 并排比较。

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

为了您的方便,这里是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']})

感谢您的宝贵时间。

【问题讨论】:

  • 你尝试了什么?
  • 我试图熔化柱子。我也尝试为每一列做一个计数图,但我希望彼此不是单独的

标签: python pandas dataframe matplotlib seaborn


【解决方案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')

【讨论】:

  • 不,不幸的是,这并不能解决我的问题。你在描述中看到我的情节了吗?
  • 澄清一下,您需要单独的产品 ID 计数,例如 920、162、470 等?
  • 我需要一个并排的分组条形图
猜你喜欢
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-12
  • 2019-03-13
  • 2013-11-23
相关资源
最近更新 更多