CSVファイルをExcel形式に変換する
CSVはExcelと並んでよく仕事で見かけるファイル形式です。データをカンマで区切って並べたテキストファイルで表形式のデータを受け渡しするときに使います。
ここではCSVファイルをExcelファイルに変換し、または逆にExcelファイルをCSVファイルに変換する方法を説明します。
まだPythonってなに?って人は開発環境から整えていきましょう。
サンプルのExcel、CSVデータは下のボタンよりどうぞ
↓
今回はサンプルプログラムが2つあります。to_excel.pyはdata1.csvからdata1.xlsxを作成します。
python to_excel.py
動画で流れを確認した後に、記事を読んでいただくと理解が進むので、おすすめです。
to_csv.pyはその逆でdata2.xlsxからdata2.csvを作成します。
to_csv.pyを実行すると
プログラムを見ていきましょう。
まずはCSVファイルをExcelファイルに変換するto_excel.pyです。
to_excel.py
import pandas as pd
# 読み込むcsvファイルのリスト
file_list = ["data1.csv", "data2.csv", "data3.csv"]
# CSVデータを蓄積するリスト
data_list = []
# csvファイルを読み込むループ
for csv_filename in file_list:
# csvファイルの読み込み
df = pd.read_csv(csv_filename)
# 行ループ
for index, rows in df.iterrows():
# 1行分のデータを保存する作業用リスト
work = []
# 列ループ
for col in rows:
# 列を追加
work.append(col)
# 1行分のデータをリストに追加
data_list.append(work)
# 最後に読み込んだCSVファイルから列名を取得
columns = list(df.columns)
print(data_list)
# data_listを元にデータフレームを作成
df = pd.DataFrame(data_list, columns=columns)
with pd.ExcelWriter("data.xlsx") as writer:
df.to_excel(writer, index=False)
CSVやExcelなどの表形式のデータを扱うには、pandasというパッケージを使います。
使い方は結構簡単です。
CSVファイルを読み込たい時はread_csvを使うとデータフレームという形式のオブジェクトを返します。
データフレームをExcel形式で保存するときはto_excelメソッドを使います。
その前のwith pd.excel writerからセットで1つの保存処理と考えてください。
read_csvで読み込みto_excelで保存です。
意外と簡単そうですね。
次はExcelファイルからCSVファイルへの変換を行うto_csv.pyです。
to_csv.py
import pandas as pd
# Excleファイルのファイル名を変数に格納する
file_name = "data2.xlsx"
# Excelファイルを読み込む
df = pd.read_excel(file_name, engine="openpyxl")
# ファイルの拡張子をxlsxからcsvに変更して変数に格納する
csv_filename = file_name.replace("xlsx", "csv")
# csv形式で書き出し
df.to_csv(csv_filename)
ExcelファイルをCSV形式で保存するときはto_csvメソッドを使います。
データフレームオブジェクトはpandasの表データです。
1列分を抜き出したseriesオブジェクトもよく使われます。
データフレームオブジェクトではメソッドや属性を利用して、データの挿入や削除、連結、集計等の処理を行います。
つまりExcelのような表データに使えるということです。
PythonでExcelを操る他テクニック
openpyxlの使い方 Excelの差し込みがワンクリックで
tabulaのconvert_into関数でPDFファイルをExcelに変換
これは便利!Pythonのconcat関数で追記するプログラムをつくる