Officeドキュメントはどこまでスクリプトで自動編集できるのか? (2) ~関数のプロット~

技研のまつけんです。

前回に引き続き、Officeドキュメントを自動編集したり自動生成したりしたいと思います。今回はPowerPoint文書に関数を「曲線」でプロットしてみます。
例えば、4周期分の正弦波をプロットすると以下のようになります:

続きを読む

Pandasの集計結果をネストしたdictに変換

技研のまつけんです。

Pythonでデータの集計をする際はPandasが便利です。特にgroupby()とcount()やsum()やagg()を組み合わせると、大抵の集計は出来てしまいます。集計する方法などもサーチエンジンなどで検索すると豊富に例が得られます。しかしながら、その結果を取り出す (参照する) 方法については、なかなか情報が見つかりません。結局、index/columns/loc/ilocなどを組み合わせることで取り出すことにしました。今回は、groupby(…).count()の結果をループなどで取り出す方法や、Python標準のdict形式に変換する方法について紹介したいと思います。

続きを読む

私の~/.bash_aliasesを公開する

この記事は『CRESCO Advent Calendar 2021』 2日目の記事です。

技研のまつけんです。

UNIX/Linuxでbashを使っている場合、起動時に~/.bashrcが実行されます。そこに

という記述があれば、~/.bash_aliasesが実行されます。今回は、私のそれ (ちょっとした便利ツール的なaliasたち) を紹介します (一部は、既に以前の記事で紹介済みなので、それらについては今回は割愛します)。なお、aliasと一緒にfunctionも記述されていますが、そこは気にせず運用しています。

続きを読む

機械学習をやろうとしたらデータクレンジングに明け暮れていた件(2) ~大量のファイルを分割アーカイブする~

技研のまつけんです。

前回の記事では、複数のアーカイブを展開してファイルやフォルダの名前の傾向を調べる過程を紹介しました。今回は、その逆の「多数のファイルを分活してアーカイブする」ためのシェルスクリプトを紹介したいと思います (前回の「まとめ」では違う予告をしましたが、その前に今回の作業をする機会があったので、先に記事にしました)。

自分がデータクレンジングしたものを誰かに渡すことがあります。その際、メールで送るにしてもサーバに置くにしても、再びアーカイブ (+圧縮) すると便利なのですが、数ギガバイトのzipやtgzだと色々と不便です。そこで、分割してアーカイブしたくなります。それを実現するのに、真っ先に思いつく方法は、a、b、cという3つのフォルダがあるのであれば (そして、3つのフォルダ内のデータ量に偏りが無いのであれば)、

のように

  • aで始まるものは、a.tgz
  • bで始まるものは、b.tgz
  • cで始まるものは、c.tgz

としてしまうことでしょう。

続きを読む

Officeドキュメントはどこまでスクリプトで自動編集できるのか? (1) ~画像のトリミング~

技研のまつけんです。

報告書やプレゼン資料などを作成していると、単純な作業の繰り返しが発生することが多々あるかと思います。そういうときは「自動化したい」と思ってしまう性格なので、ときどき自動化したりしています。今回は、PowerPointのファイルをcygwinの bashのシェルスクリプトで処理することで、自動的に画像のトリミングをしてしまおうという記事です。記事中のシェルスクリプトは全て、Windows 10 + Cygwin + bashで動作確認をしています。

続きを読む

Python用ライブラリ用のwrapperを作って使っている話

技術研究所 (技研) のまつけんです。

Python用のライブラリには、cv2 (OpenCV)、numpy (NumPy)、pandas (Pandas)などがあります。大抵のことが出来るので大変便利なのですが、引数の与え方などで不便を感じることがあります。そこで、今回は、私が普段、それらのライブラリをwrapするのに使っているサブルーチンを紹介したいと思います。

OpenCV用 (wrap_cv2.py)

色の定義

頻繁に利用する色 (無彩色、原色、補色) を定義します。OpenCVはRGBではなくBGRが基本なので、その順番となっています。

続きを読む

機械学習をやろうとしたらデータクレンジングに明け暮れていた件(1) ~フォルダ・ファイル名の傾向と対策~

技術研究所のまつけんです。

今回はデータクレンジングの話です。データクレンジングというのは、データを機械学習に流し込む前に全体的に眺めて、必要なら整形する作業です。KaggleやSIGNATEなどのコンテストではクレンジングされた状態のデータが提供されますが、実際の業務では、必ずしもそうとは限りません。そして、それはデータの中身に限った話ではありません。フォルダやファイルの名前が一定の規則に従ってない場合、それを規則的な名前にするところから始まります (規則的な名前でないとループなどで処理したりするのに不便です)。

機械学習に使う大きなデータをよそから転送する際、たいてい、DVDやアップローダなどで受け取ります。後者の場合はzipなどでアーカイブ (および圧縮) されていることが多いのですが、zipファイルが数十個ある場合もあります。今回の記事では、転送したデータを確認し、フォルダ名、ファイル名などを扱いやすい形に変換する過程について、説明します。データ数が膨大な場合を想定していますので、多くはbashスクリプトにより自動化しています。といっても、UNIX/Linuxをインストールする必要があるわけではありません。今から紹介する手法はcygwin上で行うことを想定しています (スクリプトは全てcygwinのbashで動作確認しています)。

今回は、機械学習用のデータについて、フォルダ構成を確認し、必要に応じて整形する手順を紹介したいと思います。

続きを読む

シンボリック・リンクを用いた分析対象データの管理ノウハウとシェルスクリプト

技術研究所のまつけんです。

技術研究所 (技研) では、画像 (静止画) データや動画データを分析対象として扱います。その際、分析対象のデータを間違えて消してしまったり、書き換えてしまったりすると大変です。今回は、私が実践している「間違いが起きない仕組み」について紹介したいと思います。具体的には、

  • オリジナルファイルを入れたディレクトリは書き込み禁止にし、
  • その隣に作業用ディレクトリを作成し、
  • オリジナルと同じディレクトリ構造を作り、
  • オリジナルファイルへのシンボリック・リンクを作成

します。もちろん、手作業でも出来るのですが、オリジナルファイルが多数ある場合などには自動化しないと大変です。そこで本記事では、そのために作成した、複数のファイルやディレクトリを扱うシェルスクリプトと、その作り方も紹介します。

続きを読む

Jupyter NotebookからGPUの占有状況をワンタッチで調べる

技術研究所(技研)のまつけんです。

技研では現在、2台のゲーミングデスクトップPCにLinux (Ubuntu)とJupyterをインストールして、共有で計算サーバとして使っています。2台のPCにグラフィックボードが2枚ずつ搭載しているのですが、技研メンバ全員が使うので、GPUやGDDR RAMなどのリソースの順番待ちが発生します。

グラフィックボードのステータスはnvidia-smiコマンドで確認するのですが、タスクの詳細(オーナなど)については、別途psコマンドなどで調べる必要があります。そこで今回、nvidia-smiコマンドの結果から自動的にpsコマンドで詳細を調べるシェルスクリプトを作ってみました(nvidia-smiのバージョンが450の場合は、awk ‘{print $5}’ ):

続きを読む

Jupyter Notebook上でソースコードのバージョン管理する

技術研究所(技研)のまつけんです。

技研では現在、3台のゲーミングデスクトップPCにLinux (Ubuntu)とJupyterをインストールして、共有で計算サーバとして使っています。私も、画像処理や機械学習のタスクをJupyterで行っています。また、開発中のソースコードなどはSubversionで管理しています。今回は、私が実践しているJupyter上でのソースコードのバージョン管理の手法について紹介したいと思います。

続きを読む