Pythonを勉強しています...

文系教員ですが、昨今のご時世でいろいろ「IT」系の書籍も読まなければならなくなります。

そんな中で、オライリーという出版社の本はとても信頼できるな、と思います。(ただ、この出版社が発行している書籍はしばしば、英文であればネットで閲覧することが出来るので、その部分もまた凄い、と思う一方で、英語が苦手な僕は日本語訳を待ったり、翻訳サービスの無料枠で、パラグラフごとに訳して読まなければならなくて、残念な思いをしていますが。)

僕は長年Rのユーザーなので、Wickhamさんの『Rではじめるデータサイエンス』という本には随分目を開かれましたが、今、McKinneyさんの『Pythonによるデータ分析入門』という本を少しずつ読んでいるところです。

僕のニーズから言えば殆どはRで済むし(文系の研究者としては深層学習云々は関係ないので)、でも、Pythonのライブラリを使った方が簡単に出来るらしいことも増えてきているので、Pythonも使えなければ、というので、そんな事になっています。

で、その『Pythonによるデータ分析入門』を読み始めて分かったこと。

例えば、Pythonのpandasライブラリに関する記述でdataframeというのは、Rから持ち込んだ名前だというような記述がありました。

で、なるほどと思ったのは、Pythonは汎用プログラム言語、Rは統計解析環境、なので、Rならば標準のデータ構造も、Pythonではライブラリに頼らなければならない、ってこと。

Pythonの入門書とかを読んでいて、numpyとかpandasとかのライブラリの凄さが書かれているのを、最初の頃は「何言ってるの???」って気持ちで読んでいたのですが、Python+numpy+pandasで環境を整えれば、R(+tidyverse)程度の環境が整い、その上に、Pythonの場合は深層学習系のライブラリも充実しているので、それを加えて、アレコレできるって言うので、重宝がられているのだって、分かってきました。

Rだと、データフレームレベルは標準(で、tidyverseパッケージを導入すれば、「文系的な」発想でのデータフレームの操作も可能になる)なのですが、データ解析環境ではないPythonにとっては、それらのライブラリがRと同等のデータ解析環境を整えてくれたことが凄いわけですね。

PythonもRも実行速度的にはトントンで、いざとなればC++あたりで書かれたプログラムを呼び出すわけで、Rはそもそもそれが前提の設計、でも、Pythonもそれほど、データサイエンス業界のレベルでは、状況は変わらないのだということも分かってきました。

ちなみに、Rは全てをオンメモリで動かすという性格上、あまり大きなデータを処理しようとすると不具合が起きてしまうところがあるようで、それが、僕がPythonの処理も知らないといけないなー、とにわか勉強を始めた理由ですが...(テキストマイニング的な処理をしている際に、共起行列を作るという作業で、Rではメモリ不足で落ちましたが、Pythonでは何とかなりました。「Rでもやれるよ」、って話もあるでしょうし、Rユーザー的にはそういうのが嬉しいですが、実務的には、ともかく欲しい結果をとりあえず与えてくれるのが重要なので…

やっぱり、使い分けができなければ、これからの人たちは大変だなーと思います。(僕は、現職の内容な年齢から言えば、自分が何かをするより、後進が何かを出来るように情報提供をするのが、メインの仕事ですので)

僕は、Rのtidyverseのデータフレームの扱い方が美しいと思うし、Pythonにもその美しさが取り入れられればいいなと思います。

でも、一方で、RとPythonでは、例えば「オブジェクト指向」という考え方ひとつにしても、随分違うと思います。

Pythonはオブジェクト指向なそうですが、僕の感じからすると、あまりに模鷹揚すぎる感じもあります。Smalltalk世代から言えば、関数とか、メッセージとか、なんか、分かりにくいです(老害ですね)。

関数スタイルはわかりやすいですが、僕の馴染んでいるRは、おそらくその折衷型なので、なかなか、あれこれ言えません。でも、Pythonは、折衷型でも、あまり美しくない、と、つい感じてしまい、それが勉強をすると時の抵抗になってもいます。…

ともかくも、使い分けられればいいのだと思います。
それって、おそらく、道路が右側通行か左側通行か、ハンドルが右側か左側か、程度のものなのかな、とも思います。

慣れない間は、人の命に関わるような事故も起こしてしまうかもしれません。

でも、慣れてしまえば、瞬時に、使い分けができるようようなものです。



この記事が気に入ったらサポートをしてみませんか?