0

csv ファイルに保存された、次のようなデータの大きなテキスト ファイルの棒グラフを作成しようとしています。

#DowntonPBS, 23
#DowntonAbbey, 12
#Download, 8
#Download:, 2
#Downloads, 2
#DownstairsMixtape, 1
#DownWithAssad, 1
#DownYoTLParty, 1
#DowntonAbbey?, 1
#Downtonabbey, 1
#DowntownAbbey, 1

次のコードは私がいる場所です。この方法は過去にさまざまなプロット スクリプトで機能していましたが、ここでは見つけられないように見える何か間違ったことをしました。すべてのデータをプロットする代わりに、3 つのレコードしか取得していないようです。

import pylab as p                                                                                                                                                       
import sys                                                                                                                                                              
from matplotlib.mlab import csv2rec                                                                                                                                     

y = []                                                                                                                                                                  

fig = p.figure()                                                                                                                                                        
ax = fig.add_subplot(1,1,1)                                                                                                                                             

input = open(sys.argv[1], 'r')                                                                                                                                          

data = csv2rec(input, names=['tag', 'count'])                                                                                                                           

for item in data['count']:
        y.append(item)

N = len(y)

ind = range(N)

ax.bar(ind, y, align='center')

ax.set_ylabel('Counts')

ax.set_title('HashTag Diversity')

ax.set_xticks(ind)

group_labels = data['tag']

ax.set_xticklabels(group_labels)

fig.autofmt_xdate()

p.show()

y と N の print ステートメントを追加し、より大きなデータセットに対してスクリプトを実行すると、次のようになります。

[45, 37, 36]
3

これらの値は非常に大きな配列 "1000" 値で、長さ (N) は 1000 である必要があります。ここで何が起こっているのかわかりません。

4

1 に答える 1

1

csv2rec()デフォルトでは「#」で始まる行は無視されます。これは次の方法で変更できます。

csv2rec(input, names=['tag', 'count'], comments="something")      
于 2012-11-27T07:31:06.067 に答える