投稿者「scientist」のアーカイブ

pythonで文字列が特定の語句から始まるかをチェックする方法

文字列を分析する際に、特定の語句から始まっているかを調べるには、startwith()というメソッドが使えます。

str = "そうだ 京都、行こう!"
print (str.startswith( 'そうだ' ))
print (str.startswith( '京都', 4))
print (str.startswith( '京都', 4, 6 ))
print (str.startswith( '京都', 4, 5 ))

startswith()は、何から始まるかのチェックに使えますが、「始まり」の位置を文字列のどこかを指定して判定することも可能です。4番目から調べたければ、str.startswith( '京都', 4)となります。2個目の数字は、判定をどの文字まででやめるか。5文字目(の手前)でやめてしまうと、京都という2文字が入りきらないので、結果は「偽」となります。

上記のコードの実行結果の出力は、

True
True
True
False

となりました。

pythonで2つのリストのうちひとつのリストにしかない要素を抽出する方法

 

#リスト1にあって、リスト2にはない要素の抽出
list1 = ['太郎', '花子', '二郎', 'まるこ','三郎']
list2 = ['花子','まるこ','しずか']

list_difference = []
for item in list1:
if item not in list2:
list_difference.append(item)

print(list_difference)

上のコードを実行すると、出力は、

['太郎', '二郎', '三郎']

Anaconda 3 (Python 3.7 Version) のインストール

Pythonを使う環境としてAnacondaを利用していたのですが、自分がインストールしたものがAnaconda2で、Pythonのバージョンが2.7だということに気付きました。そこで、Python3も使えるようにするためにAnaconda3をインストールします。Anacondaというのは、「The Most Popular Python Data Science Platform」(もっとも人気の高いPythonでデータサイエンスを行うためのプラットフォーム)(anaconda.com)だそうです。

リナックスでのAnaconda3の起動方法

インストールできたと思ったのですが、アイコンがデスクトップに出てくるわけでもなく、画面端にもなく、どこにもダブルクリックすべきアナコンダ3のアイコンが見当たりません。一体どうやってAnaconda3を起動させればよいのやら。

端末でcondaと入力したら、ごにょごにょ表示されたので、インストールはできているようです。conda -Vと入力したら、バージョンが表示されて、conda 4.8.2 というメッセージになっていました。

 

Anacondaのダウンロード

→ ANACONDAのダウンロードサイト(マック、ウインドウズ、リナックス)

→ ANACONDAのダウンロード(ウインドウズ)(Python3.7 あるいは Python 2.7)

 

AnacondaのウインドウズPCへのインストール

自分の場合はウインドウズPCなので、ダウンロードした実行ファイルAnaconda3-2018.12-Windows-x86_64をクリックしてインストールを実行します。無事完了し、ANACONDA NAVIGATORを立ち上げるとEnvironmentsの画面でbase(root)とanaconda2の2つがリストされていました。Anaconda3をインストールする前はAnaconda2だったのでここにはbase(root)しか表示されていませんでしたが、2と3はこうやって併存できるようです。

 

Anaconda3のリナックスPCへのインストール

リナックスPCを買ったのでAnaconda3をインストールしました。http://www.anaconda.com/products/individualからAnaconda InstallersのセクションのLinuxのPython3.7のところにある522MBのインストーラーをLINUX PCにダウンロードしました。ダウンロードフォルダ内にAnaconda3-2020.02-Linux-x86_64.shというファイルがダウンロードできたのはいいのですが、これをダブルクリックしても、テキストファイルとして開かれるだけで何もインストールが始まりません。ウインドウズならインストーラーファイルをダブルクリックするだけで全てが勝手に進行してくれるというのに。

