質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1000閲覧

Wordクラウドを作成する際に「ValueError: We need at least 1 word to plot a word cloud, got 0.」が出てしまう。

SmaSTATION

総合スコア29

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/06/09 00:34

編集2023/06/11 00:24

実現したいこと

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

イメージ説明

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2023/06/09 05:09 編集

> print("df=",df) print(df.shape) の結果が > df= Empty DataFrame Columns: [抽出語, 品詞, 出現回数, col2] Index: [] (0, 4) df.shape= (0, 4) なら、ダメでしょう (「0行」って...) 「○○.xlsx」の内容をエクセルで確認してみてください https://life-analyze24.com/extractionlist/#Excel の「Excelシートに出力する方法」の「~「1列」の出力イメージ~」と書かれてるところのすぐ下の図のように、1行目が「抽出語」と「品詞」と「出現回数」という列名で、2行目以下にデータが入ってますでしょうか? 【追記】 > Columns: [抽出語, 品詞, 出現回数, col2] KH Coderで作成したエクセル・ファイルには「col2」という列は無いはずです もしかして、KH Coderで作成したエクセル・ファイルを、質問のpythonコードで処理する前にエクセルで修正してませんか?
SmaSTATION

2023/06/11 00:25 編集

ご回答ありがとうございます。 ご指摘をいただき、品詞で除外してしまったものがあったので、すべて表示をさせました。 (エクセルの列番号も1~1021)まで3つの事項ともデータが埋まっている状態にしました。 しかし、同じエラーが出てしまいます...。 追記:質問下部に現在のエクセルファイルの画像をシート1、シート2どちらもアップさせていただきました.
jbpb0

2023/06/11 13:45

df = pd.read_excel(xlsx, 'Sheet2', index_col=None, header=0) ↓ 変更 df = pd.read_excel(xlsx, 'Sheet1', index_col=None, header=0) で、どうでしょうか?
SmaSTATION

2023/06/12 00:41

ご回答ありがとうございます。 エクセル読み込み問題は解決することができました!(また、変なOSエラーが出ましたが…) 本当に、ありがとうございました!!。
guest

回答1

0

自己解決

上記プログラム8行目の読み込みの際に、「sheet1」にデータがあるのに、「sheet2」を読み込んでしまっていたため、データからカラでした。
そのため、該当プログラムの部分の変数を**「sheet2」→「sheet1」**に変更することにより解決いたしました。

投稿2023/06/12 01:00

SmaSTATION

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問