Posts

Showing posts from October, 2020

PythonのopenpyxlでExcelの行と列を入れ替えてみた

Image
今回のPythonの勉強は、Excelの行と列を入れ替えることをしてみました。予め、都道府県とその都道府県庁所在地をリスト化したExceを用意し、そのリストの行と列を入れ替えたものを新しい別のシートに作成するというもの。
以下がExcelファイル「Example.xlsx」の中身。 Pythonのコードは以下の通り。
解説はコード内にコメントしてあります。 #openpyxlモジュールを使用する import openpyxl #既存のExcelファイルを開く wb=openpyxl.load_workbook('Example.xlsx') #既存ファイルのシートを指定 sheet1=wb['Sheet1'] #既存ファイルに新規シートをシート名と位置を指定して作成 sheet2=wb.create_sheet(title='Sheet2',index=1) #Sheet1の値のある行数を取得 rw=sheet1.max_row #Sheet1の値のある列数を取得 cl=sheet1.max_column #iは値のある行数分繰り返す #jは値のある列数分繰り返す #range(start,stop)はstart≦i<stopでstopで指定した値は含まないので「+1」している for i in range(1,rw+1): for j in range(1,cl+1): C1=sheet1.cell(row=i,column=j) #sheet1のセルの行番号と列番号を指定している C2=sheet2.cell(row=j,column=i) #sheet1のセルの行番号と列番号を入れ替えてsheet2のセルを指定している C2.value=C1.value #sheet2のセルにsheet1のセルの値を代入 wb.save('Example.xlsx') #上書き保存 結果は以下の通り。 最初のリストの行数は6、列数は2。つまり、 rw=sheet1.max_row=6 cl=sheet1.max_column=2 for文は、 for i in range(1,7): #1≦i<7、つまり1行目から6行目まで for …

【まとめ】Pythonのopenpyxlで行うExcelの基本操作

Image
Pythonの勉強を再開し、Excelを操作して自動化させるべく色々と進めています。使用本は、『退屈なことはPythonにやらせよう〜』、私が購入したのは初版第1刷で2017年発刊分です。
Githubの方にある正誤表の中身を本に書き写しておきます。 この本の12章がExcelに関することで、ここを中心に、わからない場合は他の章を参照して進めています。

私の環境は、Ubuntuの公式Docker ImageにPythonやopenpyxl、JupyterLabをインストールして、Pythonの結果が随時確認できるようにしています。詳細は、拙ブログ『【まとめ】MacでPythonのGUIライブラリが使えるDockerの設定方法』にまとめています。マシン:MacBook ProOS:macOS Catalina(10.15.7)仮想環境:Docker Desktopエディタ:JupyterLabPython:Ver.3.8.2openpyxl:Ver.3.0.5

Excelを操作するといいながら、以下の画像はGoogleスプレッドシートです。ファイルは拡張子「.xlsx」で保存すれば、Excelが無くてもPythonで操作が可能で、GoogleスプレッドシートでもOpenOfficeで開きますので確認も可能です。

そんな中、Excelを操作する基本的なコードを備忘録としてまとめました。 #openpyxlモジュールを使用する import openpyxl #新規Excelファイルを開く wb=openpyxl.Workbook() #このExcelを保存する wb.save('example_copy.xlsx') #新規ファイルのシート名を確認する wb.sheetnames #シート名は「Sheet」の1シートのみある状態 #シート「Sheet」を指定する wb['Sheet'] #シート名を取得する wb['Sheet'].title #シート「Sheet」のシート名を変更する wb['Sheet'].title='Example 1' #シート名を確認する wb.sheetnames #シート名は「Example 1」に変更された #シートを追加する wb.create_shee…

なぜPython?Excelを操作して自動化したいのです!その方法と注意点

Image
昨日まででDockerでの開発環境構築は一応完成し落ち着いたので、やっとPythonの勉強を再開することにしました。
自分の現在のPythonの勉強方法と、ちょっと注意すべきことがありましたので以下に述べていこうと思います。

