実現したいこと
KHCoderとPythonを用いて、Wordクラウドを作りたいと考えています。
ですが、KeyErrorで足止めを食らっています。
KeyErrorを消したいです。
前提
エクセルファイルを読み込んでいます。
発生している問題・エラーメッセージ
PS D:\selfpy> & C:/Users/81904/AppData/Local/Programs/Python/Python38-32/python.exe d:/selfpy/chap01/hello.py (0, 0) Traceback (most recent call last): File "d:/selfpy/chap01/hello.py", line 12, in <module> df = df[df['抽出語'].isnull() == False] File "C:\Users\81904\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\frame.py", line 3761, in __getitem__ indexer = self.columns.get_loc(key) File "C:\Users\81904\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\core\indexes\range.py", line 349, in get_loc raise KeyError(key) KeyError: '抽出語'
該当のソースコード
※ソースコードのエクセルファイル名はうまく入力できないため、今回は○○で代用していますが、そこには該当エクセルファイルのパスが入っています。
Python
1import numpy as np 2import pandas as pd 3import wordcloud 4 5#KHCoderで作成した頻出単語リスト(Excel形式)を読み込む 6xlsx = pd.ExcelFile(r"○○.xlsx") 7df = pd.read_excel(xlsx, 'Sheet2', index_col=None, header=0) 8 9#抽出語列からNaN を取り除く(念のため) 10print(df.shape) 11df = df[df['抽出語'].isnull() == False] 12print(df.shape) 13 14#col1 の語句を半角スペースを追加して数分繰り返し、col2 に格納する 15df['col2']=(df['抽出語'] + ' ') * df['出現回数'] 16#col2 の中身を一旦、リスト化する 17string = df['col2'].values 18string = string.tolist() 19 20len = len(df) 21#各リストの最後についていた半角スペースを削除する python3.9より可能なメソッドを利用 22for i in range(0, len): 23 string[i] = string[i].removesuffix(' ') 24#print(string) 25#リストの内容をひとまとめの文字列(分かち書きテキスト)にし、これをWordCloudのインプットとする 26string = ' '.join(string) 27print(string) 28 29#WordCloud のstop_words機能で以下の言葉はWordCloud で使わないようにする 30stop_words =['ない', '行う','対応'] 31 32#テキストからwordcloudを生成 33fpath = "/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf" 34wordc = wordcloud.WordCloud( 35 font_path=fpath, 36 background_color='white', 37 stopwords = set(stop_words), 38 collocations = False, 39 width=800, 40 height=600) 41 42#画像ファイルとして保存 43wordc.generate(string).to_file('wordcloud_kishida.png')
試したこと
- get関数を入れてみた。
-range.pyの349行目を「抽出語」に変えてみた。→治らず。
補足情報(FW/ツールのバージョンなど)
参考にしたページ:https://www.so-wi.com/2022/05/15/khcoder_wordcloud_make.html
入力エクセルファイルの内容(どのような行や列になっているか)を提示ください。
たんに「抽出語」という列がないのでは?
質問のコードの
> xlsx = pd.ExcelFile(r"○○.xlsx")
の行末に全角のスペースがあるみたいです
実際のコードには無いのかもしれませんが、もしそうなら、実際に動かしてるコードにできるだけ近いものを質問に載せてください
エラーが出てる
> df = df[df['抽出語'].isnull() == False]
のすぐ上に
print(df.info())
を追加して実行して、表示された結果の「Column」の下に書かれてる列名の中に、「抽出語」はありますでしょうか?
> df = df[df['抽出語'].isnull() == False]
> KeyError: '抽出語'
列名が間違っているだけかと思いますが、確認されたのでしょうか?
3名の皆様、ご回答ありがとうございました。
引き続き、よろしくお願いいたします。
https://www.so-wi.com/2022/05/15/khcoder_wordcloud_make.html
のコードをそのまま使ってるようですが、そのコードは上記webページに書かれてるように、KH Coderで作成した頻出単語リストを格納した「khc6_kishida_frequent.xlsx」を処理するために書かれたものですので、「khc6_kishida_frequent.xlsx」と同じ形式なら大丈夫ですが、形式が違うファイルには合いません
> シート2に「抽出語」という先頭列を作ることにより解決
をしないといけないのなら、質問者さんが処理したいエクセル・ファイルは、「khc6_kishida_frequent.xlsx」とは形式が異なるのですよね

回答1件
あなたの回答
tips
プレビュー