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

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

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

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

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

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

Q&A

解決済

2回答

4898閲覧

CSVファイルのデータフレームをプロットしたい

birem

総合スコア13

CSV

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

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python

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

pandas

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

0グッド

0クリップ

投稿2018/05/19 06:49

編集2018/05/19 10:03

CSVファイルに格納されたデータフレームをプロットしたいのですが、以下のようなエラーが出てしまいます。
x軸にindex、y軸にch0とch2をプロットしたいです。いろいろ調べては見たのですが、pandasのプロットがよくわかりませんでした。。。

Traceback (most recent call last):
File "/home/pi/5\17.py", line 14, in <module>
main()
File "/home/pi/5\17.py", line 7, in main
data.plot()
File "/usr/lib/python3/dist-packages/pandas/tools/plotting.py", line
2165, in plot_frame
plot_obj.generate()
File "/usr/lib/python3/dist-packages/pandas/tools/plotting.py", line
900, in generate
self._compute_plot_data()
File "/usr/lib/python3/dist-packages/pandas/tools/plotting.py", line
970, in _compute_plot_data
'plot'.format(numeric_data.class.name))
TypeError: Empty 'DataFrame': no numeric data to plot

python

1コード 2import csv 3import matplotlib as plt 4import pandas as pd 5 6def main(): 7 data = pd.read_csv('myakuha.csv',index_col=0) 8 data.plot() 9 print(data) 10 plot.show() 11 12 13 14if __name__=='__main__': 15 main() 16

このようなデータフレームが格納されてます。(値が0なのは気にしないでください)
ch0 ch2
0 [0] [0]
1 [0] [0]
2 [0] [0]
3 [0] [0]
4 [0] [0]
5 [0] [0]
6 [0] [0]
7 [0] [0]
8 [0] [0]
9 [0] [0]
10 [0] [0]
11 [0] [0]
12 [0] [0]
13 [0] [0]
14 [0] [0]
15 [0] [0]
16 [0] [0]
17 [0] [0]
18 [0] [0]
19 [0] [0]
20 [0] [0]
21 [0] [0]
22 [0] [0]
23 [0] [0]
24 [0] [0]
25 [0] [0]
26 [0] [0]
27 [0] [0]
28 [0] [0]
29 [0] [0]

python

1import pandas as pd 2import time 3import spidev 4import sys 5import numpy as np 6import subprocess 7from threading import Thread 8import csv 9 10 11cond = True 12data1 = 0 13data2 = 0 14df1 = pd.DataFrame(columns=['ch0','ch2'])#data2 15 16 17def main(): 18 spi = spidev.SpiDev() 19 spi.open(0,0) 20 21 def f(): 22 global cond 23 time.sleep(20) 24 cond = False 25 26 thread = Thread(target=f) 27 thread.start() 28 29 while cond: 30 resp = spi.xfer2([0x68,0x00]) 31 data1 = ((resp[0] << 8 ) + resp[1]) & 0x3ff 32 resp2 = spi.xfer([0x78,0x00]) 33 data2 = ((resp2[0] << 8) + resp2[1]) & 0x3ff 34 global df1 35 df1 = df1.append({'ch0':[data1],'ch2':[data2]},ignore_index=True) 36 print (df1) 37 df1.to_csv('myakuha.csv') 38 #left max 39 df10max = df1['ch0'].max() 40 #print('left:',df10max) 41 #right max 42 df12max = df1['ch2'].max() 43 #print('right:',df12max) 44 df110max = np.array(df10max) 45 df112max = np.array(df12max) 46 47 48 if df10max > df12max: 49 leftmax = df110max - df112max 50 print ('overL:',leftmax) 51 52 if df10max < df12max: 53 rightmax = df112max - df110max 54 print ('overR:',rightmax) 55 56 57 58 59 60 61if __name__=='__main__': 62 main() 63

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

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

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

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

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

KSwordOfHaste

2018/05/19 07:15

ソースとエラーメッセージの内容が不整合に見えます。このコードを実行してこのエラーにはならないのでは?
guest

回答2

0

ベストアンサー

データフレームがちゃんと作れていれば、

