Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在pandas中绘制图形计数表_Python_Pandas - Fatal编程技术网

Python 如何在pandas中绘制图形计数表

Python 如何在pandas中绘制图形计数表,python,pandas,Python,Pandas,我有一个数据帧df,它有两列customer1和customer2,它们是字符串值。我想用正方形图形表示这两列中每对的计数 我能行 df[['customer1', 'customer2']].value_counts() 这将给我计数。但我如何才能制作出看起来有点像: 结果如何 我无法提供真实的数据集,但这里有一个玩具示例,其中有三个csv标签 customer1,customer2 a,b a,c a,c b,a b,c b,c c,c a,a b,c b,c 更新: 是否可以对行/列

我有一个数据帧df,它有两列
customer1
customer2
,它们是字符串值。我想用正方形图形表示这两列中每对的计数

我能行

df[['customer1', 'customer2']].value_counts()
这将给我计数。但我如何才能制作出看起来有点像:

结果如何

我无法提供真实的数据集,但这里有一个玩具示例,其中有三个csv标签

customer1,customer2
a,b
a,c
a,c
b,a
b,c
b,c
c,c
a,a
b,c
b,c

更新:

是否可以对行/列进行排序,以使计数最高的行 在顶端?在这种情况下,顺序是b、a、c

IIUC您可以这样做(其中):

或带有注释:

In [48]: sns.heatmap(x, annot=True)
Out[48]: <matplotlib.axes._subplots.AxesSubplot at 0xc596d68>
[48]中的
:sns.heatmap(x,annot=True)
出[48]:

正如@MaxU提到的,
seaborn.热图应该可以工作。似乎可以使用熊猫数据帧作为输入

seaborn.heatmap(数据,vmin=None,vmax=None,cmap=None,center=None,robust=False,annot=None,fmt='.2g',annot_-kws=None,linecolor=white,cbar=True,cbar_-kws=None,cbar_-ax=None,square=False,ax=None,xticklabels=True,yticklabels=True,mask=None,**kwargs)


看看…@MaxU,看起来不错。你知道如何从熊猫数据框到sns.heatmap可以接受的东西吗?请提供一个样本数据set@MaxU很遗憾,我不能提供真实的数据,但我只是在csv中添加了一个玩具示例。数据框必须包含我假设的计数数据,所以我们仍然需要计算它?谢谢。是否可以对行/列进行排序,使计数最高的行位于顶部?在这种情况下,顺序是b、a、c。@eleanora,请查看更新部分谢谢您的更新。我的意思是,行和列的排序方式相同。因此,在本例中,行是b、a、c,列也是如此。
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>
In [48]: sns.heatmap(x, annot=True)
Out[48]: <matplotlib.axes._subplots.AxesSubplot at 0xc596d68>