4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Kaggleのnotebookでzipファイルを取り扱う時のTips

Last updated at Posted at 2021-07-25

概要

Kaggleで定義されている訓練用・テストデータがzipに固められているものがある。
ローカルで開発している人は容易に解凍ができるが、notebook上だと「/kaggle/input」は配下はread権限しかないため、エラーが出てしまう。

▼下記のようなエラー

OSError: [Errno 30] Read-only file system: '/kaggle/input/~

やっていることはpythonのzip解凍・zip読み込み系ではあるのだが、kaggle内にある他の人が書いたコードを参考にする時に、zip解凍したファイルの読み込み周りで詰まったので、これで解決できたよという意味でまとめる。

※他に良い方法があれば教えて欲しいですmm

方法

CSVの場合

CSVの場合は「pandas.read_csv([zip名])」を使用すれば読み込むことができる。

import pd as pandas
train = pd.read_csv('/kaggle/input/train.csv.zip')

CSV形式は以下でQAのやりとりがあり、他でもunzip方法が記載されている。

画像の場合

ファイル出力

対象zip内のファイルを出力してしまう。

「/kaggle/input」配下に出力できないだけなので、作業用の「/kaggle/working」配下に出力する。

import zipfile
z = zipfile.ZipFile('/kaggle/input/street-view-getting-started-with-julia/train.zip')
z.namelist() # zip内のファイル名一覧を取得
extractall('/kaggle/working') # zip内容を出力

※ただし、画像が多い場合は対象DirがUI上は重すぎて開けなくなるので、UI上の操作はしないようにする。

imread関数を使用すれば対象画像を読み込むことができる。

画像が連番の場合はrangeなどで画像読み込みすれば楽に取得できる。

from skimage import io
train=[io.imread('/kaggle/working/train/'+str(i)+'.Bmp',as_gray=True) for i in range(1,[ラストの連番まで])]

namelist()を使用して、配列を回して画像として読み込むこともできると思う。(for文の回し方を変えるだけだと思うので割愛)

ファイル名を元にアクティブで読み込んでいく

read関数でも取得することができる。

z = zipfile.ZipFile('/kaggle/input/xxxxx/test.zip', 'r')
z.namelist() # zip内のファイル名一覧を取得
img_data = z.read('test/xxxx.Bmp')

こちらも上記と同様にrangeなどで連番で画像情報を取得するか、namelistで取得する形になる。

参考リンク

https://www.kaggle.com/questions-and-answers/56042
https://www.it-swarm-ja.com/ja/python/python%EF%BC%9A%E4%B8%80%E6%99%82%E7%9A%84%E3%81%AB%E8%A7%A3%E5%87%8D%E3%81%9B%E3%81%9A%E3%81%ABzip%E3%81%8B%E3%82%89%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%96%8B%E3%81%8D%E3%81%BE%E3%81%99/1041517400/

4
0
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
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?