Quantcast
Channel: 初心者タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 21081

100日後にエンジニアになるキミ - 69日目 - プログラミング - ファイル操作について

$
0
0

昨日までのはこちら

100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について

100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1

100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて

100日後にエンジニアになるキミ - 53日目 - Git - Gitについて

100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて

100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて

100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1

100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1

100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1

100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1

今回はファイルの読み込みについてで、言語はPython言語を用います。

ファイルの読み込み

Pythonでファイルの読み込みをする方法はたくさんあります。

まずはデータファイルがどんな形式なのかによって方法が変わってきます。

テキストファイル(.txt)

拡張子が.txtのものはテキストファイルです。
単純に文章を保存したものはテキストファイルで、文章の長さなどの決まりはなく
改行を入れると複数行をファイルにまとめることができます。

テキストファイルの読み込みは1行ずつ行います。
下記がテキストファイルの読み込みの例です。

withopen(ファイルパス)asファイル変数:処理

with openの構文で読み込みを行います。
openではファイルパスを指定することでファイルの読み込みができます。

読み込んだ後の操作をするためにファイル変数として格納し処理を行う際に使います。

プログラムと同じ場所に置いたテキストファイルを読み込みする例です。

withopen('higedan_list.txt')as_r:forrowin_r:print(row)

溶ける 絵の具 みたい イレギュラー 独り 何 ひとつ ...

for文を用いると1行ずつ文字列として処理が行えます。

上手くやれば、普通のテキストエディターでは開くことができない
長大なサイズのファイルの中も見ることができます。

CSVファイル(.csv)

CSV(Comma-Separated Values)
,カンマで区切られた形式のファイル形式です。
縦、横で数が揃うような表形式のファイルになっています。

1行目は通常はヘッダー行として扱われ表頭としてのデータが書き込まれていることが多いです。
その場合、データ行は2行目以降になります。

注意点として,カンマをデータに含む場合は"で囲まれている場合があります。
,は通常、区切りの文字として扱われるため、データとしての,
囲み文字で囲んでおかないとデータの列数などがずれてしまうことになります。

データを書き込む際や、読み込みをする際には気をつけましょう。

Python言語ではcsvライブラリでCSVファイルの読み込みができます。
通常は,区切りですが、区切り文字を引数delimiterで指定ができます。
TAB区切りのファイルなども読み込みすることができます。

importcsvwithopen(csvファイル名)asファイル変数:csv変数=csv.reader(ファイル変数)処理withopen(csvファイル名)asファイル変数:csv変数=csv.reader(ファイル変数,delimiter='区切り文字')処理

データフレームとして読み込みをしたい場合はpandasライブラリを用います。

importpandasaspdデータフレーム変数名=pd.read_csv(ファイルパス)

読み込んでみると次のようになります。

importpandasaspddf=pd.read_csv('tabelog_star_data.csv')df.head()
夜価格低昼価格低コメント数ブックマーク数
0500010003.15634763
1200010003.37151202
21000030003.64853340
330009993.29512568
450009993.36211522

JSONファイル(.json)

jsonは辞書形式の文字列で書かれたファイルです。
テキストファイルとして読み込みすることもできますが、単純な文字列ではなく
辞書形式で読み込みするのであればjsonファイルとして読み込みをする必要があります。

importjsonwithopen(jsonファイル名)asファイル変数:変数=json.load(ファイル変数)

読み込みするとこうなります。

importjsonwithopen('json.json')as_r:js=json.load(_r)print(js)

{'1': [1, 2, 3], '2': [3, 5, 6]}

ZIPファイル(.zip)

ZIPファイルは圧縮形式のファイルで複数個のファイルを1つにまとめたファイルです。
そのためZIPの中身のファイルが何かを知りたい場合は以下のようなコードになります。

importzipfilewithzipfile.ZipFile(zipファイルパス)aszipファイル変数:for変数inzipファイル変数.namelist():print(変数.encode('文字コード'))

ZIPではパスワード設定などもできるので展開方法は下記の通りです。

importzipfile#zipの全展開
withzipfile.ZipFile(zipファイルパス)aszipファイル変数:zipファイル変数.extractall(出力先ディレクトリ)#zipのパスワード入力展開
withzipfile.ZipFile(zipファイルパス)aszipファイル変数:zipファイル変数.extractall(出力先ディレクトリ,pwd='パスワード')#zipのファイル指定展開
withzipfile.ZipFile(zipファイルパス)aszipファイル変数:zipファイル変数.extract('ファイル名',出力先ディレクトリ)

GZIP(.gz)

ZIPと似ていますが1つのファイルを圧縮したファイル形式です。
そのため中身は1つしかありません。

ファイルを展開しながら中身を見るのは以下のようなコードです。

importgzipwithgzip.open(GZIPファイルパス,'r')asgzipファイル変数:処理:

圧縮されているので、for文内で展開されるのは文字列ではなくバイトコードになったりするので気をつけましょう。

画像ファイル(.jpg , .png , .gif)

画像ファイルの読み込みはPILライブラリで行うことができます。

fromPILimportImage,ImageFilter,ImageOps#画像を読み込みする
im=Image.open(ファイルパス)#画像のサイズ
print(im.size)#画像のフォーマット
print(im.format)#画像のRGB最大最小値
print(im.getextrema())#画像のメタ情報
print(im.mode)

(432, 288)
PNG
((0, 255), (0, 255), (0, 255), (255, 255))
RGBA

エクセルファイル(.xlsx)

エクセルファイルの読み込みはpandasライブラリなどで行うことができます。
pandasライブラリの場合はシートをそのままデータフレームとして読み込みします。

importpandasaspdデータフレーム変数名=pd.read_excel(ファイルパス,sheet_name='シート名')

読み込んでみると次のようになります。

importpandasaspddf=pd.read_excel('tabelog_star_data.xlsx',sheet_name='シート01')df.head()
夜価格低昼価格低コメント数ブックマーク数
0500010003.15634763
1200010003.37151202
21000030003.64853340
330009993.29512568
450009993.36211522

ファイルの書き込み

テキスト形式のファイルであれば読み込みと同じような手順で書き込みができます。

withopen(ファイルパス,'w')asファイル変数:処理

読み込みとの違いはopenの引数に'w'が追加されることです。
'w'は上書き、'a'は追記で書き込みを行います。

画像の場合はPILライブラリなどで書き込みすることができます。

fromPILimportImageImage変数.save(ファイルパス)

まとめ

よく使うファイル形式のものだけですが、業務ではファイルの読み込み作業はかなり多いので
色々覚えておくと楽です。

他にも様々なデータ形式があり、都度読み込み方法が変わるので
自分が使うファイル形式のやり方を調べてみましょう。

君がエンジニアになるまであと31日

作者の情報

乙pyのHP:
http://www.otupy.net/

Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter:
https://twitter.com/otupython


Viewing all articles
Browse latest Browse all 21081

Trending Articles