【Python】csvで列を指定して書き込みを行う方法を解説

この記事では、Pythonを使ってCSVファイルを読み書きする基本的な方法から、特定の列だけを指定して書き込む方法までをわかりやすく解説します。

初心者の方でも理解しやすいように、サンプルコードとその実行結果を交えながら説明しますので、ぜひ最後までご覧ください。

目次から探す

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

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

ここでは、必要なライブラリのインストール方法と、Python標準ライブラリであるcsvモジュールの基本について解説します。

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

PythonでCSVファイルを扱うためには、標準ライブラリのcsvモジュールを使用することができますが、より高度な操作を行いたい場合はpandasライブラリを使用することが一般的です。

pandasはデータ解析に特化した強力なライブラリで、CSVファイルの読み書きも簡単に行うことができます。

まず、pandasライブラリをインストールする方法を紹介します。

以下のコマンドをターミナルまたはコマンドプロンプトで実行してください。

pip install pandas

これでpandasライブラリがインストールされます。

csvモジュールはPython標準ライブラリの一部であるため、追加のインストールは不要です。

csvモジュールの基本

csvモジュールは、CSVファイルの読み書きを行うための標準ライブラリです。

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

CSVファイルの読み込み

まず、CSVファイルを読み込む方法を見てみましょう。

以下のコードは、csv.readerを使用してCSVファイルを読み込む例です。

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

このコードでは、example.csvというファイルを読み込み、各行をリストとして出力します。

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

CSVファイルへの書き込み

次に、CSVファイルに書き込む方法を見てみましょう。

以下のコードは、csv.writerを使用してCSVファイルにデータを書き込む例です。

import csv
# 書き込むデータ
data = [
    ['Name', 'Age', 'City'],
    ['Alice', 30, 'New York'],
    ['Bob', 25, 'Los Angeles'],
    ['Charlie', 35, 'Chicago']
]
# CSVファイルを開く
with open('output.csv', mode='w', encoding='utf-8', newline='') as file:
    writer = csv.writer(file)
    
    # 各行を書き込む
    writer.writerows(data)

このコードでは、output.csvというファイルにデータを書き込みます。

newline=''を指定することで、Windows環境でも正しく改行が行われるようにしています。

以上が、csvモジュールの基本的な使い方です。

次のセクションでは、CSVファイルの読み込み方法についてさらに詳しく解説します。

CSVファイルの読み込み

CSVファイルの読み込みは、Pythonでデータを操作する際の基本的な操作の一つです。

ここでは、標準ライブラリのcsvモジュールと、データ解析に便利なpandasライブラリを使った読み込み方法を解説します。

csv.readerを使った読み込み

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

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

import csv
# CSVファイルを開く
with open('example.csv', mode='r', encoding='utf-8') as file:
    # csv.readerオブジェクトを作成
    csv_reader = csv.reader(file)
    
    # 各行を読み込んで表示
    for row in csv_reader:
        print(row)

このコードでは、example.csvというファイルを読み込み、各行をリストとして表示しています。

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

実行結果の例

例えば、example.csvの内容が以下のようになっているとします。

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

上記のコードを実行すると、以下のような出力が得られます。

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

pandasを使った読み込み

pandasライブラリを使うと、CSVファイルをより簡単かつ効率的に読み込むことができます。

pandasread_csv関数を使うと、CSVファイルをDataFrameというデータ構造に変換できます。

まず、pandasライブラリをインストールしていない場合は、以下のコマンドでインストールしてください。

pip install pandas

次に、pandasを使ったCSVファイルの読み込み方法を示します。

import pandas as pd
# CSVファイルを読み込んでDataFrameを作成
df = pd.read_csv('example.csv')
# DataFrameを表示
print(df)

このコードでは、example.csvというファイルを読み込み、DataFrameとして表示しています。

DataFrameは、行と列からなる2次元のデータ構造で、データ解析に非常に便利です。

実行結果の例

例えば、example.csvの内容が先ほどと同じ場合、上記のコードを実行すると、以下のような出力が得られます。

name  age         city
0    Alice   30     New York
1      Bob   25  Los Angeles
2  Charlie   35      Chicago

