LoginSignup
6
7

More than 3 years have passed since last update.

[Python] [pathlib] ファイル名を書くのが面倒な人向けの地味テク

Last updated at Posted at 2019-09-25

データを読み込む際、毎回ファイル名を書くのが面倒だったのですが、
fast.aiでlsコマンドっぽく書く方法が紹介されていたので、それをもとに作りました。

めんどいこと

以下3~7行目の、括弧内部を書くのが地味にめんどうで、予測変換ができない。

import pandas as pd
path       = 'D:/data/ieee_fraud/'
train_tran = pd.read_csv(path + 'train_transaction.csv')
test_tran  = pd.read_csv(path + 'test_transaction.csv')
train_id   = pd.read_csv(path + 'train_identity.csv')
test_id    = pd.read_csv(path + 'test_identity.csv')
sample_sub = pd.read_csv(path + 'sample_submission.csv')

こうする

はじめに以下のコードを実行すると、数字とファイル名が表示される。

from pathlib import Path
Path.ls = lambda x: list(x.iterdir())
path = Path("D:/data/ieee_fraud")      # 指定したいpathに設定する

# 方法1 (方法2と結果は同じ)
for i, p in enumerate(path.ls()): 
    print(i, str(p).split('\\')[-1])   # \ はescapeなので\\の2つ

# 方法2 (方法1と結果は同じ)
for i, p in enumerate(os.scandir(path)):
    print(i, p.name)
0 sample_submission.csv
1 test_identity.csv
2 test_transaction.csv 
3 train_identity.csv
4 train_transaction.csv 

上記の表示結果をもとに、以下のように埋める。

import pandas as pd
train_tran = pd.read_csv(path.ls()[4])
test_tran  = pd.read_csv(path.ls()[2])
train_id   = pd.read_csv(path.ls()[3])
test_id    = pd.read_csv(path.ls()[1])
sample_sub = pd.read_csv(path.ls()[0])

私の場合、フリーソフトのCliborで上記のコードを保存し、いつでも取り出せるようにしています。
余談ですが、pickleファイルのほうがcsvファイルより圧倒的に読み込みが速いです。

IEEEコンペ、あと1週間切りましたね。さっぱりわかりませんが、がんばりましょい。

6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7