【Python】CSVファイルを読み込む方法

この記事では、Pythonの標準ライブラリであるcsvモジュールと、データ解析に便利なpandasライブラリを使って、CSVファイルを読み込む方法をわかりやすく解説します。

さらに、エンコーディングの指定方法やエラーハンドリングについても詳しく説明します。

初心者の方でも安心して学べるように、サンプルコードと実行結果を交えながら丁寧に解説していきますので、ぜひ最後までご覧ください。

目次から探す

PythonでCSVファイルを扱うための準備

PythonでCSVファイルを扱うためには、いくつかの準備が必要です。

まずは、必要なライブラリのインストールと、CSVファイルの準備について説明します。

必要なライブラリのインストール

PythonでCSVファイルを読み込むためには、標準ライブラリのcsvモジュールと、外部ライブラリのpandasを使用することが一般的です。

それぞれのライブラリについて詳しく見ていきましょう。

標準ライブラリ csv

Pythonには、CSVファイルを扱うための標準ライブラリとしてcsvモジュールが用意されています。

このモジュールは、Pythonをインストールすると自動的に含まれているため、追加のインストールは不要です。

csvモジュールを使用することで、簡単にCSVファイルを読み書きすることができます。

以下は、csvモジュールをインポートする例です。

import csv

外部ライブラリ pandas

pandasは、データ解析やデータ操作を効率的に行うための強力なライブラリです。

pandasを使用することで、CSVファイルを簡単に読み込み、データフレームとして操作することができます。

pandasは標準ライブラリではないため、別途インストールが必要です。

pandasをインストールするには、以下のコマンドを使用します。

pip install pandas

インストールが完了したら、以下のようにpandasをインポートします。

import pandas as pd

CSVファイルの準備

CSVファイルは、カンマ区切りのテキストファイルで、データを表形式で保存するための一般的なフォーマットです。

CSVファイルを読み込む前に、適切な形式でデータが保存されていることを確認しましょう。

以下は、サンプルのCSVファイルの内容です。

このファイルをsample.csvという名前で保存します。

name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

このCSVファイルには、名前、年齢、都市の情報が含まれています。

次のセクションでは、このCSVファイルをPythonで読み込む方法について詳しく説明します。

csvモジュールを使ったCSVファイルの読み込み

Pythonの標準ライブラリであるcsvモジュールを使うことで、簡単にCSVファイルを読み込むことができます。

このセクションでは、csv.readercsv.DictReaderを使った基本的な読み込み方法について解説します。

csv.readerを使った基本的な読み込み

ファイルのオープンとクローズ

まずは、CSVファイルを開いて内容を読み込む基本的な方法を見てみましょう。

Pythonでは、ファイルを開くためにopen関数を使用し、ファイルを閉じるためにcloseメソッドを使用します。

以下はその基本的な例です。

import csv
# CSVファイルを開く
with open('example.csv', mode='r', encoding='utf-8') as file:
    # CSVファイルを読み込む
    reader = csv.reader(file)
    
    # ファイルの内容を表示する
    for row in reader:
        print(row)

このコードでは、withステートメントを使ってファイルを開いています。

withステートメントを使うことで、ファイルを自動的に閉じることができるため、closeメソッドを明示的に呼び出す必要がありません。

行ごとの読み込み

csv.readerを使うと、CSVファイルの各行をリストとして読み込むことができます。

上記の例では、forループを使って各行を順番に読み込み、print関数で表示しています。

例えば、以下のようなCSVファイルがあるとします。

name,age,city
Alice,30,New York
Bob,25,Los Angeles
Charlie,35,Chicago

このCSVファイルを上記のコードで読み込むと、以下のように出力されます。

['name', 'age', 'city']
['Alice', '30', 'New York']
['Bob', '25', 'Los Angeles']
['Charlie', '35', 'Chicago']

csv.DictReaderを使った辞書形式での読み込み

辞書形式のメリット

csv.DictReaderを使うと、CSVファイルの各行を辞書形式で読み込むことができます。

辞書形式で読み込むと、各列の値に列名をキーとしてアクセスできるため、コードがより読みやすくなります。

辞書形式での読み込み方法

