Python 如何在pandas中绘制图形计数表
我有一个数据帧df,它有两列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 更新: 是否可以对行/列
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>