[Python] 2つ以上のcsvを結合して1つのcsvにする方法を解説

Pythonでは、複数のCSVファイルを結合して1つのCSVファイルにするために、主にライブラリを使用します。

pandas.read_csv()関数を用いて各CSVファイルをデータフレームとして読み込み、pandas.concat()関数でこれらのデータフレームを結合します。

結合後のデータフレームはto_csv()メソッドを使って新しいCSVファイルとして保存できます。

この方法は、データの前処理や分析を行う際に非常に便利です。

この記事でわかること
  • pandasを使ったCSVファイルの結合方法
  • csvモジュールを使ったCSVファイルの結合方法
  • 列名が異なるCSVファイルの結合手法
  • 特定の列のみを結合する方法
  • 大量のCSVファイルを一括で結合する方法

目次から探す

必要なライブラリのインストール

PythonでCSVファイルを結合するためには、主にpandasライブラリを使用します。

また、標準ライブラリのcsvモジュールも利用可能です。

以下に、それぞれのインストール方法を説明します。

pandasのインストール方法

pandasは、データ解析やデータ操作に特化したライブラリです。

以下のコマンドを使用して、pandasをインストールできます。

pip install pandas

csvモジュールのインストール方法

csvモジュールはPythonの標準ライブラリに含まれているため、特別なインストールは必要ありません。

Pythonをインストールすると自動的に利用可能になります。

特に追加の手順はありませんが、使用する際は以下のようにインポートします。

import csv

これで、pandascsvモジュールの準備が整いました。

次のステップでは、これらのライブラリを使ってCSVファイルを結合する方法を解説します。

pandasを使ったCSVファイルの結合

pandasを使用すると、複数のCSVファイルを簡単に結合することができます。

以下に、pandasの基本的な使い方からCSVファイルの結合方法までを詳しく解説します。

pandasの基本的な使い方

pandasを使用するためには、まずライブラリをインポートします。

基本的なデータ構造としてDataFrameを使用します。

以下は、pandasのインポート方法と簡単なDataFrameの作成例です。

import pandas as pd
# サンプルデータの作成
data = {
    '名前': ['田中', '鈴木'],
    '年齢': [28, 34]
}
df = pd.DataFrame(data)
print(df)
名前  年齢
0  田中  28
1  鈴木  34

複数のCSVファイルを読み込む

複数のCSVファイルを読み込むには、pd.read_csv()関数を使用します。

以下は、2つのCSVファイルを読み込む例です。

df1 = pd.read_csv('file1.csv')
df2 = pd.read_csv('file2.csv')

DataFrameの結合方法

pandasでは、DataFrameを結合するために主に2つの関数を使用します:concat関数merge関数です。

concat関数を使った結合

concat関数は、縦または横にDataFrameを結合するために使用します。

以下は、縦に結合する例です。

df_combined = pd.concat([df1, df2], axis=0)  # 縦に結合
print(df_combined)

merge関数を使った結合

merge関数は、SQLのJOINのように、特定のキーを基にDataFrameを結合します。

以下は、共通の列IDを基に結合する例です。

df_combined = pd.merge(df1, df2, on='ID')  # ID列を基に結合
print(df_combined)

結合したDataFrameをCSVファイルに書き出す

結合したDataFrameをCSVファイルに書き出すには、to_csv()メソッドを使用します。

以下は、結合したデータをoutput.csvというファイル名で保存する例です。

df_combined.to_csv('output.csv', index=False)  # インデックスを含めずに保存

これで、pandasを使ったCSVファイルの結合方法についての基本的な知識が得られました。

次のステップでは、csvモジュールを使ったCSVファイルの結合方法を解説します。

csvモジュールを使ったCSVファイルの結合

Pythonの標準ライブラリであるcsvモジュールを使用して、CSVファイルを結合する方法について解説します。

csvモジュールは、CSVファイルの読み書きに特化した機能を提供します。

csvモジュールの基本的な使い方

csvモジュールを使用するためには、まずインポートします。

以下は、csvモジュールを使った基本的な読み込みの例です。

import csv
# CSVファイルの読み込み
with open('file.csv', mode='r', encoding='utf-8') as file:
    reader = csv.reader(file)
    for row in reader:
        print(row)

このコードは、指定したCSVファイルを読み込み、各行を表示します。

複数のCSVファイルを読み込む

複数のCSVファイルを読み込む場合も、csvモジュールを使用します。

以下は、2つのCSVファイルを読み込む例です。

data = []
# file1.csvの読み込み
with open('file1.csv', mode='r', encoding='utf-8') as file1:
    reader1 = csv.reader(file1)
    for row in reader1:
        data.append(row)
