Python、Pandasを用いたExcelシート取り扱い
今日のお題
前回の記事ではPythonとPandasを使ってExcelファイルを読みましたが、今回はその詳しい解説とその続きです。
C++,C#などでそこそこ熟練したプログラマーがPythonに初めて触れたときの感想、といった内容になってきました。
Excelシートの内容をDataFrameに変換
まずは前回記事のコードの解説からです。
# インポート import pandas as pd
# ファイルのロード
filename = "C:\work\in\実験.xlsx"
file = pd.ExcelFile(filename, encoding='utf8')
# シートをDataFrame型として読み込んで、リストに格納
df_list = []
for sheet in file.sheet_names:
df_list.append(file.parse(sheet))
for ~ in file.sheet_namesでExcelファイル(ブック)内の各シートを列挙しています。
さらにfile.parse(sheet)でシートの内容をDataFrame型として読み取っているのですね。
この場所ですが、後でシート名も必要になりましたので
for sheet in file.sheet_names:
df_list.append( (sheetName, file.parse(sheetName)) )
と、名前とDataFrameを要素に持つタプルにして格納するよう変更しました。
データの構造にはいつも頭を悩まされますが、Pythonは分かりやすいですね。偉いぞPython。
DataFrame内のデータ処理
次に、このように格納したデータをプログラムで処理することを考えます。
for文のinの前に2つ変数を書くことで、リスト内の要素として取得したタプルから、さらに2つの要素を取得出来ます。
# 各シートごとに処理
for sheetName, sheetdf in df_list:
# 先ほど格納したシート名とDataFrameが取得される
# DataFrameを行ごとに処理
for index, row in sheetdf.iterrows():
#indexが行番号、rowが行の内容
print(row) #とりあえず表示してみる
DataFrameからは、iterrows()で列挙された行を取得できます。
ここでrow[0]がA列のセルの内容、row[1]がB列のセルの内容……となりますので、自由に扱えますね。
後書き
実際のプログラムではもっと複雑な構造のデータを扱うことがほとんどですが、この辺りは慣れたいですね。
次回はプログラムのテストについて、書けたらいいなあと思います。