Python で CSV ファイルを読み取る方法 | CSVファイルの読み書き
CSV ファイルとは
CSV ファイル は、特定の構造を使用して表形式のデータを配置する単純なタイプのプレーン テキスト ファイルです。 CSV ファイルの標準形式は、行と列のデータによって定義されます。各行は改行で終了し、次の行が始まります。各列は、行内でカンマで区切られます。
CSV は、コンパクトでシンプル、かつ一般的であるため、データ交換の一般的な形式です。多くのオンライン サービスでは、ユーザーが表形式のデータを Web サイトから CSV ファイルにエクスポートできます。 CSV ファイルは Excel で開くことができ、ほぼすべてのデータベースには CSV ファイルからインポートできるツールがあります。
このチュートリアルでは、次のことを学びます:
- CSV ファイルとは
- CSV サンプル ファイル
- Python CSV モジュール
- CSV モジュールの機能
- Python で CSV ファイルを読み取る方法
- Python で CSV ファイルを辞書に読み込む方法
- Python で CSV ファイルを作成する方法
- Pandas を使用して CSV ファイルを読み取る
- Pandas を使用して CSV ファイルを作成する
CSV サンプル ファイル
テーブル形式のデータは CSV (カンマ区切り値) とも呼ばれ、文字通り「カンマ区切り値」です。これは、表形式のデータの表示を目的としたテキスト形式です。ファイルの各行は、テーブルの 1 行です。個々の列の値は、区切り記号 (コンマ (,)、セミコロン (;)、またはその他の記号) で区切られます。 CSV は Python で簡単に読み取って処理できます。
次の表を検討してください
表データ
プログラミング言語 | 設計者 | 登場 | 拡張子 |
---|---|---|---|
Python | グイド・ヴァン・ロッサム | 1991年 | .py |
Java | ジェームズ・ゴズリング | 1995年 | .java |
C++ | ビャルネ・ストロストラップ | 1983年 | .cpp |
以下のように、このテーブルを csv で表すことができます。
CSV データ
プログラミング言語、設計者、登場、拡張機能
Python、グイド・ヴァン・ロッサム、1991 年、.py
Java、ジェームズ・ゴズリング、1995 年、.java
C++、Bjarne Stroustrup、1983、.cpp
ご覧のとおり、各行は新しい行であり、各列はコンマで区切られています。これは、CSV ファイルがどのように見えるかの例です。
CSVデータをダウンロード
Python CSV モジュール
Python には、CSV ファイルを処理するための CSV モジュールが用意されています。データを読み書きするには、CSV の行をループする必要があります。指定した列からデータを取得するには、split メソッドを使用する必要があります。
CSV モジュールの機能
CSV モジュールのドキュメントでは、次の関数を見つけることができます:
- csv.field_size_limit – 最大フィールド サイズを返す
- csv.get_dialect – 名前に関連付けられている方言を取得します
- csv.list_dialects – 登録されているすべての方言を表示
- csv.reader – csv ファイルからデータを読み取る
- csv.register_dialect – 方言を名前に関連付ける
- csv.writer – データを csv ファイルに書き込みます
- csv.unregister_dialect – 方言レジストリの名前に関連付けられた方言を削除します
- csv.QUOTE_ALL – タイプに関係なく、すべてを引用します。
- csv.QUOTE_MINIMAL – 特殊文字を含む引用符
- csv.QUOTE_NONNUMERIC – 数値以外のフィールドはすべて引用符で囲みます
- csv.QUOTE_NONE – 出力で何も引用しないでください
このチュートリアルでは、CSV ファイル内のデータを編集、変更、および操作できるリーダーおよびライター機能のみに焦点を当てます。
Python で CSV ファイルを読み取る方法
以下は、Python で CSV ファイルを読み取る手順です。
ステップ 1) CSV ファイルからデータを読み取るには、リーダー関数を使用してリーダー オブジェクトを生成する必要があります。
リーダー関数は、ファイルの各行を取得してすべての列のリストを作成するように開発されています。次に、変数データが必要な列を選択する必要があります。
それは実際よりもはるかに複雑に聞こえます。 CSV ファイルを読み取るこの Python コードを見てみましょう。csv ファイルの操作はそれほど難しくないことがわかります。
#import necessary modules import csv with open('X:\data.csv','rt')as f: data = csv.reader(f) for row in data: print(row)
ステップ 2) 上記のプログラムを実行すると、出力は次のようになります:
['Programming language; Designed by; Appeared; Extension'] ['Python; Guido van Rossum; 1991; .py'] ['Java; James Gosling; 1995; .java'] ['C++; Bjarne Stroustrup;1983;.cpp']
Python で CSV ファイルを辞書に読み込む方法
DictReader を使用して CSV ファイルを読み取ることもできます。結果は、ヘッダー行がキーで、他の行が値である辞書として解釈されます。
次のコードを検討してください
#import necessary modules import csv reader = csv.DictReader(open("file2.csv")) for raw in reader: print(raw)
このコードの結果は次のとおりです:
OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')]) OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')]) OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])
そして、CSV ファイルからデータを読み取るこの方法は、以前の方法よりもはるかに簡単です。ただし、これはデータを読み取る最良の方法ではありません。
Python で CSV ファイルを作成する方法
Python で CSV ファイルを作成する方法は次のとおりです:
CSV ファイルに保存したい一連のデータがある場合は、 writer() 関数を使用する必要があります。行 (行) にわたってデータを反復処理するには、writerow() 関数を使用する必要があります。
次の例を考えてみましょう。区切り文字がアポストロフィであるファイル「writeData.csv」にデータを書き込みます。
#import necessary modules import csv with open('X:\writeData.csv', mode='w') as file: writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) #way to write to csv file writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension']) writer.writerow(['Python', 'Guido van Rossum', '1991', '.py']) writer.writerow(['Java', 'James Gosling', '1995', '.java']) writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])
csv ファイルの結果:
Programming language, Designed by, Appeared, Extension Python, Guido van Rossum, 1991, .py Java, James Gosling, 1995, .java C++, Bjarne Stroustrup,1983,.cpp
Pandas を使用して CSV ファイルを読み取る
Pandas は、Python で CSV をインポートしてデータ操作を実行できるオープンソース ライブラリです。パンダは、データを作成、操作、および削除する簡単な方法を提供します。
コマンド pip install pandas
を使用して pandas ライブラリをインストールする必要があります。 Windows では、このコマンドをコマンド プロンプトで実行し、Linux ではターミナルで実行します。
CSV を pandas DataFrame に読み込むのは非常に迅速かつ簡単です。
#import necessary modules import pandas result = pandas.read_csv('X:\data.csv') print(result)
読み取り CSV パンダの例の結果:
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
非常に便利なライブラリ。わずか 3 行のコードで、前と同じ結果が得られます。 Pandas は、CSV の最初の行に列名が含まれていることを認識しており、それらを自動的に使用します。
Pandas を使用して CSV ファイルを書き込む
Pandas を使用した CSV ファイルへの書き込みは、読み取りと同じくらい簡単です。ここであなたはそれを納得させることができます。最初に、次の Python 書き込み CSV コードに基づいて DataFrame を作成する必要があります。
from pandas import DataFrame C = {'Programming language': ['Python','Java', 'C++'], 'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'], 'Appeared': ['1991', '1995', '1985'], 'Extension': ['.py', '.java', '.cpp'], } df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension']) export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored print (df)
ここに出力があります
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
指定した場所にCSVファイルが作成されます。
結論
これで、メソッド「csv」の使用方法と、CSV 形式でデータを読み書きする方法がわかりました。 CSV ファイルは、読み取りと管理が簡単で、サイズが小さいため、処理と転送が比較的高速であるため、ソフトウェア アプリケーションで広く使用されています。
csv モジュールは、読み書きを容易にするさまざまな関数とクラスを提供します。 Python の公式ドキュメントを参照すると、さらに興味深いヒントやモジュールが見つかります。 CSV は、データの保存、表示、および送信に最適な方法です。実際、最初に思えるほど習得するのは難しくありません。しかし、少し練習すればマスターできます。
Pandas は、CSV ファイルを読み取る優れた代替手段です。
また、ANTLR、PLY、PlyPlus などのライブラリを使用してテキスト ファイルを解析する方法は他にもあります。それらはすべて、負荷の高い解析を処理できます。単純な文字列操作が機能しない場合は、使用できる正規表現があります。
Python