以下は、csv.DictReaderを使ってCSVファイルを読み込む例です。

import csv
# CSVファイルを開く
with open('example.csv', mode='r', encoding='utf-8') as file:
    # CSVファイルを辞書形式で読み込む
    reader = csv.DictReader(file)
    
    # ファイルの内容を表示する
    for row in reader:
        print(row)

このコードでは、csv.DictReaderを使ってCSVファイルを読み込んでいます。

各行は辞書として読み込まれ、列名がキー、セルの値が値として格納されます。

例えば、先ほどのCSVファイルをこのコードで読み込むと、以下のように出力されます。

{'name': 'Alice', 'age': '30', 'city': 'New York'}
{'name': 'Bob', 'age': '25', 'city': 'Los Angeles'}
{'name': 'Charlie', 'age': '35', 'city': 'Chicago'}

このように、csv.DictReaderを使うことで、各列の値に列名をキーとしてアクセスできるため、コードがより直感的で読みやすくなります。

pandasを使ったCSVファイルの読み込み

pandasの基本

pandasはPythonでデータ解析を行うための強力なライブラリです。

特に、データの操作や分析において非常に便利な機能を提供しています。

pandasを使うことで、CSVファイルの読み込みやデータの操作が簡単に行えます。

まず、pandasをインストールする必要があります。

以下のコマンドを実行してインストールしてください。

pip install pandas

pandas.read_csvを使った読み込み

基本的な読み込み方法

pandasを使ってCSVファイルを読み込むには、pandas.read_csv関数を使用します。

以下は基本的な読み込み方法の例です。

import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('example.csv')
# データフレームの内容を表示
print(df)

このコードでは、example.csvという名前のCSVファイルを読み込み、その内容をデータフレーム(df)として格納しています。

print(df)を使ってデータフレームの内容を表示します。

読み込み時のオプション設定

pandas.read_csv関数には多くのオプションがあり、読み込み時に様々な設定が可能です。

以下にいくつかの主要なオプションを紹介します。

  • sep: 列の区切り文字を指定します。

デフォルトはカンマ(,)です。

  • header: ヘッダー行を指定します。

デフォルトは最初の行(0)です。

  • names: 列名を指定します。

ヘッダー行がない場合に使用します。

  • index_col: インデックス列を指定します。
  • usecols: 読み込む列を指定します。

以下は、これらのオプションを使用した例です。

import pandas as pd
# カンマ以外の区切り文字を使用する場合
df = pd.read_csv('example.csv', sep=';')
# ヘッダー行を指定する場合
df = pd.read_csv('example.csv', header=1)
# 列名を指定する場合
df = pd.read_csv('example.csv', names=['col1', 'col2', 'col3'])
# インデックス列を指定する場合
df = pd.read_csv('example.csv', index_col=0)
# 特定の列のみを読み込む場合
df = pd.read_csv('example.csv', usecols=['col1', 'col3'])

データフレームの操作

データの表示

データフレームの内容を表示するためには、print関数を使うだけでなく、headtailメソッドを使うこともできます。

これにより、データの一部を簡単に確認することができます。

import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('example.csv')
# 最初の5行を表示
print(df.head())
# 最後の5行を表示
print(df.tail())

データのフィルタリング

データフレームの特定の条件に基づいてデータをフィルタリングすることができます。

以下は、特定の列の値に基づいてデータをフィルタリングする例です。

import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('example.csv')
# 'col1'の値が10以上の行をフィルタリング
filtered_df = df[df['col1'] >= 10]
# フィルタリングされたデータを表示
print(filtered_df)

データの集計

pandasを使うと、データの集計も簡単に行えます。

以下は、特定の列の値を集計する例です。

import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('example.csv')
# 'col1'の値の合計を計算
sum_col1 = df['col1'].sum()
# 'col1'の値の平均を計算
mean_col1 = df['col1'].mean()
# 集計結果を表示
print(f"Sum of col1: {sum_col1}")
print(f"Mean of col1: {mean_col1}")

このように、pandasを使うことでCSVファイルの読み込みからデータの操作、集計までを簡単に行うことができます。

pandasの豊富な機能を活用して、効率的にデータ解析を行いましょう。

CSVファイルのエンコーディング

