複数のExcelワークシートからのデータ読み込みと結合を自動化する
これで、forループを使って、Excelファイル listings.xlsx にある3つの取引所すべての上場情報のインポート処理を自動化できるようになりました。次の手順で進めます。
pd.ExcelFile()オブジェクトのsheet_names属性を使ってシート名を取得します。- 空のリストを作成します。
- 取得したシート名をforループで走査し、対応するシートからExcelファイルのデータを読み込んで変数に格納します。必要に応じて参照用の列を追加します。各イテレーションで、この変数の中身をリストに追加します。
- リスト内のDataFrameを連結します。
必要であれば、この章のこれまでの演習や pandas のドキュメントを参照してください。pandas は pd としてインポート済みです。
この演習はコースの一部です
Pythonでの金融データのインポートと管理
演習の手順
- ファイル
listings.xlsxを使ってpd.ExcelFile()オブジェクトを作成し、変数xlsに代入します。 xlsの.sheet_names属性からシート名を取得し、exchangesに代入します。- 空のリストを作成し、変数
listingsに代入します。 - forループで
exchangesをexchangeを反復変数として走査します。各イテレーションで以下を行います。- 欠損値対応として
na_valuesに'n/a'を指定し、データソースにxls、sheet_name引数にexchangeを指定してpd.read_excel()を使います。結果をlistingに代入します。 listingに新しい列'Exchange'を作成し、値としてexchange(反復変数)を設定します。- 得られた
listingDataFrame をlistingsに追加します。
- 欠損値対応として
pd.concat()を使ってlistingsの中身を連結し、listing_dataに代入します。.info()を使ってlisting_dataの内容を確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Create the pd.ExcelFile() object
xls = ____
# Extract the sheet names from xls
exchanges = ____.____
# Create an empty list: listings
# Import the data
for exchange in exchanges:
listing = pd.____(____, sheet_name=____, na_values='n/a')
listing['Exchange'] = ____
listings.____(____)
# Concatenate the listings: listing_data
listing_data = pd.____(____)
# Inspect the results
listing_data.info()