Python関連のことを調べてみた2020年02月08日

Python関連のことを調べてみた2020年02月08日

FlaskでWebアプリ開発中にCSSが反映されない問題を解決する

FlaskでWebアプリを開発している。その際、WebブラウザにCSSがキャッシュされてしまう問題に、どう対処するか考えてみた。

HTML内でCSSをリンクする際、“style.css?v=12“などのように手動で、更新日時やバージョンを付け加えている場合がある。しかし、せっかくPythonを使っているので、これを自動で解決してもらいたい。

## 模範解答

検索してみると模範解答は、以下のように、url_forを書き換えると良いという回答だ。

“`app.py
@app.context_processor
def override_url_for():
return dict(url_for=dated_url_for)

def dated_url_for(endpoint, **values):
if endpoint == ‘static’:
filename = values.get(‘filename’, None)
if filename:
file_path = os.path.join

元記事を表示

proxy環境下のpip

proxy環境下の設定をいつも探すのと、Linuxに関する情報があまりなかったのでメモ
# 環境
– OS : Ubuntu 16.04.5

# $HOME/.pip/pip.confに記述
“`conf:$HOME/.pip/pip.conf
[global]
proxy = [user:passwd@]proxy.server:port
“`
$HOME/.config/pip/pip.confこっちに書くのが新しいのかも

元記事を表示

Pandasで微妙に数値が変わる現象とその対応

#はじめに
Pandasのread_csvでデータを読み込み、列名等を変更してto_csvで出力した場合に微妙に数値が変わってしまった時のメモ

#ソース
以下が本記事のエッセンスを取り出した最小コードである。読んで吐き出すだけ。

“`PandasTest.py
import pandas as pd
import argparse

def main():

parser = argparse.ArgumentParser()
parser.add_argument(“-input”, type=str, required=True)
parser.add_argument(“-output”, type=str, required=True)

args = parser.parse_args()

df = pd.read_csv(args.input, index_col=0)
df.to_csv(args.output)

if __name__ == “__main__”:
main()

