・openpyxlを使ってExcelを読み込みたい方
・Pythonを使ってExcelを取り扱ってみたい方
・実際どういうコードでExcelを読み込むか知りたい方
どうもこんにちは
今でもExcelを扱うことが苦手なコンです。
そんな私が働いている会社は、大量の Excelファイルを使って仕事をしております。
結構便利ですからね。
そこで今回はPythonを使ったExcelデータの取り扱い方法について書いていきます。
Excelデータを扱うライブラリ
Python言語でコードを書く時によく使う機能が「ライブラリ」です。「ライブラリ」とは、特定の動作をする関数やクラスを一つにまとめたもので、インターネット経由で誰でも自らのインストールして使うことができます。
Excelを扱うライブラリはいくつかあります。
メジャーなライブラリは下の2つです。
①openpyxl
②pandas
今回は
openpyxlをメインに書きたいと思います。
openpyxlのインストール
一番確実にインストールする方法は、公式HPを参照!!!
なんですが
と感じるので書いていきます。
まずインストールするためには
以下のコードをコマンドプロンプトもしくはターミナルで実行してください。
pip install openpyxl
そうすると、お使いのPCにインストールされているPythonに適合したバージョンのライブラリをダウンロード、インストールして使える状態にしてくれます。
openpyxlを使ったPythonコード
実際にPythonnコードを書いて
Excelをコードを書いてみましょう。
使用するExcelデータ
正直なんでも良かったんですが
千葉商科大学さん(https://www.cuc.ac.jp/)がプロ野球選手のポジション・身長・体重のデータを
提供していらっしゃったのでこのデータを使いたいと思います。
これの身長と体重のデータを抜き出して表示してみたいと思います。
Pythonコードを書く
とりあえず今回のコードはこんな感じ
import openpyxl
# baseball.xlsxを読み込み
wb = openpyxl.load_workbook("baseball.xlsx")
# 名前が「Sheet1」のシート
ws = wb["Sheet1"]
#シートの列数
row_max=ws.max_row
#身長と体重がどこの列か探す
for row in ws.rows:
for cell in row:
if cell.value == '身長':
height=cell.column
elif cell.value == '体重':
weight=cell.column
#身長と体重の値のみ表示
for i in range(2,row_max):
print(ws.cell(row=i, column=height).value, ws.cell(row=i, column=weight).value)
baseball.xlsxファイルが今回の読み込むファイルです。
上を実行するとこんな結果になります。
ちゃんと?金剛選手、岡田選手の順にデータが取れてます。
openpyxlを使う時のポイント
今回扱ったopenpyxlのポイントは2つあります。
ジェネレーターを含む2つのfor文
for row in ws.rows:
for cell in row:
この2つのfor文の箇所でしょうか
なれると、そんなに難しくないですよ!!
下の写真がポイントの2つのfor文のイメージ図です。
コードの
1行目:①ws,rows(ジェネレーター)から②row(データの列)を取り出す。
2行目:②rosから③cellを取り出す。
みたいにしてcellの値を取り出しています。
ジェネレーターってなんやねん
みたいに思うかたも多いかもしれませんが
今回はNo、選手名、リーグ。。。と左の列から順にデータを
吐き出してくるものです。
cellオブジェクトの取り扱い
今回はcell.valueやcell.columnのように
cellというオブジェクトの後にプロパティを記述して
cellの中に記述されている値や、どこの列かの値を出力しています。
この扱いを調べるには、やっぱりopenpyxl公式ページがちゃんと解説してくれております。
分からなかったらここを参考にしましょう。
終わりに
ここまで読んでいただきありがとうございます。
PythonでExcelのデータを読み込むのは、
プログラミングを始める実践の最初の1例だと思いますので頑張ってください。