2016-10-11 38 views
1

如何在选择值时直观地表示常用键。我正在创建一个表单,用户将选择一个值,如'john'。我想绘制常用键'a','b'和'c'。如何解决这个问题的建议将会非常有帮助。在python中使用公共值在字典中绘制图形

d = { 
'a': ['john', 'doe', 'jane'], 
'b': ['james', 'danny', 'john'], 
'C':['john', 'scott', 'jane'], 
} 
+0

要绘制的'john'计数? –

+0

@JoeR是的!直观地显示'约翰'存在于a,b和c中。 –

回答

2

解决方案与Series.plot.bar

import pandas as pd 
import matplotlib.pyplot as plt 


df = pd.DataFrame({ 
'a': ['john', 'doe', 'jane'], 
'b': ['james', 'danny', 'john'], 
'c':['john', 'scott', 'jane'], 
}) 

#get boolean mask by condition 
print (df == 'john') 
     a  b  c 
0 True False True 
1 False False False 
2 False True False 

#sum values True 
print ((df == 'john').sum()) 
a 1 
b 1 
c 1 
dtype: int64 

(df == 'john').sum().plot.bar() 
plt.show() 

graph

如果需要显示的所有数据:

df1 = df.apply(pd.value_counts).T 
print (df1) 
    danny doe james jane john scott 
a NaN 1.0 NaN 1.0 1.0 NaN 
b 1.0 NaN 1.0 NaN 1.0 NaN 
c NaN NaN NaN 1.0 1.0 1.0 

df1.plot.bar() 
plt.show() 

graph1

1

您可以从字典数据帧:

import pandas as pd 
import matplotlib.pyplot as plt 
plt.style.use('ggplot') 

df = pd.DataFrame({ 
'a': ['john', 'doe', 'jane'], 
'b': ['james', 'danny', 'john'], 
'c':['john', 'scott', 'jane'], 
}) 

然后,你可以简单地绘制john这样的:

df.apply(lambda x: (x == 'john').sum()).plot(kind='bar') 

enter image description here

由于串john每列只发生一次,所有酒吧是相同的长度。

+0

感谢这正是我正在寻找。 –