【Python】csvファイルをエクセル(xlsx)に変換する方法を解説

この記事では、必要なライブラリのインストールから、csvファイルの読み込み、データの変換と保存、そして実際のコード例まで、初心者でもわかりやすく解説します。

さらに、特定の列をフィルタリングして保存する方法や、データのフォーマットを変更して保存する方法などの応用例も紹介します。

目次から探す

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

Pythonでcsvファイルをエクセルファイル(xlsx形式)に変換するためには、いくつかのライブラリが必要です。

主に使用するライブラリは pandasopenpyxl です。

これらのライブラリをインストールする方法について説明します。

pandasのインストール

pandasは、データ操作や解析を行うための強力なライブラリです。

csvファイルの読み込みやデータフレームの操作に非常に便利です。

pandasをインストールするには、以下のコマンドを使用します。

pip install pandas

このコマンドをターミナルやコマンドプロンプトに入力して実行してください。

インストールが成功すると、pandasを使用してcsvファイルを簡単に読み込むことができるようになります。

openpyxlのインストール

openpyxlは、Excelファイル(xlsx形式)を読み書きするためのライブラリです。

pandasと組み合わせて使用することで、csvファイルをエクセルファイルに変換することができます。

openpyxlをインストールするには、以下のコマンドを使用します。

pip install openpyxl

このコマンドをターミナルやコマンドプロンプトに入力して実行してください。

インストールが成功すると、pandasの機能を利用してエクセルファイルを作成することができるようになります。

以上で、必要なライブラリのインストールは完了です。

次に、csvファイルの読み込み方法について説明します。

csvファイルの読み込み

csvファイルをエクセルファイルに変換するためには、まずcsvファイルをPythonで読み込む必要があります。

ここでは、pandasライブラリを使用してcsvファイルを読み込む方法を解説します。

pandasを使ったcsvファイルの読み込み

pandasは、データ操作や解析に非常に便利なライブラリです。

csvファイルを読み込むためには、pandasのread_csv関数を使用します。

以下に基本的な読み込み方法を示します。

import pandas as pd
# csvファイルのパスを指定
csv_file_path = 'data.csv'
# pandasのread_csv関数を使ってcsvファイルを読み込む
df = pd.read_csv(csv_file_path)

上記のコードでは、data.csvという名前のcsvファイルを読み込み、データをpandasのDataFrameオブジェクトとしてdfに格納しています。

csv_file_pathには、読み込みたいcsvファイルのパスを指定します。

読み込んだデータの確認

csvファイルを読み込んだ後、データが正しく読み込まれているかを確認することが重要です。

pandasのDataFrameオブジェクトには、データを確認するための便利なメソッドがいくつか用意されています。

データの先頭を確認する

headメソッドを使用すると、データの先頭部分を確認することができます。

デフォルトでは、先頭の5行が表示されます。

# データの先頭5行を表示
print(df.head())

データの概要を確認する

infoメソッドを使用すると、データの概要(行数、列数、データ型など)を確認することができます。

# データの概要を表示
print(df.info())

特定の列のデータを確認する

特定の列のデータを確認したい場合は、DataFrameオブジェクトの列名を指定してアクセスします。

# 'column_name'という列のデータを表示
print(df['column_name'])

これらのメソッドを使用することで、csvファイルから読み込んだデータが正しく取り込まれているかを確認することができます。

次のステップでは、このデータをエクセルファイルに変換して保存する方法について解説します。

データの変換と保存

DataFrameをエクセルファイルに変換

csvファイルを読み込んだ後、そのデータをエクセルファイルに変換するためには、まずpandasのDataFrameオブジェクトをエクセル形式に変換する必要があります。

pandasはこの作業を非常に簡単に行うためのメソッドを提供しています。

以下は、csvファイルを読み込んだDataFrameをエクセルファイルに変換する基本的な方法です。

import pandas as pd
# csvファイルを読み込む
df = pd.read_csv('sample.csv')
# DataFrameをエクセルファイルに変換
df.to_excel('output.xlsx', index=False)

このコードでは、pd.read_csvメソッドを使用してcsvファイルを読み込み、その後to_excelメソッドを使用してエクセルファイルに変換しています。

index=Falseは、DataFrameのインデックスをエクセルファイルに含めないようにするオプションです。

エクセルファイルの保存

エクセルファイルの保存は、上記のto_excelメソッドを使用することで簡単に行えます。

保存先のファイル名を指定するだけで、pandasが自動的にエクセルファイルを作成してくれます。

以下に、エクセルファイルの保存に関する詳細な例を示します。

import pandas as pd
# csvファイルを読み込む
df = pd.read_csv('sample.csv')
# DataFrameをエクセルファイルに変換して保存
df.to_excel('output.xlsx', index=False)
print("エクセルファイルが正常に保存されました。")

