実現したいこと
KHCoderの出力データ(エクセルファイル)とPythonを用いてWordクラウドを作成したいです。
前提
プログラムを実行する際に、プログラムの最後のWordクラウド作成部分を入れると『ValueError: We need at least 1 word to plot a word cloud, got 0.』が出てきてしまいます。
また、dfの値なども確認してみたのですが、どうやら値が入っていないようでそこも問題点なのかなと考えていますが、いまいち先に進んでいません。
発生している問題・エラーメッセージ
PS D:\selfpy> & C:/Users/81904/AppData/Local/Programs/Python/Python38-32/python.exe d:/selfpy/chap01/hello.py df= Empty DataFrame Columns: [抽出語, 品詞, 出現回数, col2] Index: [] (0, 4) df.shape= (0, 4) Traceback (most recent call last): File "d:/selfpy/chap01/hello.py", line 46, in <module> wordc.generate(string).to_file('wordcloud_kokuminminsyu.png') File "C:\Users\81904\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wordcloud\wordcloud.py", line 639, in generate return self.generate_from_text(text) File "C:\Users\81904\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wordcloud\wordcloud.py", line 621, in generate_from_text self.generate_from_frequencies(words) File "C:\Users\81904\AppData\Local\Programs\Python\Python38-32\lib\site-packages\wordcloud\wordcloud.py", line 410, in generate_from_frequencies raise ValueError("We need at least 1 word to plot a word cloud, " ValueError: We need at least 1 word to plot a word cloud, got 0.**
該当のソースコード
※エクセルファイルの部分はうまく書けないので、○○にしております。
Python
1#使用するモジュールをimport 2import numpy as np 3import pandas as pd 4import wordcloud 5 6#KHCoderで作成した頻出単語リスト(Excel形式)を読み込む 7xlsx = pd.ExcelFile(r"○○.xlsx") 8df = pd.read_excel(xlsx, 'Sheet2', index_col=None, header=0) 9print("df=",df) 10 11#抽出語列からNaN を取り除く(念のため) 12print(df.shape) 13#print(df.info()) 14df = df[df['抽出語'].isnull() == False] 15print("df.shape=",df.shape) 16 17#col1 の語句を半角スペースを追加して数分繰り返し、col2 に格納する 18df['col2']=(df['抽出語'] + ' ') * df['出現回数'] 19#col2 の中身を一旦、リスト化する 20string = df['col2'].values 21string = string.tolist() 22 23len = len(df) 24#各リストの最後についていた半角スペースを削除する python3.9より可能なメソッドを利用 25for i in range(0, len): 26 string[i] = string[i].removesuffix(' ') 27#print(string) 28#リストの内容をひとまとめの文字列(分かち書きテキスト)にし、これをWordCloudのインプットとする 29string = ' '.join(string) 30print(string) 31 32#WordCloud のstop_words機能で以下の言葉はWordCloud で使わないようにする 33stop_words =['ない', '行う','対応'] 34 35#テキストからwordcloudを生成 36fpath = "/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf" 37wordc = wordcloud.WordCloud( 38 font_path=fpath, 39 background_color='white', 40 stopwords = set(stop_words), 41 collocations = False, 42 width=800, 43 height=600) 44 45#画像ファイルとして保存 46wordc.generate(string).to_file('wordcloud_kokuminminsyu.png') 47
試したこと
- df値を出力
- 部分的にコメントアウトしていき、どこでエラーが出てきたのかを特定。
➡46行目の部分で「要素がひとつも入っていないというエラー」が出てきました。(該当エラー)
補足情報(FW/ツールのバージョンなど)
参考にさせていただいているページ:https://www.so-wi.com/2022/05/15/khcoder_wordcloud_make.html

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