# file2.csvの読み込み
with open('file2.csv', mode='r', encoding='utf-8') as file2:
    reader2 = csv.reader(file2)
    for row in reader2:
        data.append(row)

リストを使ったデータの結合

読み込んだデータはリストに格納されているため、リストを使ってデータを結合します。

上記のコードでdataリストにすべての行が格納されています。

必要に応じて、重複行を削除することもできます。

# 重複行を削除する場合
unique_data = list(set(map(tuple, data)))  # リストをセットに変換して重複を削除

結合したデータをCSVファイルに書き出す

結合したデータを新しいCSVファイルに書き出すには、csv.writerを使用します。

以下は、結合したデータをoutput.csvというファイル名で保存する例です。

with open('output.csv', mode='w', encoding='utf-8', newline='') as output_file:
    writer = csv.writer(output_file)
    writer.writerows(unique_data)  # 結合したデータを書き出す

これで、csvモジュールを使ったCSVファイルの結合方法についての基本的な知識が得られました。

次のステップでは、応用例を紹介します。

応用例

ここでは、CSVファイルの結合に関するいくつかの応用例を紹介します。

これにより、さまざまな状況に対応できるようになります。

列名が異なるCSVファイルの結合

異なる列名を持つCSVファイルを結合する場合、pandasmerge関数を使用して、共通の列を基に結合することができます。

以下は、異なる列名を持つ2つのCSVファイルを結合する例です。

import pandas as pd
# CSVファイルの読み込み
df1 = pd.read_csv('file1.csv')  # 列名: 'ID', '名前'
df2 = pd.read_csv('file2.csv')  # 列名: '識別子', '年齢'
# 列名を変更して結合
df2.rename(columns={'識別子': 'ID'}, inplace=True)
df_combined = pd.merge(df1, df2, on='ID')
print(df_combined)

特定の列のみを結合する方法

特定の列のみを結合したい場合、pandaslocfilterを使用して必要な列を選択することができます。

以下は、特定の列を選択して結合する例です。

import pandas as pd
# CSVファイルの読み込み
df1 = pd.read_csv('file1.csv')  # 列名: 'ID', '名前', '年齢'
df2 = pd.read_csv('file2.csv')  # 列名: 'ID', '住所'
# 特定の列のみを選択して結合
df1_selected = df1[['ID', '名前']]
df2_selected = df2[['ID', '住所']]
df_combined = pd.merge(df1_selected, df2_selected, on='ID')
print(df_combined)

大量のCSVファイルを一括で結合する方法

大量のCSVファイルを一括で結合する場合、globモジュールを使用してファイルを取得し、pandasconcat関数で結合することができます。

以下は、特定のディレクトリ内のすべてのCSVファイルを結合する例です。

import pandas as pd
import glob
# CSVファイルのパスを取得
file_paths = glob.glob('data/*.csv')  # 'data'フォルダ内のすべてのCSVファイル
# 各CSVファイルを読み込み、リストに格納
dataframes = [pd.read_csv(file) for file in file_paths]
# DataFrameを一括で結合
df_combined = pd.concat(dataframes, ignore_index=True)
print(df_combined)

これで、CSVファイルの結合に関する応用例をいくつか紹介しました。

次のセクションでは、よくある質問にお答えします。

よくある質問

pandasとcsvモジュールの違いは何ですか?

pandasはデータ解析やデータ操作に特化した強力なライブラリで、DataFrameというデータ構造を使用して複雑なデータ操作が可能です。

一方、csvモジュールはPythonの標準ライブラリで、CSVファイルの読み書きに特化しており、シンプルな操作が可能ですが、データの操作機能は限られています。

pandasは大規模なデータセットや複雑なデータ操作に適しており、csvモジュールは軽量な処理に向いています。

結合時に重複する行を削除する方法は?

pandasを使用している場合、drop_duplicates()メソッドを使って重複行を削除できます。

csvモジュールを使用している場合は、リストをセットに変換して重複を削除することができます。

結合する際にエラーが発生した場合の対処法は?

結合時にエラーが発生する場合、以下の点を確認してください。

  • 結合する列名が正しいか
  • データ型が一致しているか(例:文字列と整数の混在がないか)
  • 欠損値がないか

エラーメッセージを確認し、問題の特定を行うことが重要です。

必要に応じて、データを前処理してから結合を試みてください。

まとめ

この記事では、Pythonを使用して複数のCSVファイルを結合する方法について詳しく解説しました。

pandascsvモジュールを使った基本的な操作から、応用例まで幅広くカバーしました。

これを機に、実際のデータ処理に挑戦してみてください。

  • URLをコピーしました!
目次から探す