(最終更新月:2023年7月)
✔このような方へ向けて書かれた記事となります
「PythonでCSVファイルの読み込みがしたいけれど、どうすればいいのだろう?」
「PythonでCSVファイルを読み込む方法を上達させたい」
「Pythonを使ったCSV読み込みの具体例を知りたい」
✔当記事を通じてお伝えすること
- Pythonを使ったCSVファイルの読み込みの基本
- CSVファイル読み込みの効率的な方法
- PythonでのCSVファイル読み込みの実例
当記事では、Pythonを用いたCSVファイル読み込みの基本から、実践的な使い方まで、具体例を交えて詳しく解説しています。
ぜひ最後までお読みいただき、CSVファイル読み込みのスキルを磨きましょう。
PythonでCSVファイルを読み込む準備
次に、「PythonでCSVファイルを読み込む準備」について説明します。
「CSVファイルを読み込む準備」を整えることで、スムーズにCSV操作を行えるようになります。
- PythonとCSVファイルについて
- Pythonのインストール
- サンプルCSVファイルの作成
PythonとCSVファイルについて
Pythonは、その豊富なライブラリとシンプルな構文で、データ解析の分野で非常に人気のあるプログラミング言語。
一方、CSV(Comma Separated Values)ファイルはそのシンプルさと普遍性から、多くのプログラムでデータの保存や交換のために用いられるもの。
PythonとCSVを組み合わせることで、データの読み込み、書き出し、解析などを効率的におこなえます。
Pythonのインストール
Pythonの公式ウェブサイトから、最新版のPythonをダウンロードして、ご自身のマシンにインストールしてください。
また、Pythonには様々なライブラリが存在しますが、このチュートリアルではPythonの標準ライブラリであるcsvモジュールを使用しますので、追加のインストールは必要ありません。
サンプルCSVファイルの作成
PythonでCSVファイルを読み込むための練習として、以下のような内容のサンプルCSVファイルを作成しましょう。
Name,Age,Occupation
Alice,20,Student
Bob,30,Engineer
Charlie,40,Doctor
このCSVファイルには、”Name”、”Age”、”Occupation”の3つの列があり、それぞれの行には、名前、年齢、職業が記載されています。
このデータをPythonで読み込み、解析する方法を学んでいきましょう。
csvモジュールを使ったCSVファイルの読み込み
こちらでは、csvモジュールを使ったCSVファイルの読み込み方法について見ていきましょう。
csvモジュールを使うと、Pythonで手軽にCSVファイルの読み書きをおこなえます。
- csv.readerの基本的な使い方
- デリミタ(区切り文字)の指定方法
- 引用符の扱いと要素内の改行の対処法
- ヘッダーを含むCSVファイルの読み込み
- csv.DictReaderを使った辞書形式の読み込み
csv.readerの基本的な使い方
Pythonのcsvモジュールには、csvファイルを読み込むためのcsv.reader
という関数が用意されています。
この関数を使用して、CSVファイルを読み込む方法を見てみましょう。
- 行・列・要素の取得
- 文字列を数値に変換
行・列・要素の取得
まず、csv.readerを使用してCSVファイルを読み込む基本的なコードは以下のとおりです。
import csv
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
print(row)
このコードを実行すると、CSVファイルの各行がリストとして出力されます。
リストの各要素は、それぞれCSVファイルの列に対応。
行や列、要素を指定して取得するには、リストのインデックスを指定してください。
# 特定の行を取得する場合
target_row_index = 2 # 取得したい行のインデックス(0から始まる)
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for i, row in enumerate(reader):
if i == target_row_index:
print(row)
# 特定の列を取得する場合
target_column_index = 1 # 取得したい列のインデックス(0から始まる)
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
if len(row) > target_column_index:
print(row[target_column_index])
# 特定の要素を取得する場合
target_row_index = 2 # 取得したい行のインデックス(0から始まる)
target_column_index = 1 # 取得したい列のインデックス(0から始まる)
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for i, row in enumerate(reader):
if i == target_row_index and len(row) > target_column_index:
print(row[target_column_index])
with句の使い方がわからない方は以下の記事を参考にしてください。
文字列を数値に変換
CSVファイルを読み込むと、全要素は文字列となります。
数値として扱いたい場合は、手動で型変換が必要です。
int(row[1])
例えばint
関数を用いるなど、文字列を特定の型に変換しましょう。
デリミタ(区切り文字)の指定方法
CSVを読み取る際には、csv.reader
の引数delimiter
に区切り文字を指定しなければならない場面があります。
なぜならデフォルトでは、csv.readerはコンマを区切り文字(デリミタ)として扱うものの、タブやスペース、セミコロンなどを区切り文字として使用するCSVファイルもあるからです。
以下の例では、引数を指定して、タブ文字('\t'
)が区切り文字となっています。
import csv
with open('sample.tsv', 'r') as f:
reader = csv.reader(f, delimiter='\t')
for row in reader:
print(row)
引用符の扱いと要素内の改行の対処法
CSVファイル内の要素が引用符(クォート)で囲まれている場合、その要素内に改行が含まれていても正しく読み込めます。
引用符は通常、ダブルクォート("
)が使われますが、この文字を変更することも可能です。
その場合、csv.reader
の引数quotechar
に引用符を指定します。
import csv
with open('sample.csv', 'r') as f:
reader = csv.reader(f, quotechar="'")
for row in reader:
print(row)
このコードでは、シングルクォート('
)が引用符として扱われます。
ヘッダーを含むCSVファイルの読み込み
多くのCSVファイルは最初の行にヘッダー(列名)が含まれています。
ヘッダー行を読み飛ばすには、next
関数を使って読み込む前に一行進めてください。
import csv
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
header = next(reader)
for row in reader:
print(row)
next(reader)
がヘッダー行を取得し、次の行からデータを読み込んでいます。
csv.DictReaderを使った辞書形式の読み込み
csv.DictReader
を使用すると、各行を辞書としても読み込めます。
このとき、ヘッダー行が辞書のキーとして使用されます。
import csv
with open('sample.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
各行が辞書として出力。
辞書のキーはCSVファイルのヘッダーに対応し、値は各行のデータに対応します。
列名を指定してデータにアクセスできるのです。
CSVファイルの内容をリストや辞書に格納
読み込んだCSVファイルの内容を、リストや辞書に格納すれば、後続の処理でデータを簡単に扱えます。
- 内包表記を使ってリストに格納
- フィールドの型変換
- 辞書形式のデータ作成
内包表記を使ってリストに格納
Pythonの内包表記を使って、読み込んだデータをリストに格納できます。
以下は、CSVファイルの各行をリストとして保持するリストを作成する方法です。
import csv
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
data = [row for row in reader]
print(data)
このコードを実行すると、data
にはCSVファイルの各行がリストとして格納されます。
内包表記についてはこちらをどうぞ。
フィールドの型変換
CSVファイルはテキスト形式のファイルなので、数値データも文字列として読み込まれます。
数値として扱うためには、読み込み時に型変換をおこないましょう。
以下の例では、整数データが含まれる列の値をint
型に変換しています。
import csv
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
data = [[int(cell) if cell.isdigit() else cell for cell in row] for row in reader]
print(data)
リスト内包表記の中でさらに内包表記を用いて、各セルが整数表記の文字列である場合にint
型への変換をおこなっています。
辞書形式のデータ作成
csv.DictReader
を使えば、CSVファイルの各行を辞書として読み込むことができました。
辞書のキーはCSVファイルのヘッダー行に対応します。
全ての行を辞書のリストとして保持することで、列名を指定してデータにアクセスすることが可能になるのです。
import csv
with open('sample.csv', 'r') as f:
reader = csv.DictReader(f)
data = [dict(row) for row in reader]
print(data)
data
にCSVファイルの全ての行が辞書として格納されます。
この辞書のリストを使えば、後続の処理で列名をキーとしてデータにアクセスが可能です。
まとめ
当記事では、PythonでCSVファイルを読み込む方法とその活用法について学習してきました。
- PythonとCSVファイルの基本的な関係性
- Pythonのインストール方法と、サンプルのCSVファイルの作成方法
- Pythonのcsvモジュールを使ったCSVファイルの読み込み方法
- CSVファイルの内容をリストや辞書に格納する方法
このチュートリアルで学んだ内容を基に、さらにPythonとCSVファイルを活用するためには、以下のような情報を追求することをおすすめします。
- csvモジュールの詳細な仕様やオプションについて学ぶ
- データ分析ライブラリ(例えば、pandasやNumPy)を使ったCSVファイルの扱い方を学ぶ
- CSVファイル以外のデータフォーマット(例えば、JSONやXML)とPythonの連携について学ぶ
PythonとCSVの組み合わせは、データ分析や機械学習など、さまざまなシーンで役立ちます。
ぜひ今回学んだ知識を活用して、更なるスキルアップを目指してください。