学習用モデルのデータ入力やデータ収集をしていると、.data ファイルに出くわすことがあります。
これはデータを保存するためにいくつかのソフトウェアで使用されるファイル拡張子で、そのような例としては、統計解析とデータマイニングに特化したAnalysis Studioが挙げられます。
.dataファイル拡張子の扱いは非常に簡単で、データのソート方法を特定し、それに応じてPythonコマンドを使用してファイルにアクセスします。
.dataファイルとは何ですか?
.dataファイルは、データを保存するための手段として開発されました。
多くの場合、この形式のデータは、カンマ区切りの値形式かタブ区切りの値形式で置かれます。
また、そのバリエーションとともに、テキストファイル形式やバイナリ形式である場合もあります。
その場合、別の方法でアクセスする必要があります。
今回は.csvファイルを扱いますが、まずファイルの内容がテキストなのか、バイナリなのかを確認しましょう。
.dataファイル内のデータを特定する
.dataファイルには2種類のバリエーションがあり、ファイル自体もテキスト形式かバイナリ形式かのどちらかです。
どちらに属するかを調べるには、それをロードして自分でテストする必要があります。
さぁ、はじめましょう
1. テスト中です。テキストファイル
.dataファイルのほとんどはテキストファイルとして存在し、Pythonでファイルにアクセスすることは非常に簡単です。
Pythonに含まれる機能としてあらかじめ組み込まれているため、ファイル処理を行うためにモジュールをインポートする必要はありません。
とはいえ、Pythonでファイルを開いたり、読み込んだり、書き込んだりする方法は以下の通りです。
# reading from the file file = open ( "biscuits.data" , "r" )
file .read()
file .close()
# writing to the file file = open ( "biscuits.data" , "w" )
file .write( "Chocolate Chip" )
file .close()
|
2. テスト中です。バイナリファイル
.dataファイルは、バイナリファイルの形式である可能性もあります。
つまり、ファイルにアクセスしなければならない方法も変更する必要があります。
この場合、モードはrb、つまりバイナリ読み込みとなります。
# reading from the file file = open ( "biscuits.data" , "rb" )
file .read()
file .close()
# writing to the file file = open ( "biscuits.data" , "wb" )
file .write( "Oreos" )
file .close()
|
ファイル操作はPythonでは比較的理解しやすく、異なるファイルアクセスモードとそれらにアクセスする方法を見たいのであれば、調べる価値があります。
これらのアプローチのいずれかが動作し、.dataファイル内に格納されているコンテンツに関する情報を取得する方法を提供するはずです。
さて、ファイルがどのような形式で存在するかがわかったので、pandasを使用してcsvファイルのDataFrameを作成することができます。
この記事もチェック:Pythonでのディレクトリの作成、取得、削除、存在の確認の方法を解説する
3. .dataファイルを読むためのPandasの使用
Pandasが提供するread_csv()関数を使用することで、ファイルの種類を確認した上で、情報を抽出することができます。
import pandas as pd
# reading csv files data = pd.read_csv( 'file.data' , sep = "," )
print (data)
# reading tsv files data = pd.read_csv( 'otherfile.data' , sep = " " )
print (data)
|
このメソッドは、データフレームへの変換も自動的に行います。
以下は、csvファイルを.dataファイルにフォーマットし、上記と同じコードでアクセスした場合のサンプルです。
Series reference Description Period Previously published Revised
0 PPIQ.SQU900000 PPI output index - All industries 2020.06 1183 1184 1 PPIQ.SQU900001 PPI output index - All industries excl OOD 2020.06 1180 1181 2 PPIQ.SQUC76745 PPI published output commodity - Transport sup... 2020.06 1400 1603 3 PPIQ.SQUCC3100 PPI output index level 3 - Wood product manufa... 2020.06 1169 1170 4 PPIQ.SQUCC3110 PPI output index level 4 - Wood product manufa... 2020.06 1169 1170 .. ... ... ... ... ... 73 PPIQ.SQNMN2100 PPI input index level 3 - Administrative and s... 2020.06 1194 1195 74 PPIQ.SQNRS211X PPI input index level 4 - Repair & maintenance 2020.06 1126 1127 75 FPIQ.SEC14 Farm expenses price index - Dairy farms - Freight 2020.06 1102 1120 76 FPIQ.SEC99 Farm expenses price index - Dairy farms - All ... 2020.06 1067 1068 77 FPIQ.SEH14 Farm expenses price index - All farms - Freight 2020.06 1102 1110 [78 rows x 5 columns] |
見ての通り、確かにDataFrameが出力されました。
この記事もチェック:Pythonでopenメソッドを使用してファイルを開く方法
データを保存するためのフォーマットには、他にどんな種類があるのでしょうか?
データを保存するためのデフォルトの方法では、どうしてもうまくいかないことがあります。
では、ファイルストレージを使った作業には、どのような選択肢があるのでしょうか。
1. JSONファイル
情報を保存する方法として、JSONは扱うのに素晴らしいデータ構造です。
PythonのJSONモジュールの膨大なサポートにより、統合は一見完璧なように感じられます。
しかし、Pythonでこれを扱うには、スクリプトの中で json
モジュールをインポートする必要があります。
import json
|
さて、JSON互換の構造を構築した後、それを保存する方法は、json dumps
を使った簡単なファイル操作です。
# dumping the structure in the form of a JSON object in the file. with open ( "file.json" , "w" ) as f:
json.dumps([ 'foo' , { 'bar' : ( 'baz' , None , 1.0 , 2 )}], f)
# you can also sort the keys, and pretty print the input using this module with open ( "file.json" , "w" ) as f:
json.dumps([ 'foo' , { 'bar' : ( 'baz' , None , 1.0 , 2 )}], f, indent = 4 , sort_keys = True )
|
変数fを使ってファイルにダンプしていることに注意してください。
JSON ファイルから情報を取得するための同等の関数は load
と呼ばれる。
with open ( 'file.json' ) as f:
data = json.load(f)
|
これは、ファイル内のJSONオブジェクトの構造と情報を提供します。
2. ピクル
通常、情報を保存する場合、情報は生の文字列形式で保存されるため、オブジェクトのプロパティが失われ、Pythonを通じて文字列からオブジェクトを再構築する必要があります。
Pickleモジュールはこの問題に対処するために使用され、Pythonのオブジェクト構造をシリアライズおよびデシリアライズしてファイルに保存できるようにするために作られました。
つまり、リストをpickleで保存しておけば、次にpickleモジュールで読み込んだときにリストオブジェクトのプロパティが失われることはありません。
この機能を使うには、 pickle
モジュールをインポートする必要があります。
このモジュールは標準の Python ライブラリの一部なので、インストールする必要はありません。
import pickle
|
これまでのファイル操作で使用する辞書を作成しましょう。
apple = { "name" : "Apple" , "price" : 40 }
banana = { "name" : "Banana" , "price" : 60 }
orange = { "name" : "Orange" , "price" : 30 }
fruitShop = {}
fruitShop[ "apple" ] = apple
fruitShop[ "banana" ] = banana
fruitShop[ "orange" ] = orange
|
pickleモジュールの操作は、JSONの操作と同じぐらい簡単です。
file = open ( 'fruitPickles' , 'ab' )
# the 'ab' mode allows for us to append to the file # in a binary format # the dump method appends to the file # in a secure serialized format. pickle.dump(fruitShop, file )
file .close()
file = open ( 'fruitPickles' , 'rb' )
# now, we can read from the file through the loads function. fruitShop = pickle.load( file )
file .close()
|
まとめ
これで、.data ファイルとは何か、そしてそれをどのように扱うかについて知ることができました。
また、データを保存したり取得したりするために、他のオプションも試すことができます。
ファイルハンドリング、Pickle、JSONの各モジュールの詳細なチュートリアルについては、他の記事を参照してください。