MENU

PythonでCSVファイルを扱う方法を解説!読み込みから書き込みまで

※写真はイメージです。実物とは異なる場合があります。

  • URLをコピーしました!

日々の業務や学習の中で、「大量のデータを効率よく管理したい」と感じることはありませんか?そんな時に非常に便利なのが「CSVファイル」です。ExcelやGoogleスプレッドシートでもおなじみの形式ですが、Pythonを使えば、これらのデータを自動で読み込んだり、加工して保存したりすることが驚くほど簡単に実現できます。

機械学習やデータ分析を行うための「データの読み込み」はもちろん、Webスクレイピングで収集した情報を「データ保存」する際にも、このCSV形式は欠かせません。

この記事では、PythonでCSVファイルを扱うための基礎知識から、標準ライブラリを使った具体的な実装方法、そしてより高度な操作を可能にするライブラリの活用術まで、初心者の方にもわかりやすく解説します。

目次

CSVファイルとは何か?

まずは基本からおさらいしましょう。CSVとは「comma-separated values」の略で、文字通り「カンマ(,)で区切られた値」を持つファイル形式のことです。

Excelなどの表計算ソフトでは、1つのセルに1つの値が入っていますが、CSVファイルの中身をテキストエディタなどで開くと、単純に値がカンマで区切られたテキストデータとして記録されています。

例えば、サークルのメンバーデータを作る場合、以下のように記録されます。 `'user1','鈴木一郎','イチロー','広島'` `'user2','山田花子','はなこ','名古屋'`

このように、シンプルに値を並べて記録しているため、多くのアプリケーションで互換性があり、プログラムからも扱いやすいのが特徴です。また、csvモジュールを使えば、カンマ区切りに限らずタブ区切り(TSV)などの任意の文字列で区切られたテキストファイルも処理することが可能です。

標準ライブラリ「csvモジュール」で基本をマスターする

Pythonには標準で `csv` というライブラリが組み込まれています。そのため、追加のインストールを行うことなく、すぐにCSVファイルの読み書きを始めることができます。

CSVファイルを読み込む(入力)

CSVファイルを読み込むには、`csv.reader()` を使用します。基本的な流れは、「ファイルをオープンする」→「csvリーダーを作成する」→「データを1行ずつ取り出す」というステップになります。

ここで重要なのが、`open()` 関数でファイルを開く際、読み込み用として `'r'` (read) モードを指定することです。

また、ファイルを開いた後は必ず `close()` で閉じる必要があります。閉じ忘れると、予期しない動作を引き起こす可能性があるためです。そこで推奨されるのが `with` 文の活用です。`with` ブロックを使うと、処理が終わったタイミングで自動的にファイルがクローズされるため、安全かつシンプルに記述できます。

読み込んだデータは、各行が「文字列のリスト」として返されます。例えば、商品IDや商品名が記録されたCSVを読み込むと、`['商品ID', '部門ID', '商品コード', '商品名', '商品単価']` のようにリスト形式で取得でき、for文を使って1行ずつ処理することが可能です。

CSVファイルに書き込む(出力)

新しくCSVファイルを作成したり、データを保存したりするには、`csv.writer()` を使用します。

書き込みの際は、`open()` 関数のモードに `'w'` (write) を指定します。これにより、書き込み用にファイルが開かれ、既存の内容がある場合は切り詰められてから書き込まれます。

日本語などの全角文字を書き出す場合には、文字コード(UTF-8など)を指定し、さらに改行コードの設定に気をつけることが大切です。読み込み時と同様に `with` 文を使うことで、書き込み完了後のクローズ処理を自動化できます。

辞書形式で扱う「DictReader」と「DictWriter」

標準の `csv.reader` ではデータがリスト形式で取得されるため、「何番目の要素がどの項目か」をインデックス(0, 1, 2…)で管理しなければなりません。しかし、これでは項目が増えた時に混乱しやすくなります。

そこで便利なのが `csv.DictReader()` です。これを使うと、CSVの1行目をヘッダー(列名)として認識し、各行を「辞書形式(キーと値のペア)」で読み込むことができます。これにより、「列番号」ではなく「列名」でデータにアクセスできるため、コードの可読性が格段に向上します。

同様に、書き込みの際は `csv.DictWriter()` を使うことで、辞書データをそのままCSV形式で出力することが可能です。

