[Python] 2つ以上のcsvを結合して1つのcsvにする方法を解説
Pythonでは、複数のCSVファイルを結合して1つのCSVファイルにするために、主にライブラリを使用します。
pandas.read_csv()関数を用いて各CSVファイルをデータフレームとして読み込み、pandas.concat()関数でこれらのデータフレームを結合します。
結合後のデータフレームはto_csv()メソッドを使って新しいCSVファイルとして保存できます。
この方法は、データの前処理や分析を行う際に非常に便利です。
必要なライブラリのインストール
PythonでCSVファイルを結合するためには、主にpandasライブラリを使用します。
また、標準ライブラリのcsvモジュールも利用可能です。
以下に、それぞれのインストール方法を説明します。
pandasのインストール方法
pandasは、データ解析やデータ操作に特化したライブラリです。
以下のコマンドを使用して、pandasをインストールできます。
pip install pandascsvモジュールのインストール方法
csvモジュールはPythonの標準ライブラリに含まれているため、特別なインストールは必要ありません。
Pythonをインストールすると自動的に利用可能になります。
特に追加の手順はありませんが、使用する際は以下のようにインポートします。
import csvこれで、pandasとcsvモジュールの準備が整いました。
次のステップでは、これらのライブラリを使って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ファイルを結合する場合、pandasのmerge関数を使用して、共通の列を基に結合することができます。
以下は、異なる列名を持つ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)特定の列のみを結合する方法
特定の列のみを結合したい場合、pandasのlocやfilterを使用して必要な列を選択することができます。
以下は、特定の列を選択して結合する例です。
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モジュールを使用してファイルを取得し、pandasのconcat関数で結合することができます。
以下は、特定のディレクトリ内のすべての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ファイルの結合に関する応用例をいくつか紹介しました。
次のセクションでは、よくある質問にお答えします。
まとめ
この記事では、Pythonを使用して複数のCSVファイルを結合する方法について詳しく解説しました。
pandasやcsvモジュールを使った基本的な操作から、応用例まで幅広くカバーしました。
これを機に、実際のデータ処理に挑戦してみてください。