csvのデータからストップワード辞書を作るため、以下のサイトのソースコードをを参考に、プログラムを動かそうとしたのですが、KeyError: '0'というエラーが出てきましたた。csvデータはヘッダーなし5000行程度、3列という構成です。
リンク内容 <<<参考サイト
↓自身のソースコードです。
import pandas as pd csv_df = pd.read_csv('SamData.csv', encoding='utf-8') from janome.tokenizer import Tokenizer t = Tokenizer() words = [] word_dic = {} for i, rows in csv_df.iterrows(): malist = t.tokenize(rows['0']) for w in malist: word = w.surface ps = w.part_of_speech.split(",")[0] if not ps in ["形容詞", "名詞", "副詞"]: continue if not word in word_dic: word_dic[word] = 0 word_dic[word] += 1 words.append(w.base_form) keys = sorted(word_dic.items(), key= lambda x:x[1], reverse=True) for word, cnt in keys[:100]: print("{0}({1})".format(word, cnt), end=" | ") print("finish")
ネットの対処方を試してみたのですが、結果は同じでした。
↓実行時のターミナル画面です。
(header=None追加後のエラー)
Traceback (most recent call last):
File "pandas/index.pyx", line 159, in pandas.index.IndexEngine.get_loc (pandas/index.c:4018)
File "pandas/hashtable.pyx", line 303, in pandas.hashtable.Int64HashTable.get_item (pandas/hashtable.c:6589)
TypeError: an integer is required
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/Desktop/program/pro_code/CntWord_csv.py", line 13, in <module>
malist = t.tokenize(rows['0'])
File "/Users/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/pandas/core/series.py", line 583, in getitem
result = self.index.get_value(self, key)
File "/Users/.pyenv/versions/anaconda3-4.2.0/lib/python3.5/site-packages/pandas/indexes/base.py", line 1980, in get_value
tz=getattr(series.dtype, 'tz', None))
File "pandas/index.pyx", line 103, in pandas.index.IndexEngine.get_value (pandas/index.c:3332)
File "pandas/index.pyx", line 111, in pandas.index.IndexEngine.get_value (pandas/index.c:3035)
File "pandas/index.pyx", line 161, in pandas.index.IndexEngine.get_loc (pandas/index.c:4084)
KeyError: '0'
宜しくお願い致します。
回答3件
あなたの回答
tips
プレビュー