はじめに
フォルダ内にあるcsvファイル(txtなども可)を順番に読み込む方法をまとめました.
任意のファルダ内にある大量のcsvファイルを全部読み込む際にファイルを読み込む命令を一個ずつ書くのではなく,自動で順番に読み込める方法を知りたい方向けに書きました.
個々のcsvファイルを読み込む方法は知ってる前提です.
全3種類のやり方を掲載しています.
目次
- 全ファイルの名前を読み込むパターン
- 全ファイルのパスをcsvファイルに貼り付けるパターン
- globlモジュールを用いたパターン(一番簡単)
1. 全ファイルの名前を読み込むパターン
まずは,インポートします.
import os
import pandas as pd
次は,読み込みたいcsvファイル達が格納されてるフォルダのパスをコピーしてきます.
csv_file=os.listdir('C:/Users/水悟老/Documents/Qiita')
print(csv_file)
>['1日目.csv', '2日目.csv']
print(csv_file[0])
>1日目.csv
#一個目のファイルの読み込み
file1=pd.read_csv('C:/Users/水悟老/Documents/Qiita/'+str(csv_file[0]),engine='python')
以上の操作で,大量のcsvファイルの中で一個目のファイルを読み込めました.
中身を確認してみると,
print(file1)
> 列1 列2 列3 列4
>0 A君 B君 C君 D君
>1 1 2 3 4
>2 9 10 11 12
ちゃんと読み込めてました.
for分を使うことで,順番にcsvファイルを読み込んで処理をするコードが書けます.
簡単な例を以下に示しておきます.
実例
A君の合計点を計算
A_sum=0
for i in range(len(csv_file)): #csvファイルの数だけfor分を回す.
file =pd.read_csv('C:/Users/水悟老/Documents/Qiita/'+str(csv_file[i]),engine='python')
A_sum += file.iloc[1][0] + file.iloc[2][0]
2. 全ファイルのパスをcsvに貼り付けるパターン
1.フォルダ内で,csvファイルを全て選択して下さい.
2.「Shift」を押しながら右クリックします.
3.「パスのコピー」をクリック.
4.プログラムを動かしてるフォルダ内に新しくcsvファイル(txtでも可)をつくって貼り付け.
私の場合はこんな感じになりました.
C:¥Users¥水悟老¥Documents¥Qiita¥1日目.csv
C:¥Users¥水悟老¥Documents¥Qiita¥2日目.csv
ここで,「¥」を「/」に全置換(Ctrl+F)します.するとこんな感じ
C:/Users/水悟老/Documents/Qiita/1日目.csv
C:/Users/水悟老/Documents/Qiita/2日目.csv
csv_adress=pd.read_csv('パスを貼り付けたcsvファイル.csv',engine='python')
print(*csv_adress.iloc[0])
> C:/Users/水悟老/Documents/Qiita/1日目.csv
では,中身を見てみると
file2=pd.read_csv(*csv_adress.iloc[0],engine='python')
print(file2)
> 列1 列2 列3 列4
>0 A君 B君 C君 D君
>1 1 2 3 4
>2 9 10 11 12
ちゃんと開けました~
3. globモジュールを用いたパターン(一番簡単)
この記事のコメント欄に@u1and0さんから,もっと簡単なやり方を教えていただいたのでさっそくやってみました.
この方法ではgloblモジュールを使用します.
import glob
glob.glob('C:/Users/水悟老/Documents/Qiita/*.csv')
#['Qiita\\1日目.csv', 'Qiita\\2日目.csv']
となりました.
「*.csv」と書くことで,フォルダ内の全csvファイルのパスを得られました.
さっそくcsvファイルを開けてみたいと思います.
file3=pd.read_csv(glob.glob('任意のフォルダ/*.csv')[0],engine='python')
print(file3)
> 列1 列2 列3 列4
>0 A君 B君 C君 D君
>1 1 2 3 4
>2 9 10 11 12
上手にできました~~
お疲れさまでした!!!