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

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

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

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

2回答

2744閲覧

pythonのヒストグラム描画エラー「TypeError: Empty 'DataFrame': no numeric data to plot」について

color_8

総合スコア20

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2020/01/30 08:53

編集2020/01/30 08:55

映画サイトのレビューデータを、pythonで分析したいと思っております。

今、jupyternotebookを使い、pandasのread_csvで以下のようにcsvのデータを取り込んで

python

1data = pd.read_csv("movie_review.csv")

このようなデータフレームとして取り込まれています。
イメージ説明
変数の内容として、

review_rate → 0〜5点のレビュー平均点
review_num → レビューの投稿数
があります。

これを、x軸はreview_rate、y軸はreview_numのヒストグラムを描画したいので以下のように記述しました。

python

1data.plot(x='review_rate', y='review_num', kind='hist', bins=15) 2

その結果、以下のエラーが返ってきます。
TypeError: Empty 'DataFrame': no numeric data to plot

review_rateが小数点のデータだからだと思うのですが、
小数点のまま描画できるようにはどのようにコードを書けばよいでしょうか?
ご指南頂けると助かります。

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

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

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

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

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

guest

回答2

0

おそらく、review_numなどの値が「文字列」として認識されてしまっていることに対するエラーだと思いますので、

data = data.astype({'review_rate': float, 'review_num': float})

を行ってからプロットすれば問題ないと思います。

投稿2020/01/30 09:23

bamboo-nova

総合スコア1408

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

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

color_8

2020/01/30 09:35

有難うございます。 上記のコードを実行したところ ValueError: could not convert string to float: '4,693' というエラーが返ってきました。 データの中に"4693"という数値があるのですが それが"4,693"とカンマ入りで認識されていたようでcsvから数値型に直したら解決しました! 有難うございます。
guest

0

ベストアンサー

x=data["review_rate"],y=data["review_num"]に変更してみたらいかがでしょう?

投稿2020/01/30 09:13

aaaa_desu

総合スコア66

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

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

color_8

2020/01/30 09:21

ご提案有難うございます。 上記に変更してみたところ、エラーの内容が変わりました。 以下のエラーの内容なのですがいかがでしょうか? ----- KeyError: "None of [Float64Index([ 5.0, 5.0, 5.0, 4.75, 4.72, 4.67, 4.66, 4.64, 4.62, 4.59,\n ...\n 3.26, 3.97, 4.15, 2.51, 4.03, 4.11, 3.48, 3.11, 4.08, 3.56],\n dtype='float64', length=200)] are in the [columns]" -----
aaaa_desu

2020/01/30 09:25

あくまで僕の予想ですが、ヒストグラムを描画するのであれば、data["review_num"]もfloat型にする必要があるのかもしれません。
color_8

2020/01/30 09:35

有難うございます! 数値の型を修正したら解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問