エンコーディングの基本

CSVファイルを読み込む際に、エンコーディング(文字コード)の指定は非常に重要です。

エンコーディングが正しく指定されていないと、文字化けが発生したり、ファイルが正しく読み込めなかったりすることがあります。

一般的なエンコーディングには以下のようなものがあります。

  • UTF-8: 世界中で広く使われているエンコーディング。

多くの言語をサポート。

  • Shift_JIS: 日本語の文字コードとしてよく使われる。
  • ISO-8859-1: ラテン文字をサポートするエンコーディング。

Pythonでは、CSVファイルを読み込む際にエンコーディングを指定することができます。

次に、具体的な方法を見ていきましょう。

エンコーディングの指定方法

csvモジュールでの指定

Pythonの標準ライブラリであるcsvモジュールを使ってCSVファイルを読み込む際には、ファイルを開くときにエンコーディングを指定します。

以下はその具体例です。

import csv
# CSVファイルをUTF-8エンコーディングで開く
with open('example.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

上記のコードでは、open関数encoding引数に'utf-8'を指定しています。

これにより、ファイルがUTF-8エンコーディングで読み込まれます。

pandasでの指定

pandasライブラリを使ってCSVファイルを読み込む場合も、エンコーディングを指定することができます。

以下はその具体例です。

import pandas as pd
# CSVファイルをShift_JISエンコーディングで読み込む
df = pd.read_csv('example.csv', encoding='shift_jis')
print(df)

上記のコードでは、pd.read_csv関数encoding引数に'shift_jis'を指定しています。

これにより、ファイルがShift_JISエンコーディングで読み込まれます。

エラーハンドリング

CSVファイルを読み込む際には、さまざまなエラーが発生する可能性があります。

これらのエラーを適切に処理することで、プログラムの信頼性と安定性を向上させることができます。

ここでは、代表的なエラーハンドリングの方法について解説します。

ファイルが存在しない場合の対処

CSVファイルを読み込もうとした際に、指定したファイルが存在しない場合には FileNotFoundError が発生します。

このエラーをキャッチして適切に対処する方法を見てみましょう。

import csv
file_path = 'non_existent_file.csv'
try:
    with open(file_path, mode='r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)
except FileNotFoundError:
    print(f"Error: ファイル '{file_path}' が見つかりません。")

このコードでは、存在しないファイルを読み込もうとした場合に FileNotFoundError をキャッチし、エラーメッセージを表示します。

読み込みエラーの対処

CSVファイルの読み込み中に、ファイルの形式が正しくない場合や、エンコーディングの問題が発生することがあります。

これらのエラーをキャッチして対処する方法を見てみましょう。

import csv
file_path = 'corrupted_file.csv'
try:
    with open(file_path, mode='r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            print(row)
except csv.Error as e:
    print(f"Error: CSVファイルの読み込み中にエラーが発生しました: {e}")
except UnicodeDecodeError as e:
    print(f"Error: エンコーディングエラーが発生しました: {e}")

このコードでは、CSVファイルの読み込み中に csv.ErrorUnicodeDecodeError が発生した場合に、それぞれのエラーメッセージを表示します。

データの不整合の対処

CSVファイルのデータが不整合である場合、例えば列数が異なる行が存在する場合など、データの処理中にエラーが発生することがあります。

これらのエラーをキャッチして対処する方法を見てみましょう。

import csv
file_path = 'inconsistent_data.csv'
try:
    with open(file_path, mode='r', encoding='utf-8') as file:
        reader = csv.reader(file)
        for row in reader:
            if len(row) != expected_column_count:
                raise ValueError(f"Error: データの不整合が発生しました。期待される列数: {expected_column_count}, 実際の列数: {len(row)}")
            print(row)
except ValueError as e:
    print(e)

このコードでは、各行の列数が期待される列数と一致しない場合に ValueError を発生させ、そのエラーメッセージを表示します。

以上のように、CSVファイルの読み込み中に発生する可能性のあるエラーを適切にハンドリングすることで、プログラムの信頼性を向上させることができます。

エラーハンドリングをしっかりと行うことで、予期しないエラーが発生した際にも適切に対処できるようになります。

目次から探す