【Python】CSVを読み込んで配列にデータを格納する方法

この記事では、Pythonの標準ライブラリと外部ライブラリを使って、CSVファイルを読み込み、データを配列に格納する方法をわかりやすく解説します。

初心者の方でも安心して学べるように、基本的な使い方から実践的な例まで、ステップバイステップで説明します。

目次から探す

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

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

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

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

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

それぞれのライブラリのインストール方法について説明します。

標準ライブラリ csv

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

このライブラリは、Pythonをインストールした時点で既に含まれているため、追加のインストール作業は不要です。

標準ライブラリ csv を使用するためには、以下のようにインポートします。

import csv

外部ライブラリ pandas

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

CSVファイルの読み込みや書き込みも簡単に行うことができます。

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

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

pip install pandas

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

import pandas as pd

CSVファイルの準備

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

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

このファイルを使って、後ほどPythonでの読み込み方法を説明します。

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

このCSVファイルは、3つの列(name, age, city)と3つの行(Alice, Bob, Charlie)のデータを持っています。

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

次のセクションでは、標準ライブラリ csv を使ったCSVファイルの読み込み方法について詳しく説明します。

標準ライブラリ csv を使ったCSVファイルの読み込み

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

このセクションでは、csv.readercsv.DictReader を使ったCSVファイルの読み込み方法について詳しく解説します。

csv.reader を使った読み込み

基本的な使い方

csv.reader は、CSVファイルを行ごとに読み込むためのシンプルな方法です。

以下に基本的な使い方を示します。

