pythonで配列追加の処理速度の違い
pythonで配列追加の処理速度を比べてみました。
"append"を使う方法
import time def process(): result = [] start_time = time.time() for _ in range(10000000): result.append("test") processing_time = time.time() - start_time return processing_time In [5]: process() Out[5]: 0.8140008449554443
"+="を使う方法
import time def process(): result = [] start_time = time.time() for _ in range(10000000): result += "test" processing_time = time.time() - start_time return processing_time In [8]: process() Out[8]: 1.365239143371582
rubyとか普段使っていたら記号とか使いがちですが、 ここはスタンダードにappendを使うほうが倍ぐらい早い感じでした。
pythonのリスト内包表記と普通のfor文どちらが早いか
リスト内包表記と普通のfor文どちらが早いかを確かめてみました。
普通のfor文
import time def process(): start_time = time.time() result = [] for i in range(30000000): result += [i] processing_time = time.time() - start_time return processing_time In [97]: process() Out[97]: 4.502268075942993
リスト内包表記
import time def process(): start_time = time.time() result = [i for i in range(3000000)] processing_time = time.time() - start_time return processing_time In [91]: process() Out[91]: 1.3883929252624512
結果的にリスト内包表記のほうが3倍早かったです。
djangoでjupyter notebookを使う方法
djangoでjupyter notebookを使おう
pythonicでデータ分析をする方ならjupyetrを使う方は多いのではないでしょうか?
ただ、web開発で何かしらのフレームワーク使っていたらjupyter使うって感じにならないですよね。。。 (自分だけかもしれないですが)
しかし、web開発でデータ分析している所があったら、そこはDB通してjupyterでやったほうが楽な気がします。
なので、今回はdjangoでjupyterを使う方法書いていきます。
まずは djangoのextensionをインストールしましょう!
pip install django-extensions
次にsetting.pyに以下のように追加しましょう
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app', 'django_extensions', # この行を追加 )
jupyter起動
そしてあとはshell_plusに以下のようにoptionを追加しましょう。
python manage.py shell_plus --notebook
これでjupyter使えちゃいます! 便利!!
pythonでseleniumでブラウザ自動で動かしてみた(mac)
運営しているサイトを全画面自動でとりあえずたくさん開きたい時ってないですか? (アプリケーションエラーは拾ってくれるようにしてるので、とりあえずページ開いちゃってバグを洗い出すとな感じです。)
今回はとりあえずyahoo finance(米)で試してみます。
pip install selenium
次にchrome用のドライバを入れてください Chrome用ドライバーのインストール
https://sites.google.com/a/chromium.org/chromedriver/downloads
なお、自分はmacですので、下記コマンドで入れました。(こっちのほうがpathとか気にしなくていいので楽です)
brew install chromedriver
以下、6つのyahoo financeの銘柄を開くコードです。 from selenium import webdriver
def start_site_open_test(): #chrome開きます driver = webdriver.Chrome() #画面おっきくします driver.maximize_window() #行きたいページのurl打ち込みます(今回はyahoo) url_a = 'https://finance.yahoo.com/quote/' url_b = '/history' site_open(driver,url_a, url_b) driver.close() def site_open(driver, url_a, url_b): #とりあえず6つの銘柄だけ(任意で変えてください) stock = ['FB','SNAP','AAPL','NVDA','MSFT','GOOG'] for i in stock: url = url_a + i + url_b driver.get(url) start_site_open_test()
djangoのORMでwhere文の大なり(>)を書きたい時
例えば、昨日の日付から現在までのデータを取得したい時
yesterday = datetime.date.today() - datetime.timedelta(1)
example_table.objects.all().values().filter(registeredDateTime__gt=yesterday)
filterでいつもの"="の前に
"__gt"をつけてやればいいだけです。
> は __gt=
= は =