Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでCSVファイルを読み込む方法|csv.readerの使い方と区切り文字の指定を徹底解説

CSVファイルとは?

CSV(Comma Separated Values:カンマ区切り値)ファイルとは、データの各値をカンマで区切って記述したプレーンテキスト形式のファイルです。カンマを利用することで、表形式(テーブル)のデータをシンプルなテキストとして表現できます。拡張子は「.csv」です。

CSVファイルは、たとえば次のような構造になっています。

Sr.No,Name,City,Age
1,Rahul,Kolkata,21
2,Karan,Amritsar,23
3,Priya,Bangalore,20

CSVファイルを作成するのは簡単です。上記のような形式でメモ帳などのテキストエディタにデータを入力し、「.csv」という拡張子を付けて保存するだけで完成します。

PythonでCSVファイルを読み込む手順

ローカル環境に保存されたCSVファイルは、Pythonの標準ライブラリであるcsvモジュールを使って簡単に読み込めます。基本的な流れは以下のとおりです。

  1. csvモジュールをインポートする
  2. open()関数でファイルを読み取りモード('r')で開く
  3. csv.reader()関数でファイルの内容を読み取る
  4. 返された反復可能なリーダーオブジェクトをfor文などでループ処理し、1行ずつ内容を取得する

実装例

ここでは、ローカルシステムに「ttp.csv」という名前のCSVファイルが保存されているものとします。ファイルの内容は前述の例のとおりです。このファイルを読み込み、内容を1行ずつ出力してみましょう。

サンプルコード

import csv
with open('ttp.csv','r')as file:
    filecontent=csv.reader(file)
    for row in filecontent:
        print(row)

注意: CSVファイルとPythonスクリプトは、同じフォルダ(同じ場所)に配置してください。

実行結果

['Sr.No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

コードの行ごとの解説

  • import csv ― CSVファイルを読み込むためには、まずcsvモジュールをインポートする必要があります。このモジュールに含まれる関数を使ってファイル操作を行います。

  • open()でファイルを開く ― open()関数は「ファイル名」と「オープンモード」の2つの引数を受け取ります。今回はファイルを読み込むため、モードには'r'(read)を指定します。

  • csv.reader()で内容を読み取る ― この関数は反復可能なリーダーオブジェクトを返し、それを変数に格納します。

  • for文でループ処理 ― リーダーオブジェクトを順番に処理し、ファイルの内容を行単位で出力します。

ファイルの場所に関する注意点

読み込むCSVファイルとPythonプログラムは、同じ場所(同じフォルダ)に置く必要があります。

もしファイルが別の場所にある場合は例外が発生し、次のようなエラーが出力されます。

Traceback (most recent call last):
    with open('ttp.csv','r')as file:
FileNotFoundError: [Errno 2] No such file or directory: 'ttp.csv'

このエラーを回避するには、CSVファイルを実行中のスクリプトと同じディレクトリに移動するか、open()関数に正しい絶対パス・相対パスを指定しましょう。

カスタム区切り文字でCSVファイルを読み込む方法

CSVファイルの区切り文字はカンマだけではありません。コロン(:)、セミコロン(;)、パイプ(|)などが使われることもあります。カンマ以外の区切り文字が使われている場合は、コード側でその旨を指定する必要があります。

実装例

先ほどのCSVファイルで、区切り文字がカンマではなくコロン(:)になっていた場合、コードは次のように修正します。

サンプルコード

import csv
with open('ttp.csv','r')as file:
    filecontent=csv.reader(file,delimiter=':')
    for row in filecontent:
        print(row)

実行結果

['Sr', 'No', 'Name', 'City', 'Age']
['1', 'Rahul', 'Kolkata', '21']
['2', 'Karan', 'Amritsar', '23']
['3', 'Priya', 'Bangalore', '20']

変更点は、csv.reader()の引数としてdelimiter=':'を指定した点だけです。区切り文字が'|'の場合も同様に、delimiter='|'と指定すれば正しく読み込めます。

区切り文字を指定しない場合の問題

delimiterを指定しない場合、デフォルトではカンマのみが区切り文字として扱われます。そのため、ファイル内にカンマが存在しないと、行全体が1つの要素として認識されてしまいます。

実際に、コロン区切りのファイルに対してdelimiterを指定せずに読み込むと、次のような誤った出力になります。

['Sr:No:Name:City:Age']
['1:Rahul:Kolkata:21']
['2:Karan:Amritsar:23']
['3:Priya:Bangalore:20']

このように各行が分割されず、1つの文字列として扱われてしまうため、カンマ以外の区切り文字を使うファイルでは必ずdelimiter引数を指定することが重要です。

  1. Python・PandasでヘッダーなしのCSVファイルを読み込む方法

    CSVファイルをヘッダー(列名)なしで読み込むには、pandasのread_csv()メソッドでheaderパラメータに「None」を指定します。 ここでは、Microsoft Excelで開いた以下のようなCSVファイル(SalesData.csv)を例に解説します。1行目には「Car」「Reg_Price」「Units」というヘッダーが含まれています。 必要なライブラリのインポート まず、pandasライブラリをインポートします。 import pandas as pd 通常どおりCSVファイルを読み込む headerパラメータを指定せずにCSVファイルを読み込むと、先頭行が自動的にヘッダ

  2. ExcelでCSVファイルを読み込む4つの方法|状況別の最適な開き方を徹底解説

    Excelでの作業中、CSVファイルを扱う場面は意外と多くあります。「列を保持したままCSVファイルを開きたい」「CSVをExcel形式(.xlsx)に変換したい」「データ接続を作成したい」など、目的はさまざまです。いずれの場合も、まずCSVファイルを正しく読み込むことが、テキストベースのデータをExcelの豊富な機能で活用するための第一歩となります。 本記事では、ExcelでCSVファイルを読み込む4つの方法を、手順やスクリーンショット付きでわかりやすく解説します。ご自身のファイルや作業環境に合わせて、最適な方法を選んでください。 CSVファイルとは? CSVとは「Comma Separat