目次なぜPython?それはExcelを操作して自動化したいのですPythonの教科書として購読中の書籍PythonでExcel操作の開始注意点

なぜPython? それはExcelを操作して自動化したいのですそもそもPythonを覚えて何をしたいか。
それはExcelを操作して自動化したい、ということです。私の本職は一応デザイナーを名乗っていて、ロゴ制作やWEB制作などをしていますが、InDesignで組版もしています。というか前職のメインはこちらでした。
冊子を組版したりもしていましたが、バリアブル印刷用にExcelでテキスト処理(主に関数を駆使して)してInDesignにデータ結合などで流し込みをしたりもよくしていました。
Excel関数だと関数自体が煩雑になりやすくて、自分で作っておきながら後で見返すと何がなんだか分からなくなる、それほどです。
で、このExcelでのテキスト処理をもっと効率よくしたいと。

Pythonの教科書として購読中の書籍Python本は、『Python本のオススメと絶対に挫折しないための学習方法とは | ガンマソフト株式会社』を参考に以下のものを購入しました。 そもそもこの本を進めていって、TurtleやTkinterが動かなくて、DockerでGUIライブラリを稼働させるように構築しようと思った次第です。それだけでも買ってよかったです。
この書籍の後半は人工知能の話になるので割愛しましたが、懇切丁寧な解説でPythonの敷居を低めてくれました。 続けて、こちらを購入しました。Pythonの文法といいますか書き方といいますか、1冊目より深い解説をされていて、辞書的に使えるかなと思っています。ですので、この本は全体をざっと読むに留め、不明点がある時に読み返そうと思います。
後半はGUIの操作やゲームを作ることをしますので、そちらに興味のある方はいいのではないでしょうか。

PythonでExcel操作の開始 そして今日からこちらの本で、Excelシートを操作することを勉強しています。
で、PythonでExcelを操作するにはopenpyxlモ…

【まとめ】MacでPythonのGUIライブラリが使えるDockerの設定方法

Image
PythonのGUIライブラリをDocker Container内で稼働させたく模索して1週間、よもやカスタマイズしたDocker Imageを作成するどころかDockerfileやらDocker Composeやらを書くことになる日がこんなに早く来るとは思っても見ませんでした。習うより慣れろこの言葉、使い倒されてもはや陳腐化しているこの言葉、やはり真理を突いています。この言葉の真意、それは「インプットしたら即座にアウトプットしろ」。真意を理解できた、そんな1週間でした。

さて、MacでPythonのGUIライブラリをDocker Container内のJupyterlabから稼働させる方法MacでPythonのGUIライブラリが使用可能なDockerをDockerfileにしてみたにてDocker Container内に構築したPythonとGUIライブラリを、Jupyterlabを介して稼働させる方法を模索してきました。改めて、何をしたいか、何が必要か、をまとめ、こちらの環境もまとめてから、完成したDockerfileとDocker Composeを公開し、どのようにしたかを解説していきます。

目次開発環境したいこと階層構造Dockerfileの解説Docker Composeの解説今後の課題参考サイト

開発環境環境は、マシン:MacBook ProOS:macOS Catalina(10.15.7)仮想環境:Docker Desktopエディタ:JupyterLab、Sublime Text上記に追加で、予めXquartzの導入と設定が必要になります。
導入および設定の方法は、拙ブログの『1 MacにXQuartzをインストール』および『2 XQuartzの環境設定を開く』をご覧ください。

したいことPythonをDockerで動かしたいPythonは同じくDockerに導入したJupyterlabで編集したいPythonのGUIライブラリもJupyterlabで編集したいPythonのGUIライブラリの結果はMacのデスクトップ上に表示したいJupyterlabで編集したPythonファイルはMacのデスクトップ上に保存したいこれらを1操作でおこなうためのDockerfileとDocker Composeを作成したいつまり、Python、PythonのGUIライブラ…