“`

#問題点

元記事を表示

twitter内(API含む)で使われる言語コード一覧(Python辞書付)。よく使われる言語は?

本題

まず、入力用に横向きでは、

“`python:lang_dict.py
{‘en’: ‘英語’, ‘und’: ‘不明’, ‘is’: ‘アイスランド語’, ‘ay’: ‘アイマラ語’, ‘ga’: ‘アイルランド語’, ‘az’: ‘アゼルバイジェン語’, ‘as’: ‘アッサム語’, ‘aa’: ‘アファル語’, ‘ab’: ‘アプハジア語’, ‘af’: ‘アフリカーンス語’, ‘am’: ‘アムハラ語’, ‘ar’: ‘アラビア語’, ‘sq’: ‘アルバニア語’, ‘hy’: ‘アルメニア語’, ‘it’: ‘イタリア語’, ‘yi’: ‘イディッシュ語’, ‘iu’: ‘イヌクティトット語’, ‘ik’: ‘イヌピア語’, ‘ia’: ‘インターリングア’, ‘ie’: ‘インターリング語’, ‘in’: ‘インドネシア語’, ‘ug’: ‘ウイグル語’, ‘cy’: ‘ウェールズ語’, ‘vo’: ‘ヴォラピュック語’, ‘wo’: ‘ウォロフ語’, ‘uk’: ‘ウクライナ語’, ‘uz’: ‘ウズベク語’, ‘ur’: ‘ウルドゥー語’,

元記事を表示

pandasで、行 or 列内に欠損値がある時に、無視して加算・無視せず加算する方法

データ分析で欠損(`NaN`)処理時に`0`で埋めたり、平均値で埋めたり、`drop`したり、前の値を引き継いだり、、というのはよくあります。
が、集計時に、欠損をそのまま欠損として渡す、というのが見当たらなかったのでメモ。

## 0. ライブラリインポート & サンプルデータ設定

“`python
import pandas as pd
import numpy as np

df = pd.DataFrame({‘C1’: [1, np.nan, np.nan],
‘C2’: [2, 1, 3],
‘C3’: [np.nan, np.nan, 1]})
“`

すると、こんな感じに:

“`python
df
# C1 C2 C3
#0 1.0 2 NaN
#1 NaN 1 NaN
#2 NaN 3 1.0
“`

## 1. 課題設定
– `df`の`C1`列に対して`NaN`を無視して加算(=`NaN`をスキップして加算)
– `df`の`C1`列に対して

元記事を表示

tweepyを使った認証~ユーザー認証とアプリ認証(Python)

“`python:auth.py
import tweepy
consumer_key = “”
consumer_secret = “”
access_token = “”
access_token_secret = “”
“`
とした時に、

ユーザー認証(user auth)

“`pytho:auth.py
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth)
“`

アプリ認証(app auth)

“`pytho:auth.py
auth = tweepy.AppAuthHandler(consumer_key, consumer_secret)
api = tweepy.API(auth)
“`

となります。ユーザー認証とアプリ認証はレート制限が全く違います!
https://developer.twitt

元記事を表示

「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 3.1 3つのスタック

「世界で闘うプログラミング力を鍛える本」Pythonコード解答例 – 3.1 3つのスタック

###CHAP3. スタックとキュー
1. [3つのスタック](https://qiita.com/YusukeEngineer/items/3ebad7798e317588caca)

#Pythonコード解答例
“`python:

class FixedMultiStack:

def __init__(self, stackSize):
numberOfStacks = 3
self.stackCapacity = stackSize
self.values = [0] * (stackSize * numberOfStacks)
self.sizes = [0] * numberOfStacks

def indexOfTop(self,stackNum):
offset = stackNum * self.stackCapacity
size = self.siz

元記事を表示

SocialFoceModelの解説と実装

人工ポテンシャル法の一種であるSocialFoceModelの解説を行います。
こちらはHelbingが提唱した力学に基づく人間の群衆行動のモデルです。

元論文はこちら
https://arxiv.org/pdf/cond-mat/9805244.pdf

基本的には以下のように引力と斥力の総和で表されます。

“`math

F_{all} = F_{gall} + F_{others} + F_{wall}
“`

### 引力
歩行者とゴールとの間に働く引力の式がこちらになります。

“`math

F_{all} =\frac{V_0e_t-v_t}{\tau}
“`
$V_0:速度の最大値$
$e_t:ゴール方向への単位ベクトル$
$\tau:V_0に到達するまでの時間(時定数)$
$v_t:現在の速度ベクトル$








###斥力
障害物や他の歩行者と、歩行者との間に働く斥力の式がこちらになります。
用いられる式は同じです。

“`math

F_{others} = F_{wall} = v_r

元記事を表示

Windows でも pyenv + pipenv したい

# あらまし
どうも、B1 と B2 の学生向けに、とある講座を任された M1 です。
内容は Tensorflow **1.12** の使い方を教える、というもので、つまりは **環境地獄** と **互換性地獄** を見てこい、というものです。

とりあえず彼らが開発に着手できるような環境を整えるため、まずは **Windows ユーザ** が開発できるような状態を作るのが、この記事の目的になります。

結論から先に述べると、 [こんな感じの powershell スクリプト](https://gist.github.com/MokkeMeguru/f39e4e4f5cf1dd40b71f97c28b359214) を書きました。こいつを実行することで良い感じの環境が手に入ります。

# 前置き:無限大に広がる開発環境
開発環境というのは人それぞれで、私は Manjaro Linux x Docker x Emacs x LSP というなかなか剛毅な環境を使っているのですが、これは別に私だけが異常、というわけではありません。

大学の授業としては (~~Emacs 嫌いを増やすため

元記事を表示

tweet_idから得られる情報(Python)

2本目の記事です。こんな感じでツイッターについていろいろ書いていきます。

完成コード

“`python:tweetid.py
from datetime import datetime

tweet_id = 279622981959970816
print(“tweet_id =”,tweet_id)

tweet_raw = format(tweet_id,’016b’)
print (“tweet_raw =”,tweet_raw)
tweet_raw=format(int(tweet_raw), ‘064’)[1:]

sequence = tweet_raw[51:]
worker_id = tweet_raw[46:-12]
datacenter_id = tweet_raw[41:-17]
machine_id = datacenter_id + worker_id
timestamp_id = tweet_raw[:-22]

seq=int(sequence,2)
work=int(worker_id,2)
data=int(datacent

元記事を表示

【Pandas高速化】奇数行 or 偶数行にフラグを立てる

# はじめに
データを処理する上で、奇数行 or 偶数行にフラグを立てるという作業が発生した。
その際に高速化のために色々と試したのでメモっておく。

# 前提条件
前提条件として、以下のような10000行のデータフレームを持っているとする。

“`python
df = pd.DataFrame({‘hoge’:np.zeros(10000)}
df
“`
| | hoge |
|:–|:–|
| 0 | 0.0 |
| 1 | 0.0 |
| 2 | 0.0 |
| 3 | 0.0 |
| 4 | 0.0 |
| … | … |
| 9995 | 0.0 |
| 9996 | 0.0 |
| 9997 | 0.0 |
| 9998 | 0.0 |
| 9999 | 0.0 |

このデータフレームに、’target_record’という奇数行 or 偶数行にフラグがたった以下のような列を追加する。

“`python
df[‘target_record’] = [1,0,1,0,1,…,0,1,0,1,0]
df
“`

| | hoge | targe

元記事を表示

networkxの頂点に対応する量をAxes3Dを使って縦に可視化する

タイトルの通りですが,networkxを使っていると可視化に悩むことがそこそこあります.例えば

– ノードに実数値が対応している場合 → ノードの大きさ(s)を変化させる
– ノードに離散値が対応している場合 → ノードの色を変化させる

という感じで簡単に区別することができますが,なかなか2次元だけではうまく数値を読みづらいことも多いです.ここではmatplotlibのAxes3Dを利用して,できるだけ手抜きをして可視化をやってみました.例として,関東の県庁所在地の緯度経度を取ってきて,各地点に都道府県の人口が乗っていると考えます.次のように可視化しました.

| 2次元 | 3次元 |
| :– | :– |
| ![plot2d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/7181/2d453b4e-5264-2273-2d62-3b7914b9a61c.png) | ![anim.gif](https://qiita-image-store.s3.ap-northeast-1.amaz

元記事を表示

Word Cloudが作りたくなったら。

# やりたいこと
– 極力少ないステップでWord Cloudを作ること。(1度作ってしまえば充分という時にどうぞ)

## ポイント
– 形態素解析を `janome`で実行
– `MeCab`だと`python`から見えるようにするための設定が必要
– Word Cloudに利用するフォントの設定

# 環境
– Windows 10
– python 3.7

# Library setup
Anacondaを入れていれば、こんなところで大丈夫でしょうかね:

“`py
pip install janome
pip install wordcloud
“`

# 環境設定
“`py
import pandas as pd

from janome.tokenizer import Tokenizer

import matplotlib.pyplot as plt
from wordcloud import WordCloud
“`

# データ読み込みから下準備

– こんなデータ(`sample.csv`)を用意します。csvと言っておきつつ、カンマは使っ

元記事を表示

Python の汎用デコレータ(decorator)フレームワークを作る

Python の “デコレータ(decorator)” を作ってみることにします。
汎用的なデコレータの枠組み(フレームワーク)を作成します。

1. 引数を渡さないデコレータ
2. 引数を渡すデコレータ
3. これらを統合した枠組みのデコレータ

を作ります。
最初にデコレータのフレームワーク(ゴール)を提示し、それに向かって作っていきます。

# デコレータのフレームワーク
この記事は、読み下すように書いている(試行錯誤を繰り返しながらゴールに向かう)のと、長文なので、先にデコレータの書き方(フレームワーク、枠組み)だけ記載しておきます。テストを含めた[フルバージョンは最後に記載](#decorator_frameworkpy-full-version)します。忙しい方は、時間のある時にゆっくりご覧ください。

* ※ 制限事項: デコレータの第1引数に呼び出し可能なオブジェクトを指定できません。

“`python:decorator_framework.py
from functools import wraps

def my_decorator( *args, **kwa

元記事を表示

pythonで3億桁までの多数桁乗算時間

pythonとC(gnuのgmp)の多数桁乗算の比較を行った。パソコン(4Ghz)での計算時間を下記に示す(単位:秒)。10進3億桁(結果)1回から桁数半分、回数倍で順に計算。共に右端の値は10進236万桁を128回計算した時間。
python  : 1627, 1084, 723, 482, 322, 215, 143, 96 (s)
gnu(gmp)  : 4.5, 3.9, 3.7, 3,4, 3.2, 2.8, 2.6, 2.2 (s)
千桁以上でpythonはカラツバ法、gmpはFMT(整数FFT)を使用しているのが分かる。pythonは桁数2倍で、3倍の時間(例は逆順1.5倍)が必要。gmpはFMT計算なので、桁数x回数でlog(桁数)比となる。
pythonのソースと両者の詳細結果は https://ecc-256.com のpythonプログラムの多数桁乗算を参照。面白いことに、10進20桁から200桁(共に回数は膨大)ではpythonは2倍程度遅いだけ。これは、共に結果を格納する場所の確保とポインターに多くの時間が必要のためだろう。
pythonはd10=form

元記事を表示

LiquidTap Python Clientを使う②

# 「Liquid by Quoine」の”Orders”を取得する

(2020.02.07)
BTC/JPYの発注とキャンセルを実行してみる。

## コードを書く

“`py:orders.py
import liquidtap
import time

def order_callback(data):
print(“order:” + data)

if __name__ == “__main__”:

token = “APIトークンID”
secret = “APIトークン秘密鍵”

tap = liquidtap.Client(token, secret)
tap.pusher.connect()
tap.subscribe(“user_account_jpy_orders”).bind(‘updated’, order_callback)

while True: # 無限ループ
time.sleep(1)
“`

## 実行

orders.pyを実行し、トレードツールから発注とキャンセルを

元記事を表示

挿入ソート

今日から
[INTRODUCTION TO ALGORITHMS](https://www.amazon.co.jp/Introduction-Algorithms-Thomas-H-Cormen/dp/8120340078/ref=sr_1_2?__mk_ja_JP=カタカナ&keywords=introduction+to+algorithm&qid=1581077652&sr=8-2)を読み始めたので、簡単な内容も多いですが、アルゴリズムをまとめていきます。

# 挿入ソート
要素数10の配列を挿入ソートによってソートするのは、次の例と類似しています。

テーブルに10枚のトランプが置かれていて、初め手札の枚数は0とします。テーブルのカードを一枚ずつ引いていき、手札に加えるのですが、手札は常に昇順にソートされた状態にキープします。手札って整頓させておきたいですよね、左に数字の小さいカード、右に数字の大きいカードというように。
このプロセスのポイントは、**カードが三つに分類できるということ**です。

– 手札にある既にソートされたカード
– 今テーブルから引いて、これから加え

元記事を表示

jsonをエクセルに変換

##参考
[jsonファイルをcsv(Excel)データに変換]
(https://pypython.hatenablog.com/entry/2018/08/01/044938)

元記事を表示

Plotly(Python)でインタラクティブに結び目を描画する

# Plotly(Python)でインタラクティブに結び目を描画する
## 1. はじめに
今回は結び目(knot)をPlotlyで三次元空間上に図示しようと思います。学習の補助になれば幸いです。

↓のようなものができます。

See the Pen

元記事を表示

Tweepyで過去ツイートを選択的に自動消去する方法

#はじめに
Twitter上の過去のPeing回答投稿を消したいと思いたったものの、消去対象が1000件近くあったので手動で消すのはあきらめ、代わりに自動で対象のツイートを消去してくれるスクリプトを書いてみました。

#Tweepyについて
[Tweepy](http://docs.tweepy.org/en/latest/)はTwitterのAPIを利用したPythonライブラリーです。これを使えばツイッターのbotを作ったり自動でいいねやフォローしたりすることができます。今回は特定のツイートを自動で消去するスクリプトを紹介します。

#準備
・Twitter APIの登録([こちらを参考にしてみてください](https://qiita.com/kngsym2018/items/2524d21455aac111cdee))
・Twitterアーカイブデータのダウンロード([こちらを参考にしてみてください](https://help.twitter.com/en/managing-your-account/how-to-download-your-twitter-archive?&la

元記事を表示

OTHERカテゴリの最新記事