この記事では、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ファイルをより簡単かつ効率的に読み込むことができます。
pandas
のread_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)
解説
import csv
でcsv
モジュールをインポートします。- 書き込みたいデータをリスト形式で用意します。
open関数
を使ってCSVファイルを開きます。
'w'
モードは書き込みモードを意味します。
newline=''
は行の間に空行が入るのを防ぐための設定です。
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')
解説
import pandas as pd
でpandas
ライブラリをインポートします。- 書き込みたいデータを辞書形式で用意し、
pd.DataFrame
を使ってデータフレームを作成します。 to_csvメソッド
を使ってデータフレームをCSVファイルに書き込みます。
index=False
はデータフレームのインデックスをCSVファイルに含めない設定です。
これで、csv
モジュールとpandas
を使った基本的なCSVファイルへの書き込み方法が理解できたと思います。
次に、列を指定してCSVファイルに書き込む方法について解説します。
列を指定してCSVファイルに書き込む方法
CSVファイルにデータを書き込む際、特定の列だけを指定して書き込みたい場合があります。
Pythonでは、csv
モジュールのDictWriter
やpandas
ライブラリを使ってこれを実現できます。
以下では、それぞれの方法について詳しく解説します。
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
に必要な列名だけを指定します。
以下の例では、name
とcity
の列だけを書き込んでいます。
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
にはname
とcity
の列だけが書き込まれます。
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
引数を使います。
以下の例では、name
とcity
の列だけを書き込んでいます。
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
にはname
とcity
の列だけが書き込まれます。
以上が、csv.DictWriter
とpandas
を使って特定の列を指定してCSVファイルに書き込む方法です。
どちらの方法も非常に便利で、用途に応じて使い分けることができます。
実践例
ここでは、実際にPythonのコードを使って、CSVファイルに列を指定して書き込む方法を具体的に解説します。
csv.DictWriter
とpandas
の両方の方法を紹介しますので、用途に応じて使い分けてください。
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.DictWriter
とpandas
の両方の方法を紹介しましたが、それぞれの方法には利点があります。
csv.DictWriter
は標準ライブラリで手軽に使える一方、pandas
はデータの操作や分析に強力な機能を提供します。
用途に応じて適切な方法を選んでください。