Python関連のことを調べてみた2021年05月14日

Python関連のことを調べてみた2021年05月14日
目次

Pythonのバージョンが2から3に変わらない現象【体験談】

エンジニア歴2年のkitagawaです。

Pythonを触り始めて、バージョンが変わらない現象が起きました。
調べてみてたくさん記事が出てきましたが、手っ取り早くバージョンアップできる方法を忘備録として記載します。

“`
% python -V
Python 2.7.16
“`

と表示されてしまいます。

そこで、`~/.bash_profile`の内容を変更し反映させれば、最新のバージョンになります。

“`
vi ~/.bash_profile
“`

“`~/.bash_profile
export PATH=/Library/Frameworks/Python.framework/Versions/3.9/bin:$PATH
export PYENV_ROOT=”$HOME/.pyenv”
export PATH=”$PYENV_ROOT/bin:$PATH”
eval “$(pyenv init -)”
“`

上記が記入できたらESC押下し、`:wq`と入力で保存して終了。(`:qa`だと保存せず終了)

`source ~/.bash_pro

元記事を表示

Safariでmp4動画が再生できないときの原因

![giraffe-1330814_1280.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/229807/2204cfbd-208e-d267-edbe-d0580d669514.jpeg)

##はじめに

こんにちは streampack チームのメディです。
https://cloudpack.jp/service/option/streampack.html

## Copyrights
コピーレフトのイラスト : [giraffe-africa-tanzania-wild](https://pixabay.com/photos/giraffe-africa-tanzania-wild-1330814/)
コピーレフトの動画 : [bright-autumn-colors](https://www.pexels.com/video/bright-autumn-colors-1583096/)

##目的
一部のサーバーを使用しているときにSafariでmp4動画ファイルを再生できない理由を理

元記事を表示

MacOSX Big Sur で PyOpenGL が使えなくなった時の解決策

## 現象
macOS Catalina までは問題なく動いていた PyOpenGLがimport できなくなった。

“`
from OpenGL.GL import *
from OpenGL.GLUT import *
“`

以下のようなエラーが出る

“`
File “/Users/******/lib/python2.7/site-packages/OpenGL/platform/darwin.py”, line 41, in GL
raise ImportError(“Unable to load OpenGL library”, *err.args)
ImportError: (‘Unable to load OpenGL library’, ‘dlopen(OpenGL, 10): image not found’, ‘OpenGL’, None)
“`

## 理由

Big Sur 以降、OpenGL が deprecated されているため。

## 解決策

エラーが出ているファイルの近くにある
****/lib/python2.7/sit

元記事を表示

坂道グループの歌詞を解析して、頻出名詞を抜き出してみた。

# 趣旨
Pythonを勉強してたらmecabに興味を惹かれたので、試してみました。
mecabを利用して乃木坂、欅坂、日向坂(櫻坂は曲数が極端に少ないので除く)の全ての曲の歌詞を解析しました。(内訳:乃木坂 207曲, 欅坂60曲, 日向坂34曲, けやき31曲の計332曲)。
留意すべき点として、これらの楽曲は全て[秋元康先生](https://ja.wikipedia.org/wiki/%E7%A7%8B%E5%85%83%E5%BA%B7)が作詞していることが挙げられます。

## 利用した歌詞
https://j-lyric.net/ に掲載されている歌詞を手動でテキスト化しました。
別のサイトで、APIを利用して歌詞を取得する方法もあるようなのですが、有料APIだったのと、歌詞の表記揺れが気になったので、歌詞を目視で確認しつつ手動でテキスト化しました。
案の定、同じ歌詞サイトにも関わらず歌詞の中に表記揺れが散見されました。
例1:難しい漢字にカッコでルビが振ってある場合と無い場合がある(辿々(だとだと)しい)
例2:サビの部分の繰り返しを「※サビ1をもう一回」的な省略
歌詞

元記事を表示

FlaskでPost / Redirect / Getパターンを実装する

WebフォームなどでPOSTリクエストを送信した後、ブラウザをリフレッシュすると「フォーム再送信の確認」みたいなアラートが出ます。
ユーザーは「なんのこっちゃ?」ってことが多いと思うので、フォーム送信後にリフレッシュしてもアラートが出ないようにする方法に「POST後、リダイレクトしてGETリクエストでページを再取得する」といったものがあります。

ちなみにリダイレクトとはhtmlコードを含む文字列を返す通常のレスポンスとは異なり、URLを返すレスポンスです。

別記事で使ったフォームの素材をそのまま使います。

※以前書いたコード

“`Python
@app.route(‘/’, methods = [‘GET’, ‘POST’]
def index():
name = None
form = NameForm()
if form.validate_on_submit():
name = form.na

元記事を表示

バケットソートとは Python競プロメモ⑥

バケットソートとは、あらかじめデータがとりうる値すべての容器を順番通りに並べて用意しておき、値を対応する容器に移すことでソートを行う整列アルゴリズムのことである。

このアルゴリズムを使う際に注意すべき点として、データがとり得る値が分かってなければ、ソートのためのバケットを準備することができないため、このアルゴリズムを使うことができない。

今回はバケットソートの考え方を用いてリスト内に含まれている重複した数を取り出すコードを書いたので備忘録として記載しておく。

“`
#dataがとり得る値の範囲は0以上200未満である
data = [123,23,123,123,0,0]
buckets = []
count_list = []
for i in range(200):
buckets.append(i)
count_list.append(0)
for k in data:
for i in range(200):
if buckets[i] == k:
count_list[i] += 1
break
count_list = l

元記事を表示

ABC192 E Train ~Dijkstraの実装でハマった話~

#はじめに
 本記事は競技プログラミングにおいて解くのに困った問題について、なぜその解法に思い至るのか、どのような所でハマったか等のポイントをメモした、筆者の筆者による筆者のための備忘録となっております。読まれることを意識していないので文章がとっ散らかってます。

#問題
問題は[こちら](https://atcoder.jp/contests/abc192/tasks/abc192_e)。

**概略**
 $N$個の頂点と$M$本の辺からなる無向グラフがある。辺$i$は頂点$A_i, B_i$を結んでおり、この間の移動には$T_i$の時間を要する。ただし時刻が$K_i$の倍数である時のみこの辺の移動を開始できる。
 頂点$X$を時刻0に出発して頂点$Y$に到達するまでの最短時間を求めよ。 

#提出解答
提出解答は[こちら](https://atcoder.jp/contests/abc192/submissions/22560027)。

“`ABC192E.py
from heapq import heappush, heappop, heapify
n, m, x, y =

元記事を表示

【Pythonで量子力学】水素原子の電子模型のWeb授業ができるツールを作る

# 概要

 つい先日、量子力学の輪読会がWebであって、そこで水素原子の電子軌道モデルを簡単に勉強できるツールを作りました。

 ぴったり1ページに収まるので、量子力学以外の題材でも、学校の授業とかに使える感じです。

# 量子力学ゼミナール動画
※水素原子の電子軌道については、次の講義にアップされると思います

# 実行結果

## 想定している教科書

量子力学、量子化学を学んでいる方なら、おそらく認知度が高い教科書です。

– 小出昭一郎, “量子力学(I)”, 裳華房(1990改訂版), pp98-103

– ファインマン他、砂川重信訳、”ファインマン物理学V 量子力学”, 岩波書店(1978)

## 画面

![スクリーンショット 2021-05-13 23.04.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/281173/3b071567-e405-9535-ef1e-2abbd1

元記事を表示

無料利用可能なAPIで住所から緯度経度情報を得る

#はじめに
本記事は以下の取り組みの一環です。

https://qiita.com/sckln/items/9af07be8df426cbcdb36

#やりたいこと

住所を示すテキストデータから緯度、経度を得たい。それを使ってfoliumで可視化したい。(が、foliumについて深追いするのはまた今度)

#手順

住所→緯度経度とするには住所の表記揺れも気になるし、そもそも1対1対応していないので、住所から代表点を得られるのかどうかも心配です。
決して網羅的な調査はしていないものの、住所から郵便番号を経由したら上手くいきそうな勘が働き、結果的にはうまくいきました。1パスの方法もあるかもしれません。

1. 番地情報を落として、町域単位(市区町村の次の粒度のやつ)にする。
1. 住所から郵便番号をGet by [zipcoda.net](https://zipcoda.net/doc)
1. 郵便番号から代表点の緯度経度をGet by [HeartRailsGeoAPI](https://geoapi.heartrails.com/api.html#town)

説明を読み返すと

元記事を表示

Djangoアプリ上でFessを使って検索窓を設置する

# はじめに
Djangoでサイトを作っていた際に、検索機能を手軽に設置したいなぁと思い、
OSSの検索エンジン `Fess` を使って実現したので方法を共有します。
Fessについて知りたい方は [こちら](https://fess.codelibs.org/ja/) をご参照ください。

# 想定読者
– Djangoでのアプリケーション開発手法を理解している
– Docker / docker-compose の最低限の使用法について理解している
– Nginxの最低限の設定方法について理解している

# 構成
docker-composeにて以下コンテナを起動します。

– `nginx`コンテナ
– `django`コンテナ
– `postgresql`コンテナ
– `fess`コンテナ
– `elasticsearch`コンテナ

以下は `docker-compose.yml` の例です。
なお、fessとelasticsearchの設定については[こちらのGithub](https://github.com/codelibs/docker-fess/tree/maste

元記事を表示

DjangoとVue.jsを使ってモーダルコメントフォームを実装する

#はじめに
JavaScriptはほとんど触ったことがないのですが、最近はVue.jsを勉強しています。
ブログを想定したDjangoアプリ内で、モーダルコメントフォームの実装ができましたので、記事を書いていきます。
こういう感じの動きです。

![modalcomment2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/951203/61fd21be-6974-904b-2a31-8d9d6f402054.gif)

記事に対するコメントと、コメントに対する返信の投稿をモーダルフォームで作っていきます。

なおモーダルと言えばBootStrapで実装することも多いと思うのですが、今回は自力での実装に挑戦してみました。

##Django側のアプリ構築

まずは下記のようなモデルを用意します。

“`python
# project/models.py
from django.db import models
from django.conf import settings
from django.

元記事を表示

データサイエンティストになるべく明日からの勉強 記録①

5月目標
サンプルコードを見ながら、機械学習を学ぶ
python 機械学習プログラミングを読む

6月目標
Kaggleのタイタニックの生存者判定をする
Kaggle で勝つデータ分析の技術を読む
https://web.stanford.edu/~hastie/ElemStatLearn/printings/ESLII_print12.pdf
これを読み進める

7月以降未定

元記事を表示

Flask-WTFでWebフォームを作る

Flask-WTFはPythonでWebフォームとそのバリデーションを簡単に実装できるフレームワークWTFormsのFlask版です。

まずはインストール

“`console
pip install flask-wtf
“`

次に秘密鍵を設定をします。
Flaskで作成するアプリの設定はFlaskクラスのインスタンス(ここではapp)の.configに設定します。

“`
app.config[‘SECRET KEY’] = ‘hard to guess string’
“`

今回はソースコードにベタ打ちしてますが、商用のアプリケーションなどでは環境変数から取得したり、端末ごとに変えたりする必要があります。
Flask-WTFではこの秘密鍵をCSRF攻撃などへの対策として利用します。

CSRF攻撃はざっくりとログイン状態にある(セッションにログイン情報を保持している)ユーザーが悪意のあるサイトにアクセスすることで、不正なリクエストがフォーム経由などで送信されるものです。
アカウント乗っ取りやなりすまし投稿などが被害例としてあります。

Flask-WTFでは正しいフ

元記事を表示

大学に入って読んでよかった情報系の本4選!!!

#はじめに
 インターネットには日々様々な情報が投稿され、紙媒体の本の市場は日々縮小する一方。プログラミング関係の情報なんてまさにネットで無料に拾える情報の代表ですがそんな中で生き残っている本はすごくわかりやすく書かれていてお金を払う価値は十分あります。今回は私を難しい大学の課題から助けてくれ、さらにプログラミングの楽しさを教えてくれた本たちを紹介します。

#【その1】斎藤康毅(2016)『ゼロから作るDeep Learning』オライリー・ジャパン
出版社HP
 理論は微分の考え方から、実装はPythonの環境構築から。まさにゼロからDeep Learningを教えてくれる教科書です。実際に手を動かしてみて手書き数字データセット「MNIST」で95%以上の精度が出た時は感動しました。さらに、CIFAR-10などのカラー画像や畳み込みの処理も記してあって本格的です。到達度は高いと思うのですが、少しずつ実装していくので詰まったら簡単に戻れるので挫折の心配はないでしょ

元記事を表示

satasmodelsのソースコードを追ってロジスティック回帰の回帰係数の標準誤差の計算を確認した話

結論は対数尤度関数のへシアン(Fisherの情報量行列)の逆行列の対角成分なんだけどソースコード追っかけるのに割と時間を食ったのでメモを残す。

## 設定
– statsmodels ver0.12.2
– statsmodels.discrete.discrete_model.Logitを利用したロジスティック回帰分析について調べました

## 要旨
“`statsmodels.discrete.discrete_model.Logit “`の戻り値のsummaryメソッドを実行した時に表示される回帰係数の標準誤差は“`Logit.hess()“`で計算される対数尤度関数のへシアンの逆行列の対角成分。

## 本題
Logitのfitを実行すると返されるのはstatsmodels.discrete.discrete_model.BinaryResultsWrapper
これのsummaryメソッドを実行した時に表示される回帰係数の標準誤差がどう計算されているか知りたかった

BinaryReuslts.summary()内でさらに
Super(Discrete

元記事を表示

Facebook 最適化ライブラリ Ax でベイズ最適化を用いて SVR のパラメータをチューニングしてみた

[Ax](https://github.com/facebook/Ax)は Facebook 製の最適化ライブラリです。

バンディットアルゴリズムやベイズ最適化の中身に触れなくてもパラメータ最適化ができる API が特徴です。

## インストール
pip か conda でインストールします。

“`bash
pip install ax-platform jupyter
“`

## APIs
Ax の [API](https://ax.dev/docs/api.html) には loop, service, developer の3つがあります。
中でも developer api はデータサイエンティスト、機械学習エンジニア、研究者向けに作られた api で、カスタム性が高いのが特徴です。今回は developer api を使ってパラメータチューニングをします。

## ベイズ最適化について
[ベイズ最適化](https://ax.dev/docs/bayesopt.html)は目的関数が最大になるパラメータを効率よく探索する方法です。

手順
1. ガウス過程回帰で目

元記事を表示

[Flask]ブログをサクッと作る

# はじめに
備忘録的適当記事。
sqlalchemyやbootstrapの練習がてら。
完成形:

http://blog.matcha1024.net/

これを使いたい方は

“`bash
git clone https://github.com/matcha1024/flask-blog.git
“`

してお使いください。
改変等はご自由にどうぞ。

# 追加したい機能

– ブラウザからマークダウンで記事投稿
– PV数計測
– タグ機能

# 記事投稿
SQLAlchemyでさくっと。

“`py:SQL部分
class Article(db.Model):
id = db.Column(db.Integer, primary_key=True)
created_at = db.Column(db.DateTime, nullable=False, default=datetime.now)
article_title = db.Column(db.String(255))
article = db.Column(db.Text())
pv = db.C

元記事を表示

【なんだろう…】ソーシャル匿名掲示板を作った件Part.1【ちょっと使ってみてもらっていいですか?】

## 7秒で読める忙しい人用まとめ
>ここはすばらしいインターネッツですね

趣味でソーシャル匿名掲示板[fora.social](https://www.fora.social/)を作りました。
アルファテスト中です。
ログイン不要でコメントができるのでぜひ記念カキコしてみてください。
サーバーよわよわなんで、アクセス集中するとサーバーダウンするかもです。
レスポンシンブ(スマホから見るやつ)は一応対応してますけど、完全対応ではないのでちょっと使いにくいかもです。

また、予告なくサイトを一時閉鎖する可能性があるのでご了承ください。

この記事では、
「なぜ今更匿名掲示板を作ったか」
「実装についてあれこれ」
「セキュリティ対策について」
「機能説明」
「今後について」
などざっくりと説明していきます。

## 1分で読めるまとめ

>初カキコ…ども…ソーシャル匿名掲示板[fora.social](https://www.fora.social/)を作りました…

>俺みたいな、いまさら匿名掲示板作る腐れ野郎、他に、いますかっていねーか、はは

>今日のyoutubeの急上

元記事を表示

【Python × Excel】OpenpyxlでVlookupをやってみる

#はじめに
PythonでExcelを操作していて、Vlookupしたいときありませんか?Vlookup便利ですよね。
ということでOpenpyxlを使ってブックをまたいでVlookupする方法を解説します。

今回は下記の評価データと給与データをサンプルとして使用します。

評価データ
![評価.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646654/ecb0e63a-a4c0-6147-3cb9-53445376918d.png)

給与データ
![給与.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/646654/ec67c105-e969-3d88-de9c-02e3c1298d7b.png)

#準備
必要なライブラリをインストールしましょう。今回使うのはOpenpyxlです。

“`python
import openpyxl as px
“`

#必要ファイルの読み込み
ここで評価データと給与データの

元記事を表示

AtCoder Problems Hard No.81~90解説

#Hard No.81 : C – Boxes and Candies
[C – Boxes and Candies](https://atcoder.jp/contests/abc048/tasks/arc064_a)
##発想
隣り合う2つの箱のうち、どちらの箱からどれだけキャンディを取れば良いのか。左から箱を見ていって、$i$番目と$i+1$番目の箱うち、$i+1$番目から可能な限りキャンディを食べるのが良いです。なぜなら$i+1$番目からキャンディを食べることで$i+2$番目の箱から食べるキャンディの個数を少なくすることができるからです。
##実装

“`python
N, X = map(int, input().split())
A = list(map(int, input().split()))

ans = 0
for i in range(N-1):
if A[i] + A[i+1] > X:
#食べるべきキャンディの個数
x = A[i+1] + A[i] – X
ans += x
A[i+

元記事を表示

OTHERカテゴリの最新記事