2016-04-21 103 views
-1

我想爲keyword vs frequency列表繪製一個簡單的bar plot。 由於數據沒有header我無法使用PandasSeabron.python中的簡單條形圖

輸入

#kyuhyun,1 
#therinewyear,4 
#lingaa,2 
#starts,1 
#inox,1 
#arrsmultiplex,1 
#bollywood,1 
#kenya,1 
#time,1 
#watch,1 
#malaysia,3 

代碼:

from matplotlib import pyplot as plt 
from matplotlib import* 
import numpy as np 

x,y = np.genfromtxt('theri_split_keyword.csv', delimiter = ',', unpack=True, comments=None, usecols=(0,1)) 

plt.bar(x,y) 

plt.title('Info') 
plt.ylabel('Y axis') 
plt.xlabel('X axis') 

plt.show() 

所有我想要的情節是x axis爲條形圖關鍵字和y axis爲頻率。任何簡單的方法來繪製這將是巨大的幫助。

我得到的輸出是下面,這絕對不是我正在尋找的。 enter image description here

解決方案下面似乎是工作就像一個魅力,但我有太多的關鍵字列表中,我期待像如果我可以積唯一進入前10-20個關鍵字與相應的關鍵字選擇,使得杆情節看起來會更好。

答案中給出的解決方案的輸出。

enter image description here

回答

1
import numpy as np 
    import matplotlib.pyplot as plt 
    import csv 

    x = [] 
    y = [] 
    with open('theri_split_keyword.csv', "rb") as csvfile: 
     reader = csv.reader(csvfile, delimiter=',') 
     for row in reader: 
      x.append(row[0].lstrip('#')) 
      y.append(int(row[1])) 

    ind = np.arange(len(x)) # the x locations for the groups 
    width = 0.35  # the width of the bars 

    fig, ax = plt.subplots() 
    plt.bar(ind,y) 

    ax.set_ylabel('Y axis') 
    ax.set_title('X axis') 
    ax.set_xticks(ind + width) 
    ax.set_xticklabels(x, rotation='vertical') 


    plt.show() 
+0

嗨..謝謝你的工作解決方案。但我似乎在這裏有一個問題,關鍵字的名單太大,他們的任何方式我可以採取可能是前10 - 20個關鍵字和尊重頻率。我在編輯中加入了最後的情節。請建議,如果thr是任何這樣的選項來選擇最熱門的關鍵字。 –

+1

@SitzBlogz:如果您還有其他問題,請將其作爲單獨問題發佈;如果這回答了您的原始問題,請接受它。 – tom10

0

我不熟悉np.genfromtxt但我懷疑的問題是,它返回x爲字符串時x應該是數值數組。

也許你可以試試:

tick_marks = np.arange(len(x)) 
plt.bar(tick_marks, y) 
plt.xticks(tick_marks, x, rotation=45) 
0

不回答你的問題,但大熊貓不要求數據有一個標題。 如果您從文件讀取數據,只需選擇header = None(更多信息here)。

df = pd.read_csv(myPath, header=None) 
df.columns = ('word','freq') # my cystom header 
df.set_index('word') # not neccesary but will provide words as ticks on the plot 
df.plot(kind='bar') 

,你也可以通過數據字典,例如

df = pd.DataFrame({'word':['w1','w2','w3'],'freq':[1,2,3}) 
df.plot.bar() 
+0

能否請您以飽滿的代碼有助於獲得如何我可以讀取使用熊貓列時,我有沒有一些想法頭文件 –

+0

df = pd.read_csv(myPath,header = None)對你有幫助 –