ファイル

[Python] 行を指定してCSVファイルを読み込む方法

PythonでCSVファイルを操作する際、特定の行を読み込む方法は非常に便利です。

一般的に、pandasライブラリを使用することで、簡単に特定の行を抽出できます。

pandas.read_csv()関数を用いてCSVファイルを読み込み、iloclocを使って行を指定します。

また、csvモジュールを使用して、ファイルを行ごとに反復処理し、特定の行を取得することも可能です。

これにより、大規模なデータセットから必要な情報を効率的に抽出できます。

行を指定してCSVファイルを読み込む方法

csvモジュールを使った方法

特定の行を読み込む基本的な手順

  1. csvモジュールをインポートする。
  2. CSVファイルを開く。
  3. csv.readerを使用してファイルを読み込む。
  4. 指定した行をリストに格納する。

サンプルコードと解説

以下のコードは、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ライブラリを使った方法

特定の行を読み込む基本的な手順

  1. pandasライブラリをインポートする。
  2. pandas.read_csvを使用してCSVファイルを読み込む。
  3. 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ファイルの操作に挑戦してみてください。

関連記事

Back to top button