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

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

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

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

Q&A

解決済

1回答

2852閲覧

pythonで特定のパス内に存在する複数の特定のcsvファイルのグラフ出力について

bkts94441

総合スコア18

Python 3.x

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

0グッド

0クリップ

投稿2017/10/16 07:29

###前提・実現したいこと
現在、大学のゼミで行っている実験で得たデータを、pythonでデータをまとめて管理を行っています。

そこで、pythonで日付ごとに分けたデータを特定のファイル名で保存してグラフ出力を行おうと試みています。
###発生している問題・エラーメッセージ
しかし、思ったようにプログラムが作動せず、ファイル名の日付のパスをワイルカードで置き換えてもエラーが出力され、思ったように出力されません。

日付の場所をワイルドカードに置き換えて、複数の特定するcsvファイルのグラフのデータを読み込んでグラフを出力させたいのですが方法がわかりませんので、どなたかご教授をお願いいたします。

エラーメッセージ OSError: File b'/Users/user/Desktop/readdata/datafile/*/data1/target_data.csv' does not exist

###該当のソースコード

python

1 %matplotlib inline 2 import numpy as np 3 import matplotlib.pyplot as plt 4 import pandas as pd 5 import os 6 7 extension = target_data.csv' 8 df = pd.read_csv("/Users/user/Desktop/readdata/datafile/*/data1/" + extension, encoding="UTF-8") 9 10 plt.figure(figsize=(8, 6.5)) 11 plt.rcParams["font.size"] = 22 12 plt.rcParams["xtick.labelsize"] = 12 13 plt.rcParams["ytick.labelsize"] = 15 14 plt.rcParams["legend.fontsize"] = 12 15 plt.grid() 16 17 freq = df["freq"] #[1,1] 18 amp= df["amp"] #[1,2] 19 20 plt.axhline(y=0) 21 plt.ylim(ymax=35) 22 plt.ylim(ymin=0) 23 24 plt.xlabel("frequency") 25 plt.ylabel("amplication") 26 27 plt.plot(freq,amp,"r",marker="o",markersize=2)

###試したこと
複数のcsvファイルの読み込みのためglobモジュールも使ってみましたが、グラフ読み込みまでのプログラムが書けませんでした。

###補足情報(言語/FW/ツール等のバージョンなど)
python3.5.2

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

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

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

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

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

magichan

2017/10/16 11:07

複数のCSVデータから抽出やマージ等の加工処理を行って1つのグラフを生成したいということでしょうか?それとも単にCSVデータ毎にグラフを生成して並べて表示したいということなのでしょうか?
bkts94441

2017/10/17 00:21

情報が少なくて申し訳ありません。CSVデータ毎にグラフ生成して並べて表示させようとしています。
guest

回答1

0

ベストアンサー

とりあえず、挙げていただいたコードを基に、
縦並びでグラフを表示するサンプルを書いてみました。

ワイルドカードを含むPATHからのファイルの検索はglob を使用しております

参考にしてみてください。
レイアウトの調整は適当に行ってください

Python

1import matplotlib.pyplot as plt 2import pandas as pd 3import os 4import glob 5 6files = glob.glob("/Users/user/Desktop/readdata/datafile/*/data1/target_data.csv") 7 8fig = plt.figure() 9for i, file in enumerate(files,1): 10 df = pd.read_csv(file, encoding="UTF-8") 11 ax = fig.add_subplot(len(files), 1, i) 12 df.plot(x='freq', y='amp', color='red', marker='o', ax=ax) 13 # '*' の部分の文字列をタイトルに設定(最後から3個目) 14 ax.set_title(file.split(os.sep)[-3]) 15 ax.axhline(y=0) 16 ax.set_ylim(ymax=35) 17 ax.set_ylim(ymin=0) 18 ax.set_xlabel("frequency") 19 ax.set_ylabel("amplication") 20 ax.grid() 21 22plt.tight_layout() 23plt.show()

投稿2017/10/17 02:04

magichan

総合スコア15898

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問