🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

Q&A

解決済

1回答

3427閲覧

TypeError: no numeric data to plotの解決方法

daifuku1232

総合スコア12

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Python

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

0グッド

0クリップ

投稿2021/01/23 16:17

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

株価の終値をcsvファイルから取り出してグラフにしたいと考えていますが、csvファイルからデータを取り出すときにエラーが発生しました。

発生している問題・エラーメッセージ

0 28,631.45
1 28,756.86
2 28,523.26
3 28,633.46
4 28,242.21
...
2490 10,228.92
2491 10,344.54
2492 10,292.63
2493 10,355.99
2494 10,279.19

TypeError: no numeric data to plot

python

1ソースコード 2import matplotlib.pyplot as plt 3import numpy as np 4import csv 5import pandas as pd 6 7df = pd.read_csv("stock.csv") 8 9x = df['finish'] 10x = x.replace('',',') 11 12print(x) 13plt.figure() 14x.plot() 15plt.savefig('stock.png') 16plt.show() 17plt.close('all') 18 19以下csvファイル 20"日付け","finish","始値","高値","安値","出来高","前日比%" 21"2021年01月22日","28,631.45","28,580.20","28,698.18","28,527.16","669.45M","-0.44%" 22"2021年01月21日","28,756.86","28,710.41","28,846.15","28,677.61","676.62M","0.82%" 23"2021年01月20日","28,523.26","28,798.74","28,801.19","28,402.11","697.92M","-0.38%" 24"2021年01月19日","28,633.46","28,405.49","28,720.91","28,373.34","581.76M","1.39%" 25"2021年01月18日","28,242.21","28,238.68","28,349.97","28,111.54","519.15M","-0.97%" 26"2021年01月15日","28,519.18","28,777.47","28,820.50","28,477.03","741.16M","-0.62%" 27"2021年01月14日","28,698.26","28,442.73","28,979.53","28,411.58","819.13M","0.85%" 28"2021年01月13日","28,456.59","28,140.10","28,503.43","28,133.59","708.57M","1.04%" 29"2021年01月12日","28,164.34","28,004.37","28,287.37","27,899.45","788.40M","0.09%" 30"2021年01月08日","28,139.03","27,720.14","28,139.03","27,667.75","848.72M","2.36%" 31"2021年01月07日","27,490.13","27,340.46","27,624.73","27,340.46","988.56M","1.60%" 32"2021年01月06日","27,055.94","27,102.85","27,196.40","27,002.18","726.61M","-0.38%" 33"2021年01月05日","27,158.63","27,151.38","27,279.78","27,073.46","550.01M","-0.37%" 34"2021年01月04日","27,258.38","27,575.57","27,602.11","27,042.32","515.06M","-0.68%" 35"2020年12月30日","27,444.17","27,559.10","27,572.57","27,338.56","505.87M","-0.45%" 36"2020年12月29日","27,568.15","26,936.38","27,602.52","26,921.14","594.33M","2.66%" 37"2020年12月28日","26,854.03","26,691.29","26,854.03","26,664.60","506.67M","0.74%" 38"2020年12月25日","26,656.61","26,708.10","26,716.61","26,638.28","333.99M","-0.04%" 39"2020年12月24日","26,668.35","26,635.11","26,764.53","26,605.26","479.33M","0.54%" 40"2020年12月23日","26,524.79","26,580.43","26,585.21","26,414.74","560.12M","0.33%"

試したこと

csvファイルの"finish"の列において"26524.79"ではなく"26,524.79"と表示されていることが原因であると思います。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

meg_

2021/01/23 16:54

> TypeError: no numeric data to plot エラー発生箇所はどこでしょうか?
daifuku1232

2021/01/23 17:07

meg様 回答ありがとうございます おそらく 13行目のx.plotの部分だと思われます 以下出力結果およびエラー内容です 0 28,631.45 1 28,756.86 2 28,523.26 3 28,633.46 4 28,242.21 ... 2490 10,228.92 2491 10,344.54 2492 10,292.63 2493 10,355.99 2494 10,279.19 Name: finish, Length: 2495, dtype: object Traceback (most recent call last): File "chart.py", line 13, in <module> x.plot() File "/mnt/c/sucripe/.local/lib/python3.8/site-packages/pandas/plotting/_core.py", line 955, in __call__ return plot_backend.plot(data, kind=kind, **kwargs) File "/mnt/c/sucripe/.local/lib/python3.8/site-packages/pandas/plotting/_matplotlib/__init__.py", line 61, in plot plot_obj.generate() File "/mnt/c/sucripe/.local/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py", line 278, in generate self._compute_plot_data() File "/mnt/c/sucripe/.local/lib/python3.8/site-packages/pandas/plotting/_matplotlib/core.py", line 441, in _compute_plot_data raise TypeError("no numeric data to plot") TypeError: no numeric data to plot
daifuku1232

2021/01/23 17:13

解決できました meg様もありがとうございます!
guest

回答1

0

ベストアンサー

以下の行を修正してください。

x = x.replace('',',')

x = x.apply(lambda s: float(s.replace(',','')))

に変更する。

投稿2021/01/23 17:09

ppaul

総合スコア24670

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

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

daifuku1232

2021/01/23 17:13

解決できました。 ありがとうございます!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問