このコードを実行すると、カレントディレクトリにoutput.xlsxという名前のエクセルファイルが作成されます。

print文を追加することで、エクセルファイルが正常に保存されたことを確認できます。

また、エクセルファイルの保存時にシート名を指定することも可能です。

デフォルトではシート名はSheet1になりますが、以下のようにしてカスタマイズすることができます。

import pandas as pd
# csvファイルを読み込む
df = pd.read_csv('sample.csv')
# DataFrameをエクセルファイルに変換して保存(シート名を指定)
df.to_excel('output.xlsx', sheet_name='データシート', index=False)
print("エクセルファイルが正常に保存されました。")

このコードでは、sheet_nameオプションを使用してシート名をデータシートに指定しています。

これにより、エクセルファイルを開いたときにシート名がデータシートとして表示されます。

以上で、csvファイルをエクセルファイルに変換し、保存する方法についての解説を終わります。

次のセクションでは、実際のコード例をさらに詳しく見ていきましょう。

実際のコード例

ここでは、実際にPythonコードを使ってcsvファイルをエクセルファイルに変換する方法を具体的に解説します。

基本的な変換方法から、シート名の指定、複数のcsvファイルを一つのエクセルファイルにまとめる方法までを紹介します。

基本的な変換コード

まずは、最も基本的なcsvファイルをエクセルファイルに変換するコードを見てみましょう。

import pandas as pd
# csvファイルの読み込み
csv_file = 'data.csv'
df = pd.read_csv(csv_file)
# エクセルファイルに変換して保存
excel_file = 'data.xlsx'
df.to_excel(excel_file, index=False)

このコードでは、pandasライブラリを使ってcsvファイルを読み込み、to_excelメソッドを使ってエクセルファイルに変換しています。

index=Falseとすることで、デフォルトの行番号がエクセルファイルに含まれないようにしています。

エクセルファイルのシート名を指定する方法

次に、エクセルファイルのシート名を指定して保存する方法を見てみましょう。

デフォルトではシート名は Sheet1 になりますが、これを任意の名前に変更することができます。

import pandas as pd
# csvファイルの読み込み
csv_file = 'data.csv'
df = pd.read_csv(csv_file)
# エクセルファイルに変換して保存(シート名を指定)
excel_file = 'data_with_sheet_name.xlsx'
df.to_excel(excel_file, sheet_name='MySheet', index=False)

このコードでは、to_excelメソッドsheet_name引数を使ってシート名を MySheet に指定しています。

複数のcsvファイルを一つのエクセルファイルにまとめる方法

最後に、複数のcsvファイルを一つのエクセルファイルにまとめる方法を紹介します。

各csvファイルを別々のシートに保存することができます。

import pandas as pd
# 複数のcsvファイルの読み込み
csv_files = ['data1.csv', 'data2.csv', 'data3.csv']
excel_file = 'combined_data.xlsx'
# エクセルライターを作成
with pd.ExcelWriter(excel_file) as writer:
    for i, csv_file in enumerate(csv_files):
        df = pd.read_csv(csv_file)
        sheet_name = f'Sheet{i+1}'
        df.to_excel(writer, sheet_name=sheet_name, index=False)

このコードでは、pandas.ExcelWriterを使ってエクセルファイルを作成し、各csvファイルを異なるシートに保存しています。

シート名は Sheet1, Sheet2, Sheet3 のように自動的に設定されます。

以上が、csvファイルをエクセルファイルに変換する基本的な方法と応用例です。

これらの方法を使って、データの管理や分析を効率化することができます。

応用例

csvファイルをエクセルファイルに変換する基本的な方法を学んだところで、次に応用例を見ていきましょう。

ここでは、特定の列をフィルタリングして保存する方法や、データのフォーマットを変更して保存する方法について解説します。

特定の列をフィルタリングして保存

csvファイルには多くの列が含まれていることがありますが、必要な情報だけをエクセルファイルに保存したい場合があります。

ここでは、特定の列をフィルタリングして保存する方法を紹介します。

まず、csvファイルを読み込み、必要な列だけを選択します。

その後、選択したデータをエクセルファイルに保存します。

import pandas as pd
# csvファイルを読み込む
df = pd.read_csv('sample.csv')
# 必要な列だけを選択する
filtered_df = df[['列1', '列2', '列3']]
# エクセルファイルに保存する
filtered_df.to_excel('filtered_output.xlsx', index=False)

上記のコードでは、sample.csvというcsvファイルを読み込み、列1, 列2, 列3という特定の列だけを選択してfiltered_output.xlsxというエクセルファイルに保存しています。

データのフォーマットを変更して保存

次に、データのフォーマットを変更して保存する方法を紹介します。

