satopoooonのブログ

自分向けの備忘録

pythonでexcel,csvファイルを読み込む

excel,csvファイルの読み込み

pandasのread_excelを使うと簡単、
エクセルデータを読み込んで、データフレーム にしてくれる。

やりたいこと

あるディレクトリにある大量のエクセル(もしくはcsv)ファイルすべてから、
n行m列からk列までのデータを引っ張ってきて、
別のエクセルに貼り付ける。

まずはエクセルファイル名を取得

以下を参考にしました。
Python: 指定したパスのディレクトリ中のファイル一覧を出力 | Yukun's Blog

import os # osモジュールのインポート
# os.listdir('パス')
# 指定したパス内の全てのファイルとディレクトリを要素とするリストを返す
files = os.listdir('ディレクトリのpath') 
for file in files:
    print(file)

ファイル名だけじゃなくて、フルパスを取得した場合は以下、

import glob
 
# パス内の全ての"指定パス+ファイル名"と"指定パス+ディレクトリ名"を要素とするリストを返す
files = glob.glob('ディレクトリのpath') # ワイルドカードが使用可能、今回はcsvファイルを取得、
for file in files:
    print file

excel,csvファイルからデータを取得してデータフレーム化

ファイル名を取得したら、
そこからデータを引っ張って、データフレーム にします。
以下参考、
pandasでcsv/tsvファイル読み込み(read_csv, read_table) | note.nkmk.me
Pandas で CSV ファイルやテキストファイルを読み込む – Python でデータサイエンス
csvファイルのうち、
i行スキップして読み込み、
そこからn行読み込むとします。
j列目のデータだけ取得、
ヘッダーはなし、
尚、globモジュールでパスリストをfileに格納したとします。

import pandas as pd
for file in files 
      csv_df = pd.read_csv(file,sep=",",skiprows=i,nrows=n,header=None, usecols=[j])     
    csv_df_all  = pd.concat([csv_df_all,csv_df],axis = 1 )

読み込むファイルがエクセルならば以下、

import pandas as pd
for file in files 
      excel_df = pd.read_excel("excelのpath",sheetname= "sheet名を指定",skiprows =飛ばす行数 ,skipcols = 飛ばす列数)   
      excel_df_all = pd.concat([excel_df_all,excel_df],axis = 1)