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

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

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

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

7451閲覧

csvファイルから特定のデータを抽出し折れ線グラフの作成

helloword

総合スコア7

Jupyter

Jupyter (旧IPython notebook)は、Notebook形式でドキュメント作成し、プログラムの記述・実行、その実行結果を記録するツールです。メモの作成や保存、共有、確認などもブラウザ上で行うことができます。

CSV

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

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/12/04 15:59

前提・実現したいこと

anacondaにあるjupyter notebookを利用し
csvファイルから特定のデータをデータフレームに抽出することで,
抽出したデータで折れ線グラフの作成.

up 3.csvという日本語を含むファイルを読み込み
'names=['任意']'で1行目のヘッダーに任意の英数字の列名を付け
x,y,zが不要データのため削除し,データフレームに表示するところまでは
下記に記すコードで成功した.

import numpy as np import pandas as pd df = pd.read_csv('up 3.csv', encoding='cp932', dtype='object',names=['num', 'EMG', 'x', 'y', 'z'],header=9) df=df.drop(['x','y','z'], axis=1) df

イメージ説明

上記のデータフレームを折れ線グラフにするため

import numpy as np import pandas as pd import matplotlib as mpl from matplotlib import pyplot as plt import seaborn as sns %matplotlib inline sns.set(font='IPAexGothic') %config InlineBackend.figure_formats = {'png', 'retina'} pd.set_option('display.max_columns', None) pd.options.display.precision=3 df = pd.read_csv('up 3.csv', encoding='cp932', dtype='object',names=['num', 'EMG', 'x', 'y', 'z'],header=9) df = df.drop(['x','y','z'], axis=1) df.plot.line( x = 'num', # 説明変数(X軸) y = 'EMG', # 目的変数(Y軸) figsize = (10, 5), # グラフの大きさ title = 'rawEMGデータ' # グラフタイトル )

様々なサイトのコードをお借りし,やったのですが,付け焼刃の知識のため
エラーを対処することができませんでした.
pythonを始めたばかりで分からないことが多々あるため,
ご教示お願い致します。

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

TypeError: no numeric data to plot

該当のソースコード

412 # no non-numeric frames or series allowed 413 if is_empty: --> 414 raise TypeError("no numeric data to plot") 415 416 # GH25587: cast ExtensionArray of pandas (IntegerArray, etc.) to

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

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

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

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

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

guest

回答2

0

ベストアンサー

エラーの原因は read_csv() に渡しているパラメータ dtype='object' の部分。

これによりデータは全て 文字列 として扱われてしまいます。
その為グラフ作成の際に
TypeError: no numeric data to plot(要約:数値以外のデータはプロットはできない)
とエラーとなっているのです。

ですので解決方法としては、

方法1:
単純に read_csv() のパラメータからdtype='object'を削除する
方法2:
グラフを描画する前に

Python

1df['num'] = df['num'].astype(int) 2df['EMG'] = df['EMG'].astype(float)

などとして、データの型変更する

を行うと良いかと思います。

投稿2019/12/05 00:11

magichan

総合スコア15898

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

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

helloword

2019/12/05 02:11

方法1を試したところ無事グラフの出力が出来ました. わざわざ代案まで考えていただきありがとうございます.
guest

0

元データがわからないので明言できませんが,csvの読み込みの部分を

df = pd.read_csv('up 3.csv', names=['num', 'EMG', 'x', 'y', 'z'],header=9)

としてはいかがでしょう

投稿2019/12/04 16:50

dark-eater-kei

総合スコア1248

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

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

helloword

2019/12/05 02:14

encoding='cp932'まで消してしまうと UnicodeDecodeError: 'utf-8' codec can't decode byte 0x83 in position 0: invalid start byte といったエラーが出るため,dtype='object'のみの削除でよいと判断いたしました. ご回答して頂き感謝申し上げます.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問