- 1. Djangoでwebサービスを作ってみた振り返り1
- 2. MacでJupiter notebook使おうとするとpython2しか選択できない件
- 3. Word2Vecで自由入力対応のチャットボットをつくる
- 4. [Python備忘録] While文の1回目が異常に遅い
- 5. [Python] TwitterAPIを使用しGUI(tkinter)アプリをexe化するまでにつまずいた事をメモ代わりに
- 6. Paizaをやるときに役立つ??Python標準入力取得方法
- 7. [Python3]スクレイピング虎の巻
- 8. PandasのSql Upsertを試してみた
- 9. 動的モード分解(Dynamic Mode Decomposition)のご紹介
- 10. Pandas使いが手軽にSQLを練習するために
- 11. 物体認識用データセット自動作成プログラム
- 12. pythonのライブラリ図鑑
- 13. Pythonの制御文
- 14. 【OpenAI Gym】CartPole問題の解答例
- 15. スクレイピングによるProduce 101 Japan練習生順位の可視化
- 16. DataFrameにtimezone情報を含むdatetime64型カラムが存在すると線形補完できない問題への対処
- 17. tkinterでスクロールを表示するサンプル
- 18. 備忘録:Python3でMySQLに接続する in CORESERVER
- 19. Python3 M2Cryptoライブラリを使用してSSL証明書の更新期限チェックをする
- 20. Python3 に scikit-learn をインストールする
Djangoでwebサービスを作ってみた振り返り1
Djangoでwebサービスを作ってみました。完成はしましたが、ふんわりやっていたところをキッチリカッチリさせていこうと思います。
#models.pyで使ったあれこれ
例:“`
class Profile(models.Model):
~~フィールド定義省略~~@receiver(post_save, sender=User)
def create_profile(sender, **kwargs):
if kwargs[‘created’]:
user_profile = Profile.objects.get_or_create(user=kwargs[‘instance’])def __str__(self):
return str(self.user)
“`
##@receiver
@receiverはシグナルというもので、イベントが発生したタイミングで登録した処理を呼び出す機能。
この例で使われたpost_saveは、senderで指定したモデル(ここではUser)に対するレコードの 追加 or 変更 をした 直後に実行されること
MacでJupiter notebook使おうとするとpython2しか選択できない件
## 環境
MacOS Catalina 10.15.1
## 状況
元々Macにはpython2が標準で入っていて今までそこまで気にしないでpython3のコードを書いていたのですが、jupyter notebookを先日使おうとした時にjupyter notebook内で新しくファイルを作ろうとするとpython2しか選択できず困ったなーという感じでした。調べたところ案外簡単に直せるみたいなのでまとめておきます
## 直し方
まずはipykernelをインストールします
“`
python3 -m pip install ipykernel
“`そして次のコマンドを実行します
“`
python3 -m IPython kernelspec install-self
“`これだけで解決しました
## 余談
この直し方を調べてる途中でMacのpythonを標準でpython3に変える方法も見つけたので、まとめておきます。
まずはpyenvをインストールします
“`
brew install pyenv
“`次に
“`
cat
Word2Vecで自由入力対応のチャットボットをつくる
この記事は[Zeals Advent Calendar 2019](https://qiita.com/advent-calendar/2019/zeals)の1日目の記事です。
はじめまして。Zealsに来年度から入社予定の玉城です。
Zealsはチャットコマースと呼ばれる、チャットボットの技術を用いた事業を行っております。また私は現在大学で自然言語処理を使った研究をしています。
ボットには自然言語処理を導入していない会話があるのですが、そこに自然言語処理の技術を加えてみても面白いのではないかと考えたので、今回記事のテーマにすることにしました。# Word2Vecとは
ものすごく簡単に言うと、単語をベクトル表現に置き換え、ニューラルネットワークを使って学習を行うことで、単語同士の類似度や、単語同士の足し算引き算が出来るようになる技術です。
(曖昧すぎてマサカリ飛んできそう)
その類似度や足し算引き算の機能をチャットボットに組み込んでみよう!というのが今回のお話です。# 作成するチャットボット会話の流れ
チャットボットでの会話は、ユーザーからヒアリングを行い、それをもとにベス
[Python備忘録] While文の1回目が異常に遅い
While文に入るときの初回って以上に遅いんですね…オーダーが数桁違います…1~100マイクロ秒は決して無視できない(こともたまにあるの)です…
“`python
import timenow=time.perf_counter()
print(now)
print(“1: “,time.perf_counter()-now)
now=time.perf_counter()
i=0
print(“2: “,time.perf_counter()-now)
now=time.perf_counter()
while(True):
print(“3: “,time.perf_counter()-now)
i+=1
now=time.perf_counter()
if i>10:
break
“`サーバにて強めのCPUで回した結果
“`
3038070.24794605
1: 0.00013073207810521126
2: 4.219589754939079e-05
3:
[Python] TwitterAPIを使用しGUI(tkinter)アプリをexe化するまでにつまずいた事をメモ代わりに
プログラミングを始め2か月弱で何か作ってみるといいと言われ作った際の詰まったポイントを簡易的に書いていきます。
作った物はTwitterAPIを利用しグランブルーファンタジーの救援IDをクリップボードにコピーするまでのアプリ
をpyスプリクトではなくPython環境が入っていないwindowsのパソコンでも使用できるものを作りたかった。
きっかけとなったpyスプリクトは下記URLにて配布されております。
https://github.com/bookii/gbf-rapid-search環境=win10(64bit), Python 3.7.4, VScode 1.4
####tkinterのRadiobuttonから二つの変数を読み込みたい
Radiobuttonを使用し救援に参加する際に敵のLvと正式名称を二つの変数を取得しようとしたときに
valueに挿入する変数をリストや辞書にして試したのだが自身の書き方がよくなかったのかうまく拾えず最終的には
文字列としてファイルに書き出し検索開始時にそのファイルから文字列をリストに変換し変数を割り当てて解決した。
以下はコード例です
Paizaをやるときに役立つ??Python標準入力取得方法
# はじめに
MDG(名古屋大学 安田・遠藤・浦田研究室) Advent Calendar 2019 初日(12/1)に投稿させていただきました!!
プログラミングを始めて2年弱 & Qiitaへの投稿は初めてなので, もっときれいなコードの書き方はあるかと思います. アドバイスがあればどんどんコメントいただけると幸いです.# Python3での標準入力取得方法
#### 複数行かつ複数列の標準入力取得
~~~python
num = [list(map(int, input().split())) for i in range(2)]
~~~#### 複数行かつ1列の標準入力取得
~~~python
n,m = [int(input()) for i in range(“行数”)]
~~~#### 1行かつ複数列の標準入力取得
~~~python
a,b=map(int,input().split())
~~~#### 多次元配列の値取得の記述
~~~python
answer = num[0][0]*num[1][1]-num[0][1]*num[1][0]
~
[Python3]スクレイピング虎の巻
何回もスクレイピングをやってだいたいわかってきたので、備忘録としてここに書いておこう。
使う言語はタイトルの通りPython、何と言ってもBeautifulSoupが便利すぎる!
# インポート
インポートするのはだいたいこれだ
“`python
import json
import os
import requests
import requests_cache
from bs4 import BeautifulSoup
“`– json: 取得したデータの保存用に
– os: ディレクトリ操作とかに
– requests: 便利なファイル取得
– requests_cache: キャッシュとしてローカルにデータを貯められる
– BeautifulSoup4: 神器## 定数
UserAgentはスクレイピングには必要だ
“`python
HEADERS = {‘User-Agent’: ‘Mozilla/5.0’}
“`# 関数
## soupを取得する関数
いろいろ試したけど、`lxml`が一番しっくりくる。
もし取得でうまくいかない時は、これ
PandasのSql Upsertを試してみた
## はじめに
estie CTOの宮野([@estie_mynfire](https://twitter.com/estie_mynfire))です。
estieでは多様なリソースから不動産データを構築しているため,データ成形にpandasを用いています.そのため
**pandasで作ったデータ -> DataBase**
というフローをスムーズに行うことが肝になります.いままではreplaceとappendしかなかったため,pandas側で頑張って成形してから更新するしかありませんでした.(これがすごくめんどくさい)
そんな中,先日pandasに待望の[Sql Upsert機能追加のプルリク](https://github.com/pandas-dev/pandas/pull/29636)があったので,動かしてみました.これによって作業効率を爆上がりさせてくれるはずです・・!!
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/437488/c1713b7a-18c3-6cc
動的モード分解(Dynamic Mode Decomposition)のご紹介
# はじめに
時間変化を調べる方法といえばフーリエ変換かウェーブレット変換くらいしか思い浮かびませんでしたが、時間方向と空間方向双方のモードを抽出できる動的モード分解(DMD)という良い手法があることを知りました。自身の理解を深めるためにもここに記録しようと思います。内容はほぼ参考にしたサイトそのままで、Google翻訳したものを少し直して書いていきます。グラフ描画に関するコードは参考元にはないので追記しておきました。DMDの実行からグラフの描画までそのまま実行できるはずです。
# 参考
簡単のために3次元ベクトル場のDMDは省略して、単純な1次元のスカラー関数のみを考えます。
[Dynamic Mode Decomposition in Python](http://www.pyrunner.com/weblog/2016/07/25/dmd-python/)SVDもなんだか知らなかったのでこちらを参考にしました。
[PCAとSVDの関連について](https://qiita.com/horiem/items/71380db4b659fb9307b4)## 動的モード分
Pandas使いが手軽にSQLを練習するために
# 背景
Pandasの方が慣れており、仕事でSQLにつまづく
⇨手軽に練習する環境が欲しい(ローカル、Python)
⇨pandasql# 備考
* SQLiteです。職場の環境とは違いますが、一般的なSQL練習として良しとしました
* pandasqlを紹介するページは他にありますが、「sqlをpandasでどう書けばいいの?」という主旨のページが多く、私と同じ背景の人は少ない印象だったので、ページを残すことにしました# パッケージをインストール
“`bash
pip install pandasql
“`# コード例
データフレームの変数名をテーブル名のところに入れて、SQLを書くだけ
いつもPandasで触ってるデータフレームに対して、SQLを発行できます“`python
import pandas as pd
from pandasql import sqldf, load_meat, load_births# get data
df_meat = load_meat()
#df_births = load_births()# check
物体認識用データセット自動作成プログラム
#目的
YOLOやSSDで自作のデータセットを用いて物体認識を行う際、大量な画像とラベリング処理が必要となる。
今回は、ラベリング処理にかかる時間を短縮するためのプログラムを作成した。**※クラスを新たに追加して検出する際は、100枚程度を手作業でラベリングすることと、voc_annotation.pyの変更が必要。**
#使用したもの
###物体認識アルゴリズム
[YOLO]https://github.com/qqwweee/keras-yolo3
[SSD]https://github.com/rykov8/ssd_keras
###ラベリング用ソフト
https://github.com/tzutalin/labelImg#処理の流れ
1. 学習(python train.py)
2. yolo_labeling.py の model_path を1で作成したものに変更
3. 検出(python yolo_img.py)
4. “Input filepath” のあとに検出画像があるディレクトリを入力
5. 検出結果からAnnotationファイル作成なお、デ
pythonのライブラリ図鑑
pythonではほとんどなんでもできると言っても過言ではないほど万能なのですが
それぞれどのライブラリを使えばできるのか把握するために簡単にまとめておきます
自分が現時点で知ってるもののみなので随時更新していきます
## ファイル処理
– os
– csv## 計算系
– math
– numpy
– scipy## グラフの描画
– matplotlib
## データ処理
– pandas
## web・通信系
– Django
– Flask
– socket## スクレイピング
– beautifulsoup4
– requests## 画像処理
– opencv
– pillow
– skimage## 日本語の音声認識
– SpeechRecognition
– julius## 日本語の自然言語処理
– mecab
– janome## 英語の音声認識
– pocketsphinx
## 英語の自然言語処理
– nltk
– polyglot
– treetager
– word2vec
– Doc
Pythonの制御文
# はじめに
ここでは、Python初心者向けに「制御文」について解説していきます。
Python3系の使用を想定しています。# 条件分岐
条件によって処理を分けたい場合に使います。
## if文
`if`に続く条件式が`True`なら、処理が実行されます。
`if 条件式:`と書いた次の行は、半角スペース4つ分インデントして書き始めます。“`python:if_1.py
x = 2
y = 2if x == y:
print(‘xとyは等しい。’)
“`この例では、`x == y`は`True`となるので、`xとyは等しい。`と出力されます。
また、`else`を入れると、`if`に続く条件式の判定が`True`でなかった場合の処理を記述できます。
“`python:if_2.py
x = 2
y = 3if x == y:
print(‘xとyは等しい。’)
else:
print(‘xとyは等しくない。’)
“`さらに、`elif`を入れると、それより上の条件式の判定が全て`False`で、`elif`に続く
【OpenAI Gym】CartPole問題の解答例
## 要約
OpenAI Gymの「CartPole」のQ学習での解答例を共有します。強化学習について学ぶ際の理解の一助になれたらと思っています。ある程度のpythonの知識を有している方を対象としています。
コードだけを見たい場合は、こちらをご参照ください。
## 経緯・動機
### 強化学習に辿り着くまで
業務においてAIについて学ぶ必要性があるなかで、教師あり機械学習や教師なし機械学習について、インターネット上の情報やソースコードを元に手元でコーディングをして機械学習を試しても、なかなかきっちり「推定できている」、「分類できている」など実感が湧きませんでした。
私の学習不足も要因として多々あるかと思いますが、なかなか機械学習に関する技術が身につかず色々とどうするかを考えていた時に、AIに関する “とある記事” を見つけました。
それは「負けられないオセロAIが発表され話題になっている」という内容のものでした。そのオセロを試した際に、プレイヤーとして負けようと挑むよりも「どうやって作ったのか」ということに興味が湧きました。
合わ
スクレイピングによるProduce 101 Japan練習生順位の可視化
# Produce 101 Japanとは
[PRODUCE 101 JAPAN OFFICIAL SITE](https://produce101.jp)
韓国から輸入されたオーディション番組の日本版で、歌手デビューしてほしい練習生への投票結果が週ごとに発表される番組です。
週が進むと、60位、35位と足切りが進んで脱落者が出てしまいます。今回は公式サイトからランキング結果をスクレイピングによって抽出し、
最新順位(2019/11/29時点で9週目)までに生き残っている練習生の順位変動を可視化してみました。### 出来上がりの完成図
練習生の名前は一部伏せております。
![Unknown.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/225066/ab35a870-1730-1838-583b-5ab845c67e23.png)# 主な流れ
1. スクレイピング
2. データ整形
3. ランキングを可視化### 1. スクレイピングによりランキングを取得する
週ごとの順位を個別に収
DataFrameにtimezone情報を含むdatetime64型カラムが存在すると線形補完できない問題への対処
## はじめに
分析エンジニアがよく利用するpythonのpandasライブラリ。
分析業務を行わないソフトウェアエンジニアでも、システムを結合する際にどうしても利用しなければならない場面があります。でも前に使ったの半年前なんですよねー。。。なんで言うこと聞いてくれないのですかDataFrameさん。
ということで今回は、とあるDataFrameに対して線形補完を行うと以下のエラーが発生しました。
1時間毎の時系列データを30分毎のデータに変換し、線形補間しようとしています。
“`python
>>> df.asfreq(’30min’)
forecasted_at temperature tcdc hcdc mcdc lcdc dsrf
target_datetime
tkinterでスクロールを表示するサンプル
## 概要
Tkinterを使ったスクロールバーの簡単なサンプルを作ろうとしたら、結局手の込んだサンプルまで作成することになったので、「もういいや」と思い全部公開します。最後の方はタイトルを逸脱して複数のframeを継承したクラスを利用したTkinterのフォームの作成方法という感じの内容になっています。## 動作環境
Windows10
PyCharm
python3## コード
・まずは手続き型のコードでTkinterのスクロールバーを表示します。“` python3
import tkinter as tkdef main():
root = tk.Tk()
root.geometry(“400×300″) # 横400x縦300# Canvasを生成
canvas = tk.Canvas(root, bg=”white”)
canvas.place(x=0, y=0, width=200, height=300) # 処理位置的にここが良さそう# Scrollbarを生成してCanvasに配置処理
備忘録:Python3でMySQLに接続する in CORESERVER
#前書き
レンタルサーバーを使ったことがない上、ロクに使えるプログラムも書いていない人間が、CORESERVERでMySQLサーバーを借りた時の備忘録。MySQLに接続するPython3のプログラムを記載するとともに、詰まりがちであった箇所を載せている。
先に言い訳をすると、サーバーに入れたファイルが文字化けするやら、最初から使える外部ライブラリがわからないやら、改行コードの置換に手間取るやらで問題がごちゃまぜになっていた。
だからここにあるのは「とりあえずこうすればうごくよ」という初心者の感想でしかない。ご注意を。#やりかた
順番は好きなように。ただしSSH接続は、現在のIPアドレスに対して許可が必要。
##MySQLにデータベースを作る
コントロールパネル「データベース」→「MySQL」からデータベースの新規作成。
この「DB名」と「パスワード」は、プログラムからデータベースに接続するのに必要。##ファイルをサーバーにアップロードする
コントロールパネル「サイト設定」→「FTP/SFTP接続情報」からファイルマネージャーを開いてアップロード。とりあえず/public_htm
Python3 M2Cryptoライブラリを使用してSSL証明書の更新期限チェックをする
## 背景
Let’s Encryptで証明書の自動更新をしているドメインで、マニュアルどおりにやっていれば、デフォルト設定で30日を切ったタイミングでSSL証明書の更新が行われるはずですが、更新が実施されているかチェックする必要性があったためスクリプトで実装しました。
実際には下記をチェック対象ドメインリストのコンフィグファイルを食わせるなどして運用しますが、実装に利用したM2Cryptoライブラリの説明があまりなかったので、実際に操作した記録を含めて書き起こしておきます。
本当は使い慣れてるurllibとかで実装できればよかったんですが、SSL証明書の検証ができる方法がよくわからなかったのでM2Cryptoライブラリを利用しました。## 環境
* Amazon Linux
* Python3## 利用するライブラリ
* datetime
* ssl
* M2Crypto## Python実行環境
こんな感じでPyenvを利用してpython3環境を作成済み。~~~
# pwd
/root/python3# pyenv versions
system
* 3.
Python3 に scikit-learn をインストールする
“`
$ pip3 install Cython
$ pip3 install scikit-learn
Successfully built scikit-learn
Installing collected packages: scikit-learn
Successfully installed scikit-learn-0.21.3
“`