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

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

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

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

Q&A

解決済

1回答

236閲覧

KeyErrorを消したい。【Python3】

SmaSTATION

総合スコア29

Python

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

0グッド

0クリップ

投稿2023/06/06 07:16

実現したいこと

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

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

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

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

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

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

can110

2023/06/06 07:48

入力エクセルファイルの内容(どのような行や列になっているか)を提示ください。 たんに「抽出語」という列がないのでは?
jbpb0

2023/06/06 07:54

質問のコードの > xlsx = pd.ExcelFile(r"○○.xlsx")  の行末に全角のスペースがあるみたいです 実際のコードには無いのかもしれませんが、もしそうなら、実際に動かしてるコードにできるだけ近いものを質問に載せてください
jbpb0

2023/06/06 07:58

エラーが出てる > df = df[df['抽出語'].isnull() == False] のすぐ上に print(df.info()) を追加して実行して、表示された結果の「Column」の下に書かれてる列名の中に、「抽出語」はありますでしょうか?
meg_

2023/06/06 16:40

> df = df[df['抽出語'].isnull() == False] > KeyError: '抽出語' 列名が間違っているだけかと思いますが、確認されたのでしょうか?
SmaSTATION

2023/06/08 00:31

3名の皆様、ご回答ありがとうございました。 引き続き、よろしくお願いいたします。
jbpb0

2023/06/08 00:50

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」とは形式が異なるのですよね
guest

回答1

0

自己解決

みなさま、ご回答ありがとうございます。
抽出語エラーに関しましては、シート2に「抽出語」という先頭列を作ることにより解決いたしました。
誠に、ありがとうございました。

投稿2023/06/08 00:30

SmaSTATION

総合スコア29

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問