python

1import pandas as pd 2import matplotlib.pyplot as plt 3 4def main(): 5 data = pd.read_csv('myakuha.csv',index_col=0) 6 data.plot() 7 plt.show() 8 9if __name__=='__main__': 10 main()

これで何かが出ます。
掲載されているコードには変なところが何点かあるので、これを参考に修正してください。

  • import matplotlib as pltをimport matplotlib.pyplot as pltに変更する
  • plot.show()をplt.show()に変更する

TypeError: Empty 'DataFrame': no numeric data to plot

というエラーが出ているので、型がおかしいとか、うまく読み込めていない可能性があります。
csvの中身がわからないのでなんともいえません。csv自体を(部分的にでも良いので:最初の10行とか)サンプルに貼ってみてくれませんか。

投稿2018/05/19 07:52

編集2018/05/19 07:55
hayataka2049

総合スコア30933

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

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

birem

2018/05/19 08:17

ch0 ch2 0 [0] [0] 1 [0] [0] 2 [0] [0] 3 [0] [0] 4 [0] [0] 5 [0] [0] 6 [0] [0] 7 [0] [0] 8 [0] [0] 9 [0] [0] 10 [0] [0] 11 [0] [0] 12 [0] [0] 13 [0] [0] データの中身はこのようになっています。一番左はindexです
hayataka2049

2018/05/19 08:23

csvの文字列がほしいです。あと、そのdataが得られているならprint(data.dtypes)の結果も追加でほしいです
birem

2018/05/19 09:41

文字列はどのようにすれば見ることが出来るのでしょうか・・・? print(data.dtypes)の結果についてですが ch0 object ch2 object dtype:object となりました。
hayataka2049

2018/05/19 09:44

myakuha.csvをテキストエディタで開けば見れます
birem

2018/05/19 09:44

単純にファイルをひらくと以下のような結果になりました。 ,ch0,ch2 0,[0],[0] 1,[0],[0] 2,[0],[0] 3,[0],[0] 4,[0],[0] 5,[0],[0] 6,[0],[0] 7,[0],[0] 8,[0],[0] 9,[0],[0] 10,[0],[0] 11,[0],[0] 12,[0],[0] 13,[0],[0] 14,[0],[0]
hayataka2049

2018/05/19 09:46 編集

数字の両側の[]はデータ(csv)の生成段階でなくせませんか?
birem

2018/05/19 09:54

pandasを使ってデータフレームをcsvに書き込んでいるのですが、どうすれば[]はなくせるのでしょうか? df1.to_csv('myakuha.csv')という文で書き込んでいます。 また、データフレームの生成は df1 = pd.DataFrame(columns=['ch0','ch2']) で行っています。
hayataka2049

2018/05/19 09:57

質問への追記で、データ生成のコードをぜんぶ載せてください
hayataka2049

2018/05/19 09:59

恐らくリストのネストが余計に入っているのだと思いますが、どうやって作ったのかわからないと答えられません>どうすれば[]はなくせるのでしょうか?
birem

2018/05/19 10:05

修正で最後にプログラムを貼りました。動作としては、2つのデータをデータフレームにリアルタイムで格納し、csvファイルに書き込むものです。
hayataka2049

2018/05/19 10:18

df1 = df1.append({'ch0':[data1],'ch2':[data2]},ignore_index=True) を df1 = df1.append({'ch0':data1,'ch2':data2},ignore_index=True) にしてcsvを作ると不要な[]は消えるはずです。 そうして作ったcsvをdfとして読み込めばとりあえずint型かなにかとして読み込まれると思うので、plotできるようになると思います。
guest

0

軽く見た感じの感想に近いのですが、DataFrameが定義されていないというエラーになっているので

Python

1df = pd.DataFrame(np.random.randn(10,4),cumsum(0),columns=['a','b','c'1,'d'],index=np.arange(0,100,10))

↑のようなpdの付け忘れではないでしょうか?

投稿2018/05/19 07:45

nitoage

総合スコア98

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

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

birem

2018/05/19 07:47

すみません。ペーストするエラーにミスがありましたので、改めて見ていただければ嬉しいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問