実践的なデータ操作とトラブルシューティング

実際にCSVを扱っていると、単に読み書きするだけでは解決しない問題に直面することがあります。ここで、よくある課題とその解決策を見ていきましょう。

文字列から数値への変換

CSVファイルから読み込んだデータは、たとえ数字であってもすべて「文字列(str)」として扱われます。そのため、そのままでは足し算や平均値の算出などの計算に使用することができません。

計算を行いたい場合は、Pythonの組み込み関数を使って型変換を行う必要があります。

  • 整数にしたい場合:`int()` 関数
  • 小数を含む数値にしたい場合:`float()` 関数

例えば、ある列の数値をまとめて変換したい場合は、リスト内包表記を使うと効率的に処理できます。

文字化けへの対応

CSVファイルをExcelで開いた際に文字化けが発生することがあります。これは、ファイルの文字コードと、ソフトが想定している文字コードが一致していないために起こります。

Windows環境では特に、文字コードの設定が原因となることが多いです。メモ帳などのテキストエディタで文字コードを確認・変更したり、Pythonの `open()` 関数で適切な `encoding` を指定したりすることで解決できます。

よくあるエラーと注意点

初心者が陥りやすいミスの一つに、自身のPythonファイルに `csv.py` という名前をつけてしまうことがあります。これをやってしまうと、Pythonが標準ライブラリの `csv` モジュールではなく、自分の作成したファイルを読み込んでしまい、「csvライブラリが読み込まれていない」というエラーが発生します。ファイル名は `test.py` や `my_csv_process.py` など、ライブラリ名と被らない名前にしましょう。

また、大容量のCSVファイル(数万行を超えるものなど)を扱う場合、すべてのデータを一度にリストに読み込むとメモリを大量に消費してしまいます。`csv.reader` はイテレータ(1行ずつ処理する仕組み)を返すため、for文で1行ずつ処理することで、メモリ消費を抑えながら効率的に読み込むことができます。

さらに効率的に扱うなら「pandas」や「NumPy」を

標準の `csv` モジュールはシンプルで使いやすいですが、複雑なデータ分析や大量の計算を行うには不十分な場合があります。そんなときにおすすめなのが、外部ライブラリの `pandas` や `NumPy` です。

pandasを使った高速読み込み

`pandas` はデータ解析に特化した非常に強力なライブラリです。`read_csv()` という関数を使うだけで、CSVファイルを「DataFrame」という表形式のオブジェクトとして読み込むことができます。

pandasを使うメリットは以下の通りです。

  • コードが簡潔になる: `open()` や `csv.reader()` を使わずに、一行で読み込みが完了します。
  • 強力な抽出機能: 特定の行や列を抽出したり、条件に合うデータだけをフィルタリングしたりすることが簡単です。
  • 統計処理が容易: 平均、合計、最大・最小値などの算出がメソッド一つで実行できます。

NumPyでの数値処理

数値計算をメインに行う場合は `NumPy` も有効です。特に多次元配列としてデータを扱いたい場合に力を発揮します。

標準ライブラリの `csv` モジュールでは、列を取得したい場合に「転置(行と列を入れ替える)」という操作が必要になりますが、pandasやNumPyを使えば、こうした操作も非常に直感的に行えます。

まとめ:用途に合わせて使い分けよう

PythonでCSVファイルを扱う方法は、大きく分けて「標準ライブラリ」と「外部ライブラリ」の2つのアプローチがあります。

  • 標準の `csv` モジュールが向いているケース
    • 追加のライブラリをインストールできない環境である。
    • 単純な読み込みや書き込み、追記だけを行いたい。
    • ファイルサイズが小さく、複雑な計算を必要としない。
  • `pandas` や `NumPy` が向いているケース
    • 数万行以上の大容量データを扱う。
    • 平均や合計などの統計的な計算を行いたい。
    • データのフィルタリングや並べ替えなど、複雑な整形処理が必要。

まずは標準の `csv` モジュールで「ファイルをオープンして読み書きする」という基本の流れを身につけ、必要に応じて `pandas` などの強力なツールへとステップアップしていくのが、学習の近道です。

CSVファイルの扱いをマスターすれば、データの自動収集やレポート作成の効率が劇的に向上します。ぜひ、小さなファイルから試して、Pythonによるデータ処理の便利さを実感してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次