例えば、日付のフォーマットを変更したり、数値のフォーマットを変更したりすることができます。

以下の例では、日付のフォーマットを変更してエクセルファイルに保存する方法を示します。

import pandas as pd
# csvファイルを読み込む
df = pd.read_csv('sample.csv')
# 日付のフォーマットを変更する
df['日付'] = pd.to_datetime(df['日付']).dt.strftime('%Y-%m-%d')
# エクセルファイルに保存する
df.to_excel('formatted_output.xlsx', index=False)

上記のコードでは、sample.csvというcsvファイルを読み込み、日付列の日付フォーマットをYYYY-MM-DD形式に変更してformatted_output.xlsxというエクセルファイルに保存しています。

また、数値のフォーマットを変更する場合も同様に行います。

以下の例では、数値を小数点以下2桁にフォーマットして保存する方法を示します。

import pandas as pd
# csvファイルを読み込む
df = pd.read_csv('sample.csv')
# 数値のフォーマットを変更する
df['数値列'] = df['数値列'].map('{:.2f}'.format)
# エクセルファイルに保存する
df.to_excel('formatted_output.xlsx', index=False)

上記のコードでは、sample.csvというcsvファイルを読み込み、数値列の数値を小数点以下2桁にフォーマットしてformatted_output.xlsxというエクセルファイルに保存しています。

これらの応用例を活用することで、より柔軟にデータをエクセルファイルに変換して保存することができます。

エラー対処法

Pythonでcsvファイルをエクセルファイルに変換する際には、いくつかのエラーが発生する可能性があります。

ここでは、よくあるエラーとその対処法について解説します。

ファイルが見つからない場合の対処法

csvファイルを読み込む際に、指定したファイルが見つからない場合は、以下のようなエラーが発生します。

FileNotFoundError: [Errno 2] No such file or directory: 'example.csv'

このエラーが発生する原因としては、以下のようなものが考えられます。

  • ファイル名が間違っている
  • ファイルのパスが間違っている
  • ファイルが存在しない

対処法としては、以下の点を確認してください。

  1. ファイル名とパスを確認する: ファイル名やパスが正しいかどうかを確認します。

特に、パスの区切り文字(スラッシュやバックスラッシュ)に注意してください。

  1. ファイルの存在を確認する: 実際にファイルが存在するかどうかを確認します。

ファイルが存在しない場合は、ファイルを作成するか、正しいファイルを指定してください。

  1. 相対パスと絶対パスを使い分ける: 相対パスを使用している場合は、スクリプトの実行ディレクトリが正しいかどうかを確認します。

絶対パスを使用することで、パスの問題を回避できます。

データの読み込みエラーの対処法

csvファイルのデータを読み込む際に、データの形式や内容に問題がある場合は、以下のようなエラーが発生することがあります。

pandas.errors.ParserError: Error tokenizing data. C error: Expected 1 fields in line 3, saw 2

このエラーが発生する原因としては、以下のようなものが考えられます。

  • csvファイルのフォーマットが不正
  • デリミタ(区切り文字)が正しくない

対処法としては、以下の点を確認してください。

  1. csvファイルのフォーマットを確認する: csvファイルが正しいフォーマットで保存されているかどうかを確認します。

特に、各行のフィールド数が一致しているかどうかを確認してください。

  1. デリミタを指定する: csvファイルのデリミタがカンマ以外の場合は、pandas.read_csv関数delimiter引数を使用して正しいデリミタを指定します。
import pandas as pd
# セミコロン区切りのcsvファイルを読み込む場合
df = pd.read_csv('example.csv', delimiter=';')

エクセルファイルの保存エラーの対処法

エクセルファイルを保存する際に、ファイルのパスや名前に問題がある場合は、以下のようなエラーが発生することがあります。

PermissionError: [Errno 13] Permission denied: 'example.xlsx'

このエラーが発生する原因としては、以下のようなものが考えられます。

  • ファイルが既に開かれている
  • ファイルのパスが正しくない
  • 書き込み権限がない

対処法としては、以下の点を確認してください。

  1. ファイルが開かれていないか確認する: 保存しようとしているエクセルファイルが他のプログラムで開かれていないか確認します。

開かれている場合は、ファイルを閉じてから再度実行してください。

  1. ファイルのパスを確認する: 保存先のディレクトリが存在するかどうかを確認します。

存在しない場合は、ディレクトリを作成するか、正しいパスを指定してください。

  1. 書き込み権限を確認する: 保存先のディレクトリに書き込み権限があるかどうかを確認します。

権限がない場合は、権限を変更するか、別のディレクトリを指定してください。

以上の対処法を参考にして、エラーを解決し、スムーズにcsvファイルをエクセルファイルに変換できるようにしましょう。

目次から探す