【第15回PYTHON講座】PYTHONでLibreOffice Calsの表を操作してみよう

スポンサーリンク
PYTHON

今回はLibreOfficeの表計算ソフトCalsの表を操作するプログラムを作成したいと思います。

LibreOffice CalsはMicrosoftのExcelに相当するソフトです。Excelを購入出来ない人にとってはLibreOfficeは必須ですよね。

では、今回、作成するプログラムは下記になります。

LibreOfficeの表計算『Cals』で作った成績表(odsファイル)から、各個人の平均、科目の平均を求める
 

今回は、LibreOfficeの表計算『Cals』のファイルの操作と共に、表計算の操作の基本を覚えましょうね。

スポンサーリンク

ライブラリ『pandas』, 『numpy』, 『odfpy』をインストール

まず、表計算を操作するためのライブラリ『pandas』, 『numpy』をインストールします。『odfpy』はCalsを操作するライブラリになります。

データを準備する

C:\Labo\python\librecal01にファイル名『score.ods』として、下記の表を作ります。

同じファイル内にシート『Sheet1』、『Sheet2』を、それぞれ作って下さい。

『Sheet1』の表


『Sheet2』の表

odsファイルを読み込んで表示させる

1、2行目『pandas』『numpy』のライブラリをインポートします。ここで、『odfpy』をインポートしていません。『pandas』内で『odfpy』が使用されているので、インポートする必要はありません。

4行目:ファイルを絶対パスで指定します。

6行目重要なポイントです。エクセルファイルを読み込むときは必要ありませんが、odsファイルを読み込むときは、オプションで『engine=”odf”』を追記する必要があります。

そして、『df』はデータフレームの略です。『df』を出力すると、下記の通りになります。

ここでは『Sheet1』のみが表示されています。つまり、6行目のコード内でシートを指定しない時は、並びで一番初めのシートが読み込まれることになります。

シートを指定して読み込む

シートを別々に読み込むためには、『pd.read_excel』のオプションで下記のようにシートを指定します。

出力結果は下記の通りです。これで『Sheet1』、『Sheet2』が無事に読み込むことができました。

シートが複数ある場合、最初のシートも、上記のように、指定して読み込むことをおススメします。そうすれば、万が一、シートの順番が変更してしまった場合も、シートを間違えることなく、読み込むことが出来ます。

データフレームとは?

先ほどのデータフレームを出力すると、odsファイルの表の通りに出力されました。

つまり、データフレームは『表全体を格納する変数』なのです。

リスト等を定義して、データを1行ずつ読み込んでいくことと異なり、非常に簡単です。ライブラリ『pandas』を使う理由が分かりましたね。

平均値を求める

教科の平均を求める

各教科の平均はライブラリ『numpy』を使うと一発で求める事が出来ます。

np.mean(df)』は平均値を求める『numpy』の関数です。

出力結果は下記になります。平均値が求められていますね。

dtype: float64というのは出力された結果の型になります。

個人の平均を求める

では、各個人の平均を出力しましょう。

先ほどの教科は列ごとの平均になりましたが、次は、行ごとの平均になります。行の平均を求める時は、『axis=1』とオプションを加えます。

出力結果は下記の通りになります。各個人の平均が求められていますね。

次回

いかがだったでしょうか。

LibreOfficeでも、エクセルでも、データフレーム化さえすれば、扱いは同じです。

次回は各個人の平均がシート毎に別れていたので、『Sheet1』と『Sheet2』をまとめて平均をとるプログラムに拡張したいと思います。

コメント

Social Media Auto Publish Powered By : XYZScripts.com
タイトルとURLをコピーしました