[Python] CSVファイルを1行ずつ読み込む方法を解説
PythonでCSVファイルを1行ずつ読み込むには、標準ライブラリのcsv
モジュールを使用します。
csv.reader
関数を用いることで、CSVファイルを行ごとにリストとして取得できます。
ファイルを開く際にはopen
関数を使い、with
ステートメントを利用することでファイルの自動クローズを確保します。
各行はリスト形式で返されるため、インデックスを使用して特定の列にアクセスすることが可能です。
この方法はメモリ効率が良く、大きなCSVファイルを扱う際に特に有用です。
- CSVファイルを
csv.reader
とpandas
で読み込む方法 - 大きなCSVファイルをメモリ効率よく処理するテクニック
- 条件に基づいて行をフィルタリングする方法
- 読み込んだデータの加工方法
- 加工後のデータを新しいCSVファイルに保存する方法
PythonでCSVファイルを扱うための準備
CSV(Comma-Separated Values)ファイルは、データを表形式で保存するための一般的なフォーマットです。
Pythonでは、CSVファイルを簡単に読み書きするためのライブラリが用意されています。
ここでは、CSVファイルを扱うための準備として、必要なライブラリのインストール方法を解説します。
必要なライブラリのインストール
PythonでCSVファイルを扱うためには、主に以下の2つのライブラリを使用します。
ライブラリ名 | 説明 |
---|---|
csv | Pythonに標準で組み込まれているライブラリで、CSVファイルの読み書きが可能です。 |
pandas | データ分析に特化したライブラリで、CSVファイルの操作がより簡単に行えます。 |
csvモジュール
csv
モジュールは、Pythonに標準で含まれているため、特別なインストールは不要です。
以下のようにインポートするだけで使用できます。
import csv
pandasライブラリ(オプション)
pandas
ライブラリは、データ分析や操作を行うための強力なツールです。
CSVファイルを扱う際にも非常に便利です。
pandas
を使用するには、まずインストールが必要です。
以下のコマンドを実行してインストールします。
pip install pandas
インストール後、次のようにインポートして使用します。
import pandas as pd
これで、CSVファイルを扱うための準備が整いました。
次のステップでは、実際にCSVファイルを1行ずつ読み込む方法について解説します。
CSVファイルを1行ずつ読み込む方法
CSVファイルを1行ずつ読み込む方法には、主にcsv
モジュールを使用する方法と、pandas
ライブラリを使用する方法があります。
それぞれの基本的な使い方と実際のコード例を見ていきましょう。
csv.readerを使った方法
基本的な使い方
csv.reader
を使用すると、CSVファイルを行単位で読み込むことができます。
ファイルを開き、csv.reader
を使ってデータを読み込む流れは以下の通りです。
- CSVファイルを開く。
csv.reader
を使ってファイルオブジェクトをラップする。- ループを使って各行を処理する。
実際のコード例
以下は、csv.reader
を使ってCSVファイルを1行ずつ読み込むサンプルコードです。
import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
print(row)
このコードを実行すると、data.csv
の各行がリスト形式で出力されます。
['Header1', 'Header2', 'Header3']
['Value1', 'Value2', 'Value3']
['Value4', 'Value5', 'Value6']
pandasを使った方法
基本的な使い方
pandas
を使用すると、CSVファイルを簡単に読み込むことができます。
pandas
のread_csv関数
を使うことで、CSVファイル全体をDataFrameとして読み込むことができますが、1行ずつ処理することも可能です。
pandas
をインポートする。read_csv関数
を使ってCSVファイルを読み込む。- DataFrameをループして各行を処理する。
実際のコード例
以下は、pandas
を使ってCSVファイルを1行ずつ読み込むサンプルコードです。
import pandas as pd
df = pd.read_csv('data.csv')
for index, row in df.iterrows():
print(row)
このコードを実行すると、data.csv
の各行がSeries形式で出力されます。
Header1 Value1
Header2 Value2
Header3 Value3
Name: 0, dtype: object
Header1 Value4
Header2 Value5
Header3 Value6
Name: 1, dtype: object
これで、csv.reader
とpandas
を使ったCSVファイルの1行ずつ読み込む方法について理解できました。
次のセクションでは、これらの方法を応用した具体的な例を見ていきます。
応用例
CSVファイルを扱う際には、基本的な読み込み方法だけでなく、さまざまな応用技術を活用することが重要です。
ここでは、大きなCSVファイルの効率的な処理、条件に基づく行のフィルタリング、読み込んだデータの加工と保存について解説します。
大きなCSVファイルの効率的な処理
メモリ効率を考慮した方法
大きなCSVファイルを扱う場合、全てのデータを一度にメモリに読み込むと、メモリ不足になる可能性があります。
これを避けるために、csv.reader
を使ってファイルを1行ずつ読み込む方法が有効です。
以下のように、ファイルを開いて1行ずつ処理することで、メモリの使用量を抑えることができます。
import csv
with open('large_data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
# 各行に対する処理をここに記述
pass
この方法では、必要な行だけを逐次処理するため、メモリの負担を軽減できます。
条件に基づく行のフィルタリング
特定の条件で行を抽出する方法
CSVファイルから特定の条件に合致する行を抽出することもよくあります。
csv.reader
を使用して、条件に基づいて行をフィルタリングする例を示します。
import csv
with open('data.csv', mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
if row[1] == '特定の条件': # 例: 2列目が特定の値の場合
print(row)
このコードでは、2列目の値が「特定の条件」と一致する行だけを出力します。
読み込んだデータの加工と保存
データの加工方法
読み込んだデータを加工することも重要です。
例えば、数値データを計算したり、文字列を変換したりすることができます。
以下は、pandas
を使ったデータの加工例です。
import pandas as pd
df = pd.read_csv('data.csv')
df['新しい列'] = df['既存の列'] * 2 # 既存の列の値を2倍にして新しい列を作成
このコードでは、既存の列の値を2倍にして新しい列を追加しています。
加工後のデータを新しいCSVファイルに保存する方法
加工したデータを新しいCSVファイルに保存するには、pandas
のto_csvメソッド
を使用します。
df.to_csv('processed_data.csv', index=False)
このコードを実行すると、加工後のデータがprocessed_data.csv
というファイルに保存されます。
index=False
を指定することで、行番号をファイルに含めないようにしています。
これで、CSVファイルの効率的な処理、条件に基づく行のフィルタリング、データの加工と保存についての応用例を理解できました。
次のセクションでは、よくある質問にお答えします。
よくある質問
まとめ
この記事では、Pythonを使用してCSVファイルを1行ずつ読み込む方法や、応用技術について解説しました。
特に、大きなCSVファイルの効率的な処理やデータの加工方法について詳しく説明しました。
これを機に、CSVファイルの扱い方をマスターし、データ分析のスキルを向上させてみてください。