import csv
# CSVファイルを開く
with open('example.csv', newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    
    # 各行を読み込んで表示
    for row in csvreader:
        print(row)

このコードでは、example.csv というCSVファイルを開き、csv.reader を使って各行を読み込んでいます。

newline='' を指定することで、プラットフォームに依存しない改行コードの扱いが可能になります。

読み込んだデータの配列への格納

読み込んだデータを配列(リスト)に格納する方法も非常に簡単です。

以下のコード例を見てみましょう。

import csv
data = []
# CSVファイルを開く
with open('example.csv', newline='') as csvfile:
    csvreader = csv.reader(csvfile)
    
    # 各行をリストに追加
    for row in csvreader:
        data.append(row)
# 読み込んだデータを表示
print(data)

このコードでは、data というリストに各行のデータを追加しています。

最終的に、data にはCSVファイルの全データが格納されます。

csv.DictReader を使った読み込み

基本的な使い方

csv.DictReader は、CSVファイルの各行を辞書形式で読み込むための方法です。

これにより、列名をキーとしてデータにアクセスすることができます。

以下に基本的な使い方を示します。

import csv
# CSVファイルを開く
with open('example.csv', newline='') as csvfile:
    csvreader = csv.DictReader(csvfile)
    
    # 各行を辞書形式で表示
    for row in csvreader:
        print(row)

このコードでは、example.csv というCSVファイルを開き、csv.DictReader を使って各行を辞書形式で読み込んでいます。

これにより、列名をキーとしてデータにアクセスすることができます。

読み込んだデータの配列への格納

読み込んだデータを辞書のリストに格納する方法も非常に簡単です。

以下のコード例を見てみましょう。

import csv
data = []
# CSVファイルを開く
with open('example.csv', newline='') as csvfile:
    csvreader = csv.DictReader(csvfile)
    
    # 各行をリストに追加
    for row in csvreader:
        data.append(row)
# 読み込んだデータを表示
print(data)

このコードでは、data というリストに各行のデータを辞書形式で追加しています。

最終的に、data にはCSVファイルの全データが辞書のリストとして格納されます。

以上が、標準ライブラリ csv を使ったCSVファイルの読み込み方法です。

次のセクションでは、外部ライブラリ pandas を使ったCSVファイルの読み込み方法について解説します。

外部ライブラリ pandas を使ったCSVファイルの読み込み

Pythonの外部ライブラリである pandas は、データ解析やデータ操作に非常に便利なツールです。

特にCSVファイルの読み込みや操作において、その強力な機能を発揮します。

ここでは、pandas を使ってCSVファイルを読み込み、データを配列に格納する方法について解説します。

pandas のインストール

まず、pandas を使用するためには、ライブラリをインストールする必要があります。

以下のコマンドを使用してインストールを行います。

pip install pandas

このコマンドを実行すると、pandas ライブラリがインストールされます。

pandas を使った読み込み

pandas を使ってCSVファイルを読み込む方法は非常に簡単です。

pandas には read_csv というメソッドがあり、これを使うことで簡単にCSVファイルを読み込むことができます。

read_csv メソッドの基本的な使い方

read_csvメソッドを使ってCSVファイルを読み込む基本的な方法を以下に示します。

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

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

DataFrame は、pandas のデータ構造で、行と列からなる2次元のデータを扱うことができます。

読み込んだデータの配列への格納

pandasDataFrame から配列にデータを格納する方法も非常に簡単です。

DataFramevalues 属性を使うことで、データをNumPy配列として取得することができます。

import pandas as pd
# CSVファイルを読み込む
df = pd.read_csv('example.csv')
# データフレームの内容を表示
print("DataFrameの内容:")
print(df)
# データフレームから配列にデータを格納
data_array = df.values
# 配列の内容を表示
print("配列の内容:")
print(data_array)

このコードでは、example.csv から読み込んだデータを DataFrame として格納し、その後 values 属性を使って配列に変換しています。

values 属性は、DataFrame のデータをNumPy配列として返します。

以上が、pandas を使ってCSVファイルを読み込み、データを配列に格納する基本的な方法です。

pandas を使うことで、CSVファイルの読み込みやデータ操作が非常に簡単になりますので、ぜひ活用してみてください。

CSVファイルの読み込み時の注意点

CSVファイルをPythonで読み込む際には、いくつかの注意点があります。

これらの注意点を理解しておくことで、データの読み込みや処理がスムーズに行えます。

ここでは、特に重要な「エンコーディングの問題」、「データの欠損値の扱い」、「データ型の変換」について解説します。

エンコーディングの問題

CSVファイルのエンコーディング(文字コード)は、ファイルの作成元や使用する環境によって異なることがあります。

エンコーディングが異なると、文字化けや読み込みエラーが発生することがあります。

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

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

以下に、標準ライブラリ csvpandas を使ったエンコーディングの指定方法を示します。

# 標準ライブラリ csv を使ったエンコーディングの指定
import csv
with open('example.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)
# pandas を使ったエンコーディングの指定
import pandas as pd
df = pd.read_csv('example.csv', encoding='utf-8')
print(df)

データの欠損値の扱い

CSVファイルには、データが欠損している(空欄になっている)場合があります。

欠損値を適切に処理しないと、データ分析や機械学習の結果に悪影響を及ぼすことがあります。

欠損値の検出と処理

pandas を使うと、欠損値の検出と処理が簡単に行えます。

以下に、欠損値の検出と基本的な処理方法を示します。

import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv('example.csv')
# 欠損値の検出
print(df.isnull().sum())
# 欠損値の処理(例: 欠損値を0で埋める)
df_filled = df.fillna(0)
print(df_filled)

データ型の変換

CSVファイルから読み込んだデータは、すべて文字列として扱われることが多いです。

しかし、数値データや日付データなど、適切なデータ型に変換することが必要です。

データ型の確認と変換

pandas を使うと、データ型の確認と変換が簡単に行えます。

以下に、データ型の確認と変換方法を示します。

import pandas as pd
# CSVファイルの読み込み
df = pd.read_csv('example.csv')
# データ型の確認
print(df.dtypes)
# データ型の変換(例: 'age' 列を整数型に変換)
df['age'] = df['age'].astype(int)
print(df.dtypes)
# 日付データの変換(例: 'date' 列を日付型に変換)
df['date'] = pd.to_datetime(df['date'])
print(df.dtypes)

これらの注意点を押さえておくことで、CSVファイルの読み込みやデータ処理がよりスムーズに行えるようになります。

データの品質を保ちながら、効率的に作業を進めていきましょう。

実践例

ここでは、実際にPythonを使ってCSVファイルを読み込む具体的な例を紹介します。

小規模なCSVファイルから大規模なCSVファイル、さらには特定の列のみを読み込む方法まで、さまざまなシナリオに対応した方法を解説します。

小規模なCSVファイルの読み込み

まずは、小規模なCSVファイルを読み込む方法を見ていきましょう。

ここでは、標準ライブラリのcsvを使った方法と、外部ライブラリのpandasを使った方法の両方を紹介します。

標準ライブラリ csv を使った方法

以下は、標準ライブラリのcsvを使って小規模なCSVファイルを読み込み、配列にデータを格納する例です。

import csv
# CSVファイルのパス
csv_file_path = 'small_data.csv'
# データを格納するための配列
data = []
# CSVファイルを読み込む
with open(csv_file_path, mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        data.append(row)
# 読み込んだデータを表示
print(data)

このコードでは、csv.readerを使ってCSVファイルを読み込み、各行を配列に追加しています。

with文を使うことで、ファイルのクローズを自動的に行います。

外部ライブラリ pandas を使った方法

次に、pandasを使って同じCSVファイルを読み込む方法を紹介します。

import pandas as pd
# CSVファイルのパス
csv_file_path = 'small_data.csv'
# CSVファイルを読み込む
df = pd.read_csv(csv_file_path)
# データフレームを配列に変換
data = df.values.tolist()
# 読み込んだデータを表示
print(data)

pandasを使うと、read_csvメソッドで簡単にCSVファイルを読み込むことができます。

読み込んだデータはデータフレームとして扱われますが、values.tolist()メソッドを使うことで、配列に変換することができます。

大規模なCSVファイルの読み込み

大規模なCSVファイルを読み込む場合、メモリ効率を考慮する必要があります。

ここでは、pandaschunksizeオプションを使った方法を紹介します。

import pandas as pd
# CSVファイルのパス
csv_file_path = 'large_data.csv'
# チャンクサイズを指定してCSVファイルを読み込む
chunk_size = 10000
data_chunks = pd.read_csv(csv_file_path, chunksize=chunk_size)
# データを格納するための配列
data = []
# 各チャンクを処理
for chunk in data_chunks:
    data.extend(chunk.values.tolist())
# 読み込んだデータを表示
print(data)

このコードでは、chunksizeオプションを使ってCSVファイルをチャンク(小分け)に分けて読み込みます。

各チャンクを配列に追加することで、大規模なデータを効率的に処理することができます。

特定の列のみを読み込む方法

特定の列のみを読み込みたい場合、pandasusecolsオプションを使うと便利です。

import pandas as pd
# CSVファイルのパス
csv_file_path = 'data.csv'
# 読み込みたい列を指定
columns_to_read = ['column1', 'column2']
# 特定の列のみを読み込む
df = pd.read_csv(csv_file_path, usecols=columns_to_read)
# データフレームを配列に変換
data = df.values.tolist()
# 読み込んだデータを表示
print(data)

このコードでは、usecolsオプションを使って特定の列のみを指定してCSVファイルを読み込んでいます。

これにより、必要なデータだけを効率的に取得することができます。

以上が、Pythonを使ったCSVファイルの読み込みに関する実践例です。

これらの方法を使って、さまざまなシナリオに対応したCSVファイルの読み込みを行うことができます。

目次から探す