NumPyでCSVファイルを読み込み・書き込みする方法【完全ガイド2025】
データ分析や機械学習において、CSVファイルの操作は必須スキルです。本記事では、NumPyを使ったCSVファイルの読み込み(入力)と書き込み(出力)の方法を、初心者にも分かりやすく解説します。
NumPyとCSVファイル操作の基本
NumPyは数値計算ライブラリとして広く使用されており、CSVファイルとの連携も簡単に行えます。特に大量の数値データを扱う際に、NumPyの配列操作の恩恵を受けることができます。
CSVファイルの読み込み方法
1. numpy.loadtxt()を使った基本的な読み込み
import numpy as np
# 基本的な読み込み
data = np.loadtxt('data.csv', delimiter=',')
print(data)
2. ヘッダーをスキップした読み込み
# ヘッダー行をスキップ
data = np.loadtxt('data.csv', delimiter=',', skiprows=1)
print(data)
3. 特定の列のみを読み込み
# 1列目と3列目のみを読み込み
data = np.loadtxt('data.csv', delimiter=',', usecols=(0, 2))
print(data)
4. numpy.genfromtxt()を使った高度な読み込み
# 欠損値を含むデータの読み込み
data = np.genfromtxt('data.csv', delimiter=',', filling_values=0)
print(data)
# データ型を指定した読み込み
data = np.genfromtxt('data.csv', delimiter=',', dtype=float)
print(data)
CSVファイルの書き込み方法
1. numpy.savetxt()を使った基本的な書き込み
import numpy as np
# サンプルデータの作成
data = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
# CSVファイルに書き込み
np.savetxt('output.csv', data, delimiter=',')
2. ヘッダーを付けた書き込み
# ヘッダー付きで保存
data = np.array([[1, 2, 3], [4, 5, 6]])
np.savetxt('output.csv', data, delimiter=',',
header='列1,列2,列3', comments='')
3. フォーマットを指定した書き込み
# 小数点以下2桁で保存
data = np.array([[1.23456, 2.34567], [3.45678, 4.56789]])
np.savetxt('output.csv', data, delimiter=',', fmt='%.2f')
実践的なサンプルコード
サンプル1: 売上データの処理
import numpy as np
# 売上データの読み込み(月, 売上金額, 顧客数)
sales_data = np.loadtxt('sales.csv', delimiter=',', skiprows=1)
# 平均売上の計算
avg_sales = np.mean(sales_data[:, 1])
print(f"平均売上: {avg_sales}")
# 結果をCSVに保存
result = np.array([[avg_sales]])
np.savetxt('avg_sales.csv', result, delimiter=',',
header='平均売上', comments='')
サンプル2: 数値データの変換と保存
import numpy as np
# 元データの読み込み
original_data = np.loadtxt('input.csv', delimiter=',')
# データ変換(例: 消費税計算)
tax_rate = 1.10
processed_data = original_data * tax_rate
# 変換後データの保存
np.savetxt('processed.csv', processed_data,
delimiter=',', fmt='%.0f')
エラー対処法とベストプラクティス
よくあるエラーと対処法
1. ファイルが見つからないエラー
import os
if os.path.exists('data.csv'):
data = np.loadtxt('data.csv', delimiter=',')
else:
print("ファイルが存在しません")
2. データ型エラーの回避
try:
data = np.loadtxt('data.csv', delimiter=',')
except ValueError:
# 文字列を含む場合はgenfromtxtを使用
data = np.genfromtxt('data.csv', delimiter=',', dtype=str)
3. エンコーディング問題の対処
# 日本語を含むCSVファイルの場合
data = np.genfromtxt('data.csv', delimiter=',',
encoding='utf-8')
パフォーマンス最適化のコツ
大容量ファイルの効率的な読み込み
# メモリ効率を考慮した読み込み
data = np.loadtxt('large_file.csv', delimiter=',',
dtype=np.float32) # float64より軽量
バッチ処理での活用
# 複数ファイルの一括処理
import glob
csv_files = glob.glob('data_*.csv')
for file in csv_files:
data = np.loadtxt(file, delimiter=',')
processed = data * 2 # 何らかの処理
output_name = file.replace('data_', 'processed_')
np.savetxt(output_name, processed, delimiter=',')
まとめ
NumPyを使ったCSVファイルの読み書きは、データ分析の基本操作です。主要なポイントは以下の通りです:
- 読み込み:
loadtxt()とgenfromtxt()を用途に応じて使い分ける - 書き込み:
savetxt()でフォーマットを指定して出力する - エラー対処: ファイル存在確認とデータ型の適切な指定
- 最適化: 大容量データ処理時のメモリ効率を考慮する
これらの手法を組み合わせることで、効率的なデータ処理パイプラインを構築できます。NumPyの配列操作と組み合わせて、より高度なデータ分析にチャレンジしてみてください。
■プロンプトだけでオリジナルアプリを開発・公開してみた!!
■AI時代の第一歩!「AI駆動開発コース」はじめました!
テックジム東京本校で先行開始。
■テックジム東京本校
「武田塾」のプログラミング版といえば「テックジム」。
講義動画なし、教科書なし。「進捗管理とコーチング」で効率学習。
より早く、より安く、しかも対面型のプログラミングスクールです。
<短期講習>5日で5万円の「Pythonミニキャンプ」開催中。
<月1開催>放送作家による映像ディレクター養成講座
<オンライン無料>ゼロから始めるPython爆速講座


