ファイル
[Python] 行を指定してCSVファイルを読み込む方法
PythonでCSVファイルを操作する際、特定の行を読み込む方法は非常に便利です。
一般的に、pandas
ライブラリを使用することで、簡単に特定の行を抽出できます。
pandas.read_csv()
関数を用いてCSVファイルを読み込み、iloc
やloc
を使って行を指定します。
また、csv
モジュールを使用して、ファイルを行ごとに反復処理し、特定の行を取得することも可能です。
これにより、大規模なデータセットから必要な情報を効率的に抽出できます。
行を指定してCSVファイルを読み込む方法
csvモジュールを使った方法
特定の行を読み込む基本的な手順
csv
モジュールをインポートする。- CSVファイルを開く。
csv.reader
を使用してファイルを読み込む。- 指定した行をリストに格納する。
サンプルコードと解説
以下のコードは、CSVファイルから特定の行を読み込む方法を示しています。
import csv
def read_specific_row(file_path, row_number):
with open(file_path, mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for current_row_number, row in enumerate(reader):
if current_row_number == row_number:
return row
# 使用例
file_path = 'data.csv'
row_number = 2 # 3行目を読み込む
specific_row = read_specific_row(file_path, row_number)
print(specific_row)
['データ1', 'データ2', 'データ3']
pandasライブラリを使った方法
特定の行を読み込む基本的な手順
pandas
ライブラリをインポートする。pandas.read_csv
を使用してCSVファイルを読み込む。- DataFrameから特定の行を選択する。
サンプルコードと解説
以下のコードは、pandas
を使用してCSVファイルから特定の行を読み込む方法を示しています。
import pandas as pd
def read_specific_row(file_path, row_number):
df = pd.read_csv(file_path)
return df.iloc[row_number]
# 使用例
file_path = 'data.csv'
row_number = 2 # 3行目を読み込む
specific_row = read_specific_row(file_path, row_number)
print(specific_row)
データ1 データ2 データ3
Name: 2, dtype: object
応用例
複数の行を指定して読み込む方法
csvモジュールを使った方法
複数の行を指定して読み込むには、リストを使って行番号を管理し、指定した行をすべて読み込むことができます。
import csv
def read_multiple_rows(file_path, row_numbers):
rows = []
with open(file_path, mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for current_row_number, row in enumerate(reader):
if current_row_number in row_numbers:
rows.append(row)
return rows
# 使用例
file_path = 'data.csv'
row_numbers = [1, 2, 4] # 2行目、3行目、5行目を読み込む
multiple_rows = read_multiple_rows(file_path, row_numbers)
print(multiple_rows)
[['データ1', 'データ2', 'データ3'], ['データ4', 'データ5', 'データ6'], ['データ7', 'データ8', 'データ9']]
pandasライブラリを使った方法
pandas
を使用すると、行番号のリストを使って簡単に複数の行を選択できます。
import pandas as pd
def read_multiple_rows(file_path, row_numbers):
df = pd.read_csv(file_path)
return df.iloc[row_numbers]
# 使用例
file_path = 'data.csv'
row_numbers = [1, 2, 4] # 2行目、3行目、5行目を読み込む
multiple_rows = read_multiple_rows(file_path, row_numbers)
print(multiple_rows)
データ1 データ2 データ3
1 データ4 データ5 データ6
2 データ7 データ8 データ9
条件に基づいて行を読み込む方法
csvモジュールを使った方法
条件に基づいて行を読み込むには、各行をチェックし、条件を満たす行だけをリストに追加します。
import csv
def read_rows_by_condition(file_path, condition_func):
rows = []
with open(file_path, mode='r', encoding='utf-8') as file:
reader = csv.reader(file)
for row in reader:
if condition_func(row):
rows.append(row)
return rows
# 使用例
file_path = 'data.csv'
condition_func = lambda row: int(row[0]) > 5 # 1列目の値が5より大きい行を読み込む
filtered_rows = read_rows_by_condition(file_path, condition_func)
print(filtered_rows)
[['データ6', 'データ7', 'データ8'], ['データ9', 'データ10', 'データ11']]
pandasライブラリを使った方法
pandas
を使用すると、条件に基づいて行を簡単にフィルタリングできます。
import pandas as pd
def read_rows_by_condition(file_path, condition):
df = pd.read_csv(file_path)
return df[condition(df)]
# 使用例
file_path = 'data.csv'
condition = lambda df: df['データ1'] > 5 # 1列目の値が5より大きい行を読み込む
filtered_rows = read_rows_by_condition(file_path, condition)
print(filtered_rows)
データ1 データ2 データ3
5 データ6 データ7 データ8
6 データ9 データ10 データ11
まとめ
この記事では、Pythonを使用してCSVファイルから特定の行を読み込む方法について解説しました。
csv
モジュールとpandas
ライブラリの使い方を比較し、応用例やよくある質問にも触れました。
これを機に、CSVファイルの操作に挑戦してみてください。