このように、pandasを使うと、CSVファイルの内容を簡単に表形式で表示することができます。

さらに、pandasにはデータの操作や解析に便利な機能が豊富に揃っているため、データの前処理や分析を行う際に非常に役立ちます。

CSVファイルへの書き込み

CSVファイルへの書き込みは、Pythonの標準ライブラリであるcsvモジュールや、データ解析に便利なpandasライブラリを使って簡単に行うことができます。

ここでは、それぞれの方法について詳しく解説します。

csv.writerを使った基本的な書き込み

Pythonのcsvモジュールを使うと、CSVファイルへの書き込みが非常に簡単に行えます。

以下に基本的な書き込み方法を示します。

サンプルコード

import csv
# 書き込みたいデータ
data = [
    ["名前", "年齢", "職業"],
    ["田中太郎", 30, "エンジニア"],
    ["山田花子", 25, "デザイナー"],
    ["鈴木一郎", 40, "マネージャー"]
]
# CSVファイルに書き込む
with open('output.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    writer.writerows(data)

解説

  1. import csvcsvモジュールをインポートします。
  2. 書き込みたいデータをリスト形式で用意します。
  3. open関数を使ってCSVファイルを開きます。

'w'モードは書き込みモードを意味します。

newline=''は行の間に空行が入るのを防ぐための設定です。

  1. csv.writerオブジェクトを作成し、writerowsメソッドを使ってデータを書き込みます。

pandasを使った基本的な書き込み

pandasライブラリを使うと、さらに簡単にCSVファイルへの書き込みが行えます。

特にデータフレーム形式でデータを扱う場合に便利です。

サンプルコード

import pandas as pd
# 書き込みたいデータ
data = {
    "名前": ["田中太郎", "山田花子", "鈴木一郎"],
    "年齢": [30, 25, 40],
    "職業": ["エンジニア", "デザイナー", "マネージャー"]
}
# データフレームを作成
df = pd.DataFrame(data)
# CSVファイルに書き込む
df.to_csv('output_pandas.csv', index=False, encoding='utf-8')

解説

  1. import pandas as pdpandasライブラリをインポートします。
  2. 書き込みたいデータを辞書形式で用意し、pd.DataFrameを使ってデータフレームを作成します。
  3. to_csvメソッドを使ってデータフレームをCSVファイルに書き込みます。

index=FalseはデータフレームのインデックスをCSVファイルに含めない設定です。

これで、csvモジュールとpandasを使った基本的なCSVファイルへの書き込み方法が理解できたと思います。

次に、列を指定してCSVファイルに書き込む方法について解説します。

列を指定してCSVファイルに書き込む方法

CSVファイルにデータを書き込む際、特定の列だけを指定して書き込みたい場合があります。

Pythonでは、csvモジュールのDictWriterpandasライブラリを使ってこれを実現できます。

以下では、それぞれの方法について詳しく解説します。

csv.DictWriterを使った列指定の書き込み

DictWriterの基本

csv.DictWriterは、辞書形式のデータをCSVファイルに書き込むためのクラスです。

各辞書のキーがCSVファイルの列名に対応し、値がその列のデータになります。

以下は、DictWriterを使って基本的なCSVファイルを書き込む例です。

import csv
# 書き込むデータ
data = [
    {"name": "Alice", "age": 30, "city": "Tokyo"},
    {"name": "Bob", "age": 25, "city": "Osaka"},
    {"name": "Charlie", "age": 35, "city": "Nagoya"}
]
# CSVファイルに書き込む
with open('output.csv', 'w', newline='') as csvfile:
    fieldnames = ["name", "age", "city"]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()  # ヘッダーを書き込む
    for row in data:
        writer.writerow(row)

列を指定して書き込む方法

特定の列だけをCSVファイルに書き込みたい場合、fieldnamesに必要な列名だけを指定します。

以下の例では、namecityの列だけを書き込んでいます。

import csv
# 書き込むデータ
data = [
    {"name": "Alice", "age": 30, "city": "Tokyo"},
    {"name": "Bob", "age": 25, "city": "Osaka"},
    {"name": "Charlie", "age": 35, "city": "Nagoya"}
]
# CSVファイルに書き込む
with open('output_selected_columns.csv', 'w', newline='') as csvfile:
    fieldnames = ["name", "city"]  # 書き込む列を指定
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()  # ヘッダーを書き込む
    for row in data:
        writer.writerow(row)

このコードを実行すると、output_selected_columns.csvにはnamecityの列だけが書き込まれます。

pandasを使った列指定の書き込み

DataFrameの作成

pandasライブラリを使うと、データの操作が非常に簡単になります。

まず、DataFrameを作成する方法を見てみましょう。

import pandas as pd
# 書き込むデータ
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [30, 25, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
}
# DataFrameを作成
df = pd.DataFrame(data)

列を指定して書き込む方法

pandasを使って特定の列だけをCSVファイルに書き込むには、to_csvメソッドcolumns引数を使います。

以下の例では、namecityの列だけを書き込んでいます。

import pandas as pd
# 書き込むデータ
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [30, 25, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
}
# DataFrameを作成
df = pd.DataFrame(data)
# 特定の列だけをCSVファイルに書き込む
df.to_csv('output_selected_columns_pandas.csv', columns=["name", "city"], index=False)

このコードを実行すると、output_selected_columns_pandas.csvにはnamecityの列だけが書き込まれます。

以上が、csv.DictWriterpandasを使って特定の列を指定してCSVファイルに書き込む方法です。

どちらの方法も非常に便利で、用途に応じて使い分けることができます。

実践例

ここでは、実際にPythonのコードを使って、CSVファイルに列を指定して書き込む方法を具体的に解説します。

csv.DictWriterpandasの両方の方法を紹介しますので、用途に応じて使い分けてください。

csv.DictWriterを使った実践例

まずは、csv.DictWriterを使って列を指定してCSVファイルに書き込む方法を見ていきましょう。

サンプルコード

以下のコードは、csv.DictWriterを使って特定の列を持つCSVファイルを作成する例です。

import csv
# 書き込むデータ
data = [
    {"name": "Alice", "age": 30, "city": "Tokyo"},
    {"name": "Bob", "age": 25, "city": "Osaka"},
    {"name": "Charlie", "age": 35, "city": "Nagoya"}
]
# 書き込む列を指定
fieldnames = ["name", "age", "city"]
# CSVファイルに書き込む
with open('output.csv', 'w', newline='') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    # ヘッダーを書き込む
    writer.writeheader()
    # データを書き込む
    for row in data:
        writer.writerow(row)

実行結果

上記のコードを実行すると、以下のような内容のoutput.csvファイルが生成されます。

name,age,city
Alice,30,Tokyo
Bob,25,Osaka
Charlie,35,Nagoya

このように、csv.DictWriterを使うことで、指定した列のデータを簡単にCSVファイルに書き込むことができます。

pandasを使った実践例

次に、pandasを使って列を指定してCSVファイルに書き込む方法を見ていきましょう。

サンプルコード

以下のコードは、pandasを使って特定の列を持つCSVファイルを作成する例です。

import pandas as pd
# 書き込むデータ
data = {
    "name": ["Alice", "Bob", "Charlie"],
    "age": [30, 25, 35],
    "city": ["Tokyo", "Osaka", "Nagoya"]
}
# DataFrameを作成
df = pd.DataFrame(data)
# CSVファイルに書き込む
df.to_csv('output_pandas.csv', index=False, columns=["name", "age", "city"])

実行結果

上記のコードを実行すると、以下のような内容のoutput_pandas.csvファイルが生成されます。

name,age,city
Alice,30,Tokyo
Bob,25,Osaka
Charlie,35,Nagoya

pandasを使うことで、データフレームを簡単に操作し、指定した列のデータをCSVファイルに書き込むことができます。

まとめ

この記事では、Pythonを使ってCSVファイルに列を指定して書き込む方法を解説しました。

csv.DictWriterpandasの両方の方法を紹介しましたが、それぞれの方法には利点があります。

csv.DictWriterは標準ライブラリで手軽に使える一方、pandasはデータの操作や分析に強力な機能を提供します。

用途に応じて適切な方法を選んでください。

目次から探す