首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何绘制大熊猫图形计数表

如何绘制大熊猫图形计数表
EN

Stack Overflow用户
提问于 2016-09-01 19:53:24
回答 2查看 1.1K关注 0票数 3

我有一个dataframe,它有两个列customer1customer2,它们都是字符串值。我想对这两列中的每对计数进行方形的图形表示。

我能做到

代码语言:javascript
运行
复制
df[['customer1', 'customer2']].value_counts()

这会让我数清楚。但是我怎么能做一些看起来有点像:

从结果来看?

我不能提供我真正的数据集,但是这里有一个在csv中有三个标签的玩具示例。

代码语言:javascript
运行
复制
customer1,customer2
a,b
a,c
a,c
b,a
b,c
b,c
c,c
a,a
b,c
b,c
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-09-01 20:15:14

更新:

是否可以对行/列进行排序,以便最高计数的行位于顶部?在这种情况下,顺序是b,a,c。

你可以这样做(在这里):

代码语言:javascript
运行
复制
In [80]: x = df.pivot_table(index='customer1',columns='customer2',aggfunc='size',fill_value=0)

In [81]: idx = x.max(axis=1).sort_values(ascending=0).index

In [82]: idx
Out[82]: Index(['b', 'a', 'c'], dtype='object', name='customer1')

In [87]: sns.heatmap(x[idx].reindex(idx), annot=True)
Out[87]: <matplotlib.axes._subplots.AxesSubplot at 0x9ee3f98>

旧答案:

您可以从热图()模块中使用seaborn方法:

代码语言:javascript
运行
复制
In [42]: import seaborn as sns

In [43]: df
Out[43]:
  customer1 customer2
0         a         b
1         a         c
2         a         c
3         b         a
4         b         c
5         b         c
6         c         c
7         a         a
8         b         c
9         b         c

In [44]: x = df.pivot_table(index='customer1',columns='customer2',aggfunc='size',fill_value=0)

In [45]: x
Out[45]:
customer2  a  b  c
customer1
a          1  1  2
b          1  0  4
c          0  0  1

In [46]: sns.heatmap(x)
Out[46]: <matplotlib.axes._subplots.AxesSubplot at 0xb150b70>

或附加注释:

代码语言:javascript
运行
复制
In [48]: sns.heatmap(x, annot=True)
Out[48]: <matplotlib.axes._subplots.AxesSubplot at 0xc596d68>

票数 2
EN

Stack Overflow用户

发布于 2016-09-01 20:20:07

正如@MaxU所提到的,seaborn.heatmap应该能工作。看来您可以使用Pandas DataFrame作为输入。

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None, linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, ax=None, xticklabels=True, yticklabels=True, mask=None, **kwargs)

https://stanford.edu/~mwaskom/software/seaborn/generated/seaborn.heatmap.html#seaborn.heatmap

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39279858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档