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

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

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

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

Q&A

解決済

1回答

3747閲覧

pythonで複数のcsvファイルに対して同じ処理をしたい

yuudai

総合スコア65

Python 3.x

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

0グッド

0クリップ

投稿2020/03/28 06:40

編集2020/03/28 09:48

前提・実現したいこと

複数のcsvファイルに対して同じ処理をしたいのです。今はファイルの数が少ないから同じ処理を何回も書けば良いですが、ファイルの数が増えてくるとそういうわけにもいかないので。
追記
globを使うことで少ないコードでファイルを処理することができると教えていただいたのですが、元々5つのファイルを手直しした後にそのファイルをfor文の中で並行的に処理をしようとしていたのでglobだとそれができなくて困っています。
globを使いつつ#make dataの処理を可能にする方法があるかもしれませんが私にはわかりません。
最終的には5つのファイルのデータを使って新しいデータフレームを作りたいです。その過程で同じ文章を何回も書くのは効率が悪いと思い質問しています。
importから#drop index0までの処理をfor文か何かで回して処理できそうだと考えていますがわかりません。根本的な考え方が間違っているかもしれません。
回答お待ちしております。

該当のソースコード

#データを読み込む import pandas as pd nikkei_1 = pd.read_csv('C:/Users/Carnegie93/Documents/nikkeifuturesdata/NSM_200316.csv', encoding="shift-jis") nikkei_2 = pd.read_csv('C:/Users/Carnegie93/Documents/nikkeifuturesdata/NSM_200317.csv', encoding="shift-jis") nikkei_3 = pd.read_csv('C:/Users/Carnegie93/Documents/nikkeifuturesdata/NSM_200318.csv', encoding="shift-jis") nikkei_4 = pd.read_csv('C:/Users/Carnegie93/Documents/nikkeifuturesdata/NSM_200319.csv', encoding="shift-jis") nikkei_5 = pd.read_csv('C:/Users/Carnegie93/Documents/nikkeifuturesdata/NSM_200323.csv', encoding="shift-jis") #抽出 d_nikkei_1 = nikkei_1.iloc[0:23, 50:56] d_nikkei_2 = nikkei_2.iloc[0:23, 50:56] d_nikkei_3 = nikkei_3.iloc[0:23, 50:56] d_nikkei_4 = nikkei_4.iloc[0:23, 50:56] d_nikkei_5 = nikkei_5.iloc[0:23, 50:56] #rename rename_nikkei_1 = d_nikkei_1.rename(columns={'〔60分足〕': '1hour', 'Unnamed: 51': 'open','Unnamed: 52':'high','Unnamed: 53':'low','Unnamed: 54':'close','Unnamed: 55':'dekidaka'}) rename_nikkei_2 = d_nikkei_2.rename(columns={'〔60分足〕': '1hour', 'Unnamed: 51': 'open','Unnamed: 52':'high','Unnamed: 53':'low','Unnamed: 54':'close','Unnamed: 55':'dekidaka'}) rename_nikkei_3 = d_nikkei_3.rename(columns={'〔60分足〕': '1hour', 'Unnamed: 51': 'open','Unnamed: 52':'high','Unnamed: 53':'low','Unnamed: 54':'close','Unnamed: 55':'dekidaka'}) rename_nikkei_4 = d_nikkei_4.rename(columns={'〔60分足〕': '1hour', 'Unnamed: 51': 'open','Unnamed: 52':'high','Unnamed: 53':'low','Unnamed: 54':'close','Unnamed: 55':'dekidaka'}) rename_nikkei_5 = d_nikkei_5.rename(columns={'〔60分足〕': '1hour', 'Unnamed: 51': 'open','Unnamed: 52':'high','Unnamed: 53':'low','Unnamed: 54':'close','Unnamed: 55':'dekidaka'}) #drop index0 Nikkei_1 = rename_nikkei_1.drop(0) Nikkei_2 = rename_nikkei_2.drop(0) Nikkei_3 = rename_nikkei_3.drop(0) Nikkei_4 = rename_nikkei_4.drop(0) Nikkei_5 = rename_nikkei_5.drop(0) #最終結果用のデータフレームを作っておく nikkei_data = pd.DataFrame(index=[], columns=['time','rise_probability','movement_mean']) from statistics import mean #make data for i in range(1,22): rise = 0 #iには数字が入っていて、その数字を行番号としてNikkei_1~5を行と列指定してcandle=close-openして5個の平均値の列を作る for i in range(1,22): rise = 0 Nikkei_1_candle = int(Nikkei_1.iat[i,4]) - int(Nikkei_1.iat[i,1]) if Nikkei_1_candle > 0: rise += 1 Nikkei_2_candle = int(Nikkei_2.iat[i,4]) - int(Nikkei_2.iat[i,1]) if Nikkei_2_candle > 0: rise += 1 Nikkei_3_candle = int(Nikkei_3.iat[i,4]) - int(Nikkei_3.iat[i,1]) if Nikkei_3_candle > 0: rise += 1 Nikkei_4_candle = int(Nikkei_4.iat[i,4]) - int(Nikkei_4.iat[i,1]) if Nikkei_4_candle > 0: rise += 1 Nikkei_5_candle = int(Nikkei_5.iat[i,4]) - int(Nikkei_5.iat[i,1]) if Nikkei_5_candle > 0: rise += 1 rise_probability = rise / 5 heikin = [Nikkei_1_candle,Nikkei_2_candle,Nikkei_3_candle,Nikkei_4_candle,Nikkei_5_candle] nikkei_candle_mean = mean(heikin) time = Nikkei_1.iat[i,0] series = pd.Series([time, rise_probability, nikkei_candle_mean], index=nikkei_data.columns) nikkei_data = nikkei_data.append(series, ignore_index = True)

試したこと

ここに問題に対して試したことを記載してください。

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

globを使って特定のパターンにマッチするファイルの一覧を得ることができます。

python

1from glob import glob 2 3for filepath in glob("C:/Users/Carnegie93/Documents/nikkeifuturesdata/*.csv"): 4 # 各ファイルに対して同じ処理を行う 5 nikkei = pd.read_csv(filepath, encoding="shift-jis") 6 d_nikkei = nikkei_1.iloc[0:23, 50:56] 7 rename_nikkei = d_nikkei_1.rename(columns={'〔60分足〕': '1hour', 'Unnamed: 51': 'open','Unnamed: 52':'high','Unnamed: 53':'low','Unnamed: 54':'close','Unnamed: 55':'dekidaka'}) 8

投稿2020/03/28 07:05

teamikl

総合スコア8664

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問