【初心者向け】.shファイルをLinuxで実行する方法(https://linuxfan.info/post-1486)

というウェブ記事を見つけました。インストールはターミナルウインドウから行うのがリナックスの常識みたいです。リナックスのデスクトップの画面で左上にあるアイコンをクリックして検索窓にtermと入れたら、端末のアイコンが現れましたのでそれをダブルクリックしたら、端末(ターミナル)のアプリケーションが起動しました。ここに見よう見まねで

sudo bash Anaconda3-2020.02-Linux-x86_64.sh

と入力してリターンキーを押したのですが、何度やっても何かしらミスタイプが生じて、なかなかうまくいきませんでした。ようやく、動いて、あとは聞かれるままにyesと入力していったら、

Thank you for installing Anaconda3!

というメッセージが出たので、あっさりとインストールが完了したようです。

 

JupyterノートブックでPythonプログラミング

JupyterLabというのをLaunchすると、ウェブブラウザ上に「ノートブック」が現れて、そこでPythonのコードを書いたり実行したりできます。Jupyter Notebookでも同じみたいで、自分には違いがわかりません。とりあえずこれでPython2.7 でも、Python3.7でも勉強できる環境が整いました。

 

Pythonでワードプレスブログに自動投稿する方法

いちいちワードプレスのブログにアクセスしてユーザーネームとキーワードを入力して、記事を書いて投稿しなくても、プログラム的に記事を投稿できないかと思ったら、Pythonを使って投稿する方法がいくつか紹介されていたので試してみました。

警告・免責事項

以下のやり方を試したら、自分の場合、ワードプレスのコントロールパネルに入れなくなりました。どうしても解決方法が見つからず、テストサイトだったのでワードプレスのインストールからやり直しました。バックアップを取っておいてからやらないと、あとでトラブルったときに致命的です。長年育ててきたサイトでやるのは、大変危険です。

この記事の内容に関しては、自己責任で参考になさってください。自分のための忘備録として残しておきます。

 

Python2.7でワードプレスに記事をテスト投稿

Python Code for adding posts to WordPress remotely gistfile1.py (github.com)

上のリンク先のコードはPython2.7を使っています。Anaconda(Python2.7)のJupyterノートブックにコードをコピペして、URLなどは自分のものに変えて、実行してみました。すると、ImportError: No module named wordpress_xmlrpcというエラーに。wordpress_xmlrpcという名前のモジュールがないためのエラーでした。AnacondaではどうやってPythonのモジュールをインストールすればよいのかよくわかりませんでしたが、Anaconda Promptのコマンドウインドウで、

>pip install wordpress_xmlrpc としてみましたが、
Could not find a version that satisfies the requirement wordpress_xmlrpc (from versions: )
No matching distribution found for wordpress_xmlrpc
と返されてしまいました。またPIPのバージョンが古いよというメッセージも出てきて、
You are using pip version 10.0.1, however version 18.1 is available.
You should consider upgrading via the ‘python -m pip install –upgrade pip’ command.
新しくしなさいというので、指示に従ってそのコマンドを打ったら、PIPのバージョンは無事アップグレードしてくれました。ネットでいろいろ調べて、https://go-journey.club/archives/6977を参考にして
pip install python-wordpress-xmlrpc
としてみたら、無事モジュールがインストールできました。で上のgistfile1.pyというコードは実行できて、サイトによっては投稿がうまくいきました。ただし、別のサイトでは
ExpatError: no element found: line 1, column 0
というエラーになってうまくいきませんでした。これは未解決。

【Python】【WordPress】XML-RPC で Python プログラムで WordPress に自動投稿する(go-journey.club)

上のサイトにもサンプルコードがあったので走らせてみました。Pythonのバージョンは2.7です。これもサイトによってはうまくいきませんでしたが、うまくいったサイトもありました。原因不明ですが。

上の2つのサンプルコードはPython2.7でしたが、Python3のサンプルコードもありました。

 

Python3.7でワードプレスに記事をテスト投稿

Pythonでwordpressに自動で投稿する(python-wordpress-xmlrpc) (2018年8月15日 バラ十字の道 awesome-rainbow-colors.com)

ANACONDA PROMPTの画面で

pip install python-wordpress-xmlrpc

として必要なモジュールをインストールしました。

Successfully installed python-wordpress-xmlrpc-2.3 というメッセージが出て無事インストール。これで上のサンプルコードも動きました。

記事投稿を普段手作業で行っている自分にしてみれば、それがプログラムから実行できてしまうというのは凄いことだと思います。これで記事内容まで自動生成できれば、自分の手間が省けてよいのですが。

 

参考(ワードプレス自動投稿のPythonサンプルコード)

  1. Python Code for adding posts to WordPress remotely gistfile1.py (github.com)(Python2)
  2. 【Python】【WordPress】XML-RPC で Python プログラムで WordPress に自動投稿する(go-journey.club)(Python2)
  3. Pythonでwordpressに自動で投稿する(python-wordpress-xmlrpc) (2018年8月15日 バラ十字の道 awesome-rainbow-colors.com)(Python3)

 

 

データサイエンス、機械学習、深層学習をPythonで学ぶための入門書

データ処理と可視化をPythonで行いたい場合に、どんな入門書があるのでしょうか?また、ディープラーニングに興味がある場合に、どんな本から入ればよいのでしょうか?良さげに思える本を主観で選んで紹介します。洋書はPDFがネット上にあるので、中身を確認できます。

Pythonデータサイエンスハンドブック

著者は、Jake VanderPlas氏で、原書のタイトルは、Python Data Science Handbookで副題が、Essential Tools for Working with Dataです。邦訳タイトル『Pythonデータサイエンスハンドブック』。副題として、「Jupyter, NumPy,pandas, Matplotlib, scikit-learnを使ったデータ分析、機械学習」とあります。VanderPlasさんは、ワシントン大学で博士号取得を取得し、ワシントン大学にて天文学の研究および研究者に対するコンサルティングを行っているそうです(参考:本書の著者紹介欄)。目次は、第一章がIPython, 第二章NumPy、第3章pandas、第4章Matplotlib、第5章機械学習というトピックで構成されています。本書は「Python3対応」として書かれていますが、Python2への配慮もなされています。本書は、Pythonの入門書でもなく、プログラミングの入門書でもなく、データサイエンスの入門書でもないようです。前書きによれば、Pythonに入門したい人は、A Whirlwind Tour of the Python Languageを読んでくださいと言っています。Pythonで用意されているさまざまなライブラリ(NumPy, pandas, Matplotlib, scikit-learn)をどのように使って機械学習を実現させるかの解説書です。しかし、Pythonや機械学習に関してそれほど詳しくない段階であっても、行う習うより慣れよでPythonで機械学習を行えるようになるのには、良い本かと思います。執筆の動機がそもそも、ネット上に散在するさまざまなチュートリアルをかき集めて勉強しなくても、これ一冊で全部網羅してますというものを作りたかったそうなので、実際、機械学習のトピックを見ても典型的な手法が一通りカバーされています。第五章の章立てを紹介すると、ハイパーパラメータとモデルの検証、特徴量エンジニアリング、ナイーブベイズ分類、線形回帰、サポートベクターマシン、決定木とランダムフォレスト、主成分分析、多様体学習、k平均法クラスタリング、ガウス混合モデル、カーネル密度推定、HOG特徴量と顔検出などの解説が並んでいます。

紙質が良く、印刷はカラーなので、可視化された結果が興味深いグラフとして表示されているのを眺めているだけでも楽しくて、勉強意欲が掻き立てられます。

 

Pythonによるデータ分析入門 第2版

Wes McKinney著『Pythonによるデータ分析入門 第2版―NumPy、pandasを使ったデータ処理』。原書タイトルは、Python for Data Analysis, 2nd Edition。初版がPython2.7対応で書かれていたのに対し、この第2版はPython3.6対応で書かれています。原書のPDF版がインターネット上で入手できるようなので、紙の本を買うか決めるために、内容の確認ができます。

 

ゼロから作るDeep Learning

斎藤康毅(さいとうこうき)著『ゼロから作るDeep Learning』。副題が、「Pythonで学ぶディープラーニングの理論と実装」。この本は今更紹介する必要がないのではないかと思えるくらいに、書店でも山積みされておりベストセラーになっていると思います。ディープラーニングのフレームワーク(Caffe, TensorFlow, Chainerなど)は使わず、GPUも使わず、画像認識を題材にしてディープラーニング(深層学習)をゼロから学ぼうというコンセプトです。ディープラーニングの理論と、Pythonによる実装を同時に学びたいという人のための本。深層学習というブラックボックスの中身を理解したい人向けです。Pythonが初めてで、ニューラルネットワークも初めてという人であってもついてこれるように非常に親切に書かれた、稀有な本ではないかと思います。

 

scikit-learnとTensorFlowによる実践機械学習

Aurélien Géron著『scikit-learnとTensorFlowによる実践機械学習』。原書は、Hands-On Machine Learning with Scikit-Learn & TensorFlow —- CONCEPTS, TOOLS, AND TECHNIQUES TO BUILD INTELLIGENT SYSTEMS by Aurélien Géron。パートIが機械学習の話題で、パートIIがニューラルネットワークと深層学習に当てられています。

 

参考(データサイエンス、Pythonの本)

勉強の便宜を計るためには紙の本を手元に置いておきたいものですが、内容がわからないと買うべきかどうかが決められません。原書でよければPDFがネット上にありますので内容を確認する上で参考になります。

  1. Python Data Science Handbook by Jake VanderPlas (PDF at allitebooks.com)
  2. Python for Data Analysis, 2nd Edition by Wes McKinney (PDF at allitebooks.com)
  3. Introduction to Machine Learning with Python by Andreas C. Mueller and Sarah Guido (PDF at allitebooks.com)
  4. Think Python — HOW TO THINK LIKE A COMPUTER SCIENTIST by Allen B. Downey (PDF at allitebooks.com)
  5. Fluent Python by Luciano Ramalho (PDF at allitebooks.com)
  6. Learn Python 3 the Hard Way by Zed A. Shaw (allitebooks.com)

 

参考(データサイエンス、データサイエンティスト)

  1. データサイエンティストが生き残るために必要なのは「本質を見抜く力」|小川卓氏x尾崎隆氏対談 レバテックキャリアスペシャルインタビュー levtech.jp

Anaconda3へのSeleniumのインストール

Seleniumとは

人間の手でウェブサイトにアクセスする代わりに、Pythonのプログラムによってウェブサイトにアクセスすると、必要な情報を自動的に取得することも可能になるので、便利です。Pytyonプログラム内からウェブブラウザーを開いて、ウェブサイトを閲覧するための便利なモジュールとしてSeleniumというものがあります。すでに自分のPCにはAnaconda3がインストールされていますが、

Seleniumのインストール

Seleniumをまだ入れていなかったので入れることにしました。Anaconda Navigatorのコントロールパネルで、Environmentsを選び、プルダウンメニューでAllかNot installedを指定して、検索窓にSeleniumと入れてやると、Seleniumが表示されました。そのままApplyボタンを押してイントール。この操作でうまくSeleniumuがインストールできたPCもありましたが、別の機会に別のPCで同じことをやろうとしたときに、Multiple errors encounteredというエラーが出てしまい、うまくいきませんでした。そこで、base(rood)という文字の横の三角形(矢頭)をクリックするとOpen terminalが選ぶのでそれを選んで、ターミナルウインドウを起動します。そして、ウェブ記事https://anaconda.org/conda-forge/seleniumを参考に、

conda install -c conda-forge selenium

としてやると、セレニウムのモジュールがちゃんとアナコンダにインストールされました。めでたし、めでたし。

 

ウェブブラウザに合ったドライバーの必要性

Seleniumuを使うときはブラウザと連動させる必要がありますが、自分の場合グーグルクロームを普段使うブラウザにしていますので、https://chromedriver.chromium.org/downloads のウェブサイトで現在使っているブラウザのバージョンに合わせたドライバーをダウンロードしてきました(バージョンが違うとドライバーは動きませんでした)。また、拾ってきたchromedriverは、正しいPathに置く必要があります。実行したいjupyterノートブックのファイルがあるフォルダにおいてやると、うまく動きました。

 

Seleniumの実行

環境が整ったところでJupyterのノートブックで例えば下のサンプルコードを実行すると、ウェブブラウザが新たに立ち上がり、入力しておいたURLのウェブページが自動的に開きます。

from selenium import webdriver
browser = webdriver.Chrome()
browser.get(‘http://scienceandtechnology.jp/archives/33913’)

 

 

PythonとSelenium ~ PC上のルーチンワークはPCにやらせよう

パソコン内の業務を自動化する取り組みのことをRPA(Robotic Process Automation)というそうです。自分は仕事でもPC、仕事以外の時間でもPCに向かっていることが多いので、いっそ、PCで行うことの全てをPCに自動的にやらせてしまえば、自分は仕事からも今の人生からも解放されるのではないかと思うことがあります。

セレニウムに関する書籍

セレニウムは、Pythonのモジュールの一つで、人間がウェブブラウザを開いてインターネットを閲覧したり、アイコンやリンクをクリックしたり、何かを入力したり実行ボタンを押したりするのと同じことを、機械的にやってくれます。使えればとっても便利なことは明らかなのですが、使い方を解説した本はまだ少ないようです。

  1. エキスパートが教えるSelenium最前線 (CodeZine BOOKS. SHOEISHA DIGITAL FIRST) 戸田広, 島根義和, 高橋陽太郎, 沖田邦夫, 松尾和昭, 宮田淳平 著. 翔泳社, 2018.5
  2. Selenium実践入門 : 自動化による継続的なブラウザテスト (WEB+DB PRESS plusシリーズ) 伊藤望, 戸田広, 沖田邦夫, 宮田淳平, 長谷川淳, 清水直樹, Vishal Banthia 著. 技術評論社, 2016.3
  3. Seleniumデザインパターン&ベストプラクティス  Dima Kovalenko 著, 太田健一郎, 玉川紘子 監訳, 笹井崇司 訳. オライリー・ジャパン, 2015.9
  4. 実践Selenium WebDriver  Satya Avasarala 著, 玉川竜司 訳. オライリー・ジャパン, 2014.9

研究者の場合、データベースにアクセスしてデータを収集することもあるかと思いますが、人間がウェブ操作するのと同じことをPythonのプログラムで実行できるので、Seleniumを使うと、煩雑なルーチンワークから解放されそうです。PubMedの検索を自動化して、結果をメールで返してもらったりとかできるかも。

 

参考

  1. 【学習ロードマップ付き】実例で理解するPythonで自動化できること5選! 吉池昌貴 2019年8月6日

PythonプログラミングでCSVファイルを開くときの文字コードエラーへの対処方法 UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x89 in position 0: invalid start byte

【問題】PythonのJupyther Notebookでスクリプトを使ってエクセルファイルやCSVファイルを読もうとしたら、UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x89 in position 0: invalid start byteというエラーが出ました。

【解決】エクセルファイルとCSVファイルでは文字コードが異なっていたようです。

if file.endswith(‘.xls’) | file.endswith(‘.xlsx’):
data = pd.read_excel(file, encoding = “shift-jis”)
elif file.endswith(‘.csv’) :
data = pd.read_csv(file, encoding = “cp932”)

とファイルの拡張子によって指定する文字コードも変えてやったら、問題なく読んでくれました。

 

pyothonでpandasのシリーズ(Series)の特定の要素のインデックスを取得する方法

シリーズの中のある要素が何番目かを知る方法。

 

#シリーズの中の特定の要素のインデックスを取得する方法

from pandas import Series

my_list = ['cell','gene','molecule','DNA','RNA']#リストの作成
my_series = Series(my_list)#リストからシリーズを作成
my_series[my_series=='DNA'].index[0]#特定の要素のインデックスを取得

 

上のコードを実行すると出力される結果は、3になります。DNAという文字列からなる要素が3番目(0から数え始めて)にあるので、3というわけです。

pythonのpandasのDataFrameで新しい列のデータを加える方法

pandasのDataFrameが以下のようになっていたとします。

import pandas as pd

dic ={ '名前' : ['太郎','花子','奈津子','夏子','なつみ'],
'数学' : [200,195,30,160,70],
'英語' : [120,180,90,161,111]}

df = pd.DataFrame(dic)

dfは、

名前 数学 英語
0 太郎 200 120
1 花子 195 180
2 奈津子 30 90
3 夏子 160 161
4 なつみ 70 111

ここに、列を挿入するには、

df.insert(1,'理科',[80,100,50,43,21])

とすれば、0列目の右側の1列目の位置に新しい列データを挿入できます。その結果、新しいデータフレームdfの内容は、

名前 理科 数学 英語
0 太郎 80 200 120
1 花子 100 195 180
2 奈津子 50 30 90
3 夏子 43 160 161
4 なつみ 21 70 111

となりました。