Python3関連のことを調べてみた2019年12月01日

Python3関連のことを調べてみた2019年12月01日

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 time

now=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 = 2

if x == y:
print(‘xとyは等しい。’)
“`

この例では、`x == y`は`True`となるので、`xとyは等しい。`と出力されます。

また、`else`を入れると、`if`に続く条件式の判定が`True`でなかった場合の処理を記述できます。

“`python:if_2.py
x = 2
y = 3

if 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 tk

def 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
“`

元記事を表示

OTHERカテゴリの最新記事