CSVファイルからデータを読み込んで、配列化してデータを扱いやすくしたい人もいるのではないでしょうか。
読み込む方法はわかるけど、文字列からセルごとに配列に格納する方法がわからない人もいるはずです。
そこでこの記事では、PythonでCSVファイルを操作するための準備から、CSVファイルの読み込み方法、データを配列に格納する方法、そしてよくあるエラーと対処法までを解説します。
PythonでCSVファイルを操作するための準備
PythonでCSVファイルを読み込んで配列に格納する方法を解説します。
CSVファイルは、データをカンマで区切って保存する形式で、表計算ソフトやデータベースとのデータのやり取りによく使われます。
PythonでCSVファイルを扱うには、標準ライブラリのcsv
モジュールを使います。
必要なライブラリのインポート
csvモジュール
まずはじめに、PythonでCSVファイルを操作するために必要なライブラリをインポートします。
以下のようにインポートします。
import csv
CSVファイルのサンプルデータ
この解説で使用するCSVファイルのサンプルデータを以下に示します。
このデータは、商品のID、名前、価格がカンマで区切られた形式で記載されています。
このCSVファイルをsample.csv
という名前で保存し、Pythonプログラムと同じディレクトリに配置してください。
1,りんご,100
2,みかん,50
3,バナナ,120
4,ぶどう,300
次の見出しでは、このサンプルデータをPythonで読み込み、配列に格納する方法を解説します。
CSVファイルを読み込む方法
CSVファイルを読み込む方法にはいくつかの手順があります。
まずは、CSVファイルを開く方法から説明します。
CSVファイルを開く
open関数
Pythonでファイルを開くには、open
関数を使用します。
open
関数は、ファイル名とモードを引数に取り、ファイルオブジェクトを返します。
モードには、読み込み専用の'r'
、書き込み専用の'w'
、追記モードの'a'
などがあります。
CSVファイルを読み込む場合は、読み込み専用モード'r'
を使用します。
file = open('sample.csv', 'r')
with文を使ったファイルの開閉
open
関数でファイルを開いた後、処理が終わったら必ずclose
関数でファイルを閉じる必要があります。
しかし、with
文を使うことで、ファイルの開閉を自動的に行うことができます。
with
文を使ったファイルの開閉は以下のように記述します。
with open('sample.csv', 'r') as file:
# ファイルの読み込み処理
CSVファイルを読み込む
csv.readerを使った読み込み
csv.reader
を使ってCSVファイルを読み込む方法を説明します。
csv.reader
は、ファイルオブジェクトを引数に取り、CSVファイルの各行をリストとして返すイテレータを生成します。
以下のサンプルコードでは、CSVファイルを読み込んで、各行を表示しています。
import csv
with open('sample.csv', 'r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
csv.DictReaderを使った読み込み
csv.DictReader
を使うと、CSVファイルの各行を辞書として読み込むことができます。
辞書のキーは、CSVファイルのヘッダー(1行目)になります。
以下のサンプルコードでは、CSVファイルを読み込んで、各行を辞書として表示しています。
import csv
with open('sample.csv', 'r') as file:
reader = csv.DictReader(file)
for row in reader:
print(row)
これで、CSVファイルを読み込んで配列に格納する方法を解説しました。
csv.reader
やcsv.DictReader
を使って、CSVファイルを簡単に読み込むことができます。
CSVデータを配列に格納する方法
CSVファイルを読み込んだ後、データを配列に格納する方法を解説します。
配列に格納することで、データの操作や加工が容易になります。
2次元配列に格納する方法
CSVデータを2次元配列に格納する方法を紹介します。
CSVデータは行と列で構成されているため、2次元配列に格納することが適切です。
for文を使ったデータの取り出し
まずは、for文を使ってCSVデータを2次元配列に格納する方法を見ていきましょう。
import csv
csv_data = []
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
for row in reader:
csv_data.append(row)
print(csv_data)
このコードでは、csv.reader
で読み込んだCSVデータを、for文を使って1行ずつ取り出し、csv_data
という2次元配列に追加しています。
リスト内包表記を使ったデータの取り出し
次に、リスト内包表記を使ってCSVデータを2次元配列に格納する方法を見ていきましょう。
import csv
with open('sample.csv', 'r') as f:
reader = csv.reader(f)
csv_data = [row for row in reader]
print(csv_data)
このコードでは、リスト内包表記を使って、for文を使った場合と同様にCSVデータを2次元配列に格納しています。
リスト内包表記を使うことで、コードが短くなり、読みやすくなります。
辞書型配列に格納する方法
次に、CSVデータを辞書型配列に格納する方法を紹介します。
辞書型配列とは、キーと値のペアでデータを格納する配列のことです。
CSVデータの各列に対応するキーを設定することで、データの操作が容易になります。
for文を使ったデータの取り出し
まずは、for文を使ってCSVデータを辞書型配列に格納する方法を見ていきましょう。
import csv
csv_data = []
with open('sample.csv', 'r') as f:
reader = csv.DictReader(f)
for row in reader:
csv_data.append(row)
print(csv_data)
このコードでは、csv.DictReader
で読み込んだCSVデータを、for文を使って1行ずつ取り出し、csv_data
という辞書型配列に追加しています。
リスト内包表記を使ったデータの取り出し
次に、リスト内包表記を使ってCSVデータを辞書型配列に格納する方法を見ていきましょう。
import csv
with open('sample.csv', 'r') as f:
reader = csv.DictReader(f)
csv_data = [row for row in reader]
print(csv_data)
このコードでは、リスト内包表記を使って、for文を使った場合と同様にCSVデータを辞書型配列に格納しています。
リスト内包表記を使うことで、コードが短くなり、読みやすくなります。