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

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

メルカリクローラーPythonパッケージつくってみた

# mercari-api
– https://github.com/TomoyaFujita2016/mercari-api

## インストール方法
pipでもpoetryでもおk

“`shell
# poetry
poetry add git+https://github.com/TomoyaFujita2016/mercari-api.git#main

# pip
pip3 install git+https://github.com/TomoyaFujita2016/mercari-api.git#main
“`

## 使い方
“`python
from pprint import pprint

from mercari_api import Mercari
from mercari_api.params import (
Category,
ItemCondition,
SalesStatus,
ShippingPayer,
Size,
SortOrder,
)

def main():
mercari

元記事を表示

python環境 トラブルシューティング

#なぜ書いたか
1. 何度か同じミスでハマってしまったので、再発防止に。
1. ミスを整理して言語化する事で、自分の理解を深めるため

# 環境
– Python :3.7.4
– VSCode:1.58.2

##venvで作った仮想環境で実行できない
### 原因|VScodeコンソールのwslからpythonファイルを実行していなかった
VScodeコンソールのwslのコマンドからの実行と、VSデバッグ機能からの実行では参照するpython環境が違う。
wsl:仮想環境上のpython環境
デバッグ機能:vscode設定上でインタープリタとして設定されているpython環境

###対策案
1. wsl上からコマンドで実行(vscodeが勝手に仮想環境を使ってくれる?)
1. vscodeのインタープリタを仮想環境上のものに設定。(インタープリタ選択画面から仮想環境上のpython.exeを指定すればできるはずだが仮想環境にexe見当たらず)

##インストールしたはずのライブラリが認識されずデバッグが失敗
#### 原因|PC内に複数のpython環境があり、インストー

元記事を表示

python:seleniumとBeautifulSoupでwebスクレイピング

# ・Google検索を行い、欲しいデータを取得する。
①検索ワードを入力して、GoogleChromeでGoogle検索
②表示されたWebページの下端の「他のキーワード」を取得
③「他のキーワード」をcsvデータにまとめて、保存

######「テスト」という単語で検索した際に下端に表示された「他のキーワード」
![screen 6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698556/9bb71b63-10e7-ed44-0f27-7e9148c9e81c.png)
# ・目次
######1.webdriver_managerのインストール
######2.import
######3.コード
###1.webdriver_managerのインストール
seleniumで使用しているGoogleChromeのバージョンと同じChromeのドライバーを読み込ませる必要がある。
ドライバーの読み込みで苦戦したくないため、webdriver_managerを使用。

“`python:webd

元記事を表示

geopandas インストールはチェンネルに注意

**実行環境** Windows10, conda 4.8.3, python 3.9.5, geopandas 0.9.0

## はじめに
普段シェープファイルの処理は [PyShp](https://pypi.org/project/pyshp/) で間に合わせているのですが、Pandas-like な処理をしたいとか、大量のレコードを扱いたいとか多々あるので、[GeoPandas](https://geopandas.org/) に手を出すことにしました。

さっそく conda の仮想環境から GeoPandas をインストールして使おうとしたのですが、**例によってつまづいた** のでここに記します。

Qiita でも既に同様の内容の記事はいくつかありますが、記録という意味も込めて投稿しています。

要約すると以下の通り。

エラー内容: **GeoPandas をインストールできない、またはインポートできない**
原因: **パッケージをインストールするチャンネルの混在**
対応: **仮想環境でパッケージ経由チャンネルを conda-forge にそろえる**

分か

元記事を表示

pyinstallerインストール ( Python3, Ubuntu 20.04 )

## 環境

“`
ubuntu 20.04
“`

## install

“`
$ pip3 install pyinstaller
“`

その後実行すると,以下のエラー発生

“`
pyinstaller: コマンドが見つかりません
“`

インストール先を調べる

“`
$ sudo find / -name “pyinstaller”
/home/hoshina/.local/bin/pyinstaller
find: ‘/run/user/1000/gvfs’: 許可がありません
“`

以下に実行ファイルがあることがわかった.“`~/.local/bin/pyinstaller“`

/usr/binにコピー

“`
sudo cp .local/bin/pyinstaller /usr/bin/pyinstaller
“`

確認 -> OK

“`
$ pyinstaller -v
4.5
“`

## 参考

https://www.it-swarm-ja.com/ja/linux/pyinstaller%E3%82%B3%E3%83%

元記事を表示

yukicoder contest 308 参戦記

# yukicoder contest 308 参戦記

## [A 1636 森](https://yukicoder.me/problems/no/1636)

N頂点の木の辺の数は*N*-1なので、答えは(*N*-1)2です.

“`python
N = int(input())

print((N – 1) * (N – 1))
“`

## [B 1637 Easy Tree Query](https://yukicoder.me/problems/no/1637)

素直に部分木の頂点にコストを足してまわると *O*(*NQ*) で TLE です. 増えるコストは部分木の頂点数に*x*を掛けたものなので、最初に各部分木の頂点数を DFS で求めておけば *O*(1) でクエリに回答できます.

[ABC138D – Ki](https://atcoder.jp/contests/abc138/tasks/abc138_d)を思い出しましたが、こっちのほうがやや簡単かな.

“`python
from sys import setrecursion

元記事を表示

【基本周波数で遊ぶ】藤崎モデルのパラメータ逆推定をやってみる

#目次
・[藤崎モデルのパラメータ逆推定をやってみる](#藤崎モデルのパラメータ逆推定をやってみる)
・[パラメータ逆推定](#パラメータ逆推定)
・[実装](#実装)
 - [①前処理](#前処理)
 - [②アクセント成分の近似](#アクセント成分の近似)
 - [③フレーズ成分の近似](#フレーズ成分の近似)
 - [④AbS最適化](#abs最適化)
 - [⑤結果](#結果)
 - [⑥事後処理も](#事後処理も)
・[おまけ](#おまけ)

###########################################################################################
#藤崎モデルのパラメータ逆推定をやってみる

“`math
\begin{align}
\log F_0[t] &= F_b + F_p[t] + F_a[t] \\
&= F_b + \sum_i Ap_iG_p(t – T_{0i}) + \sum_j Aa_j\{G_a(t – T_{1j}) – G_a(t – T_{2

元記事を表示

比較演算の連続

1 < x < 10 などの記述ができるんだよ,という記事は多いけど,別に2つの比較演算を単純に記述できるだけじゃないんだね。 1 < 2 <= 2 < 3 == 3 > 2 >= 1 == 1 < 3 != 5 の結果はどうなる? 順番にやっていけばわかるけど,True だ。

元記事を表示

PyTorchの学習済みモデルを自由自在に書き換えたい

[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/Soliton-Analytics-Team/Edit-PyTorch-Model/blob/main/Edit_PyTorch_Model.ipynb)

PyTorchには[PyTorch Image Models](https://github.com/rwightman/pytorch-image-models)など学習済モデルがたくさん公開されていて、これを転移学習に使うことも多いです。その際、学習済モデルを少し改造して試したい場合、どうすればいいのか。直接編集するわけではありませんが、同等の効果がある方法をご紹介します。

“`
要点
1. 挿入するにはtorch.nn.Sequentialで置き換える
2. 削除するにはtorch.nn.Indentityで置き換える
“`

まずはtorch.hubからお馴染みのresnet18を取得

元記事を表示

【Python】ワードクラウドを使ってサイトの単語の使用頻度を見える化する

##目的
指定のサイトで使用頻度が高い単語をワードクラウドを使って視覚化したい

##コード

“`python
import requests
from bs4 import BeautifulSoup
import MeCab
from wordcloud import WordCloud

# ワードクラウドの保存ファイル名
file_name = “hage.png”

# ワードクラウド化の対象サイトのURL
url = ‘https://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%B2’

# 対象サイトのURLのページを取得して解析
html = requests.get(url)
soup = BeautifulSoup(html.content, ‘html.parser’)

# scriptとstyleを要素から除去
for element in soup([“script”, “style”]):
element.decompose()

# テキストを抽出
text = soup.get_text()
# 行ごとに分け

元記事を表示

Djangoでsuperuserのみのアクセス制限を行う方法

djangoのアクセス制限に関してです。

“ログインしているユーザーのみ“といったアクセス制限の方法は日本語資料でも確認できましたが、
**“superuser“のみといったアクセス制限の方法については、あまり見かけなかったので解説します**。

誰かの役に立てば、幸いです。

## 環境
– Django 2.2.4

## 関数で開発している場合
デコレータをつけることでいけます。

“`python:views.py
from django.contrib.auth.decorators import permission_required
from django.http import HttpResponse

@permission_required(‘admin.can_add_log_entry’)
def test(request):
return HttpResponse(“Only access superuser!”)

“`

## classで開発している場合

せっかく、djangoを使っているなら、classベースで開発し

元記事を表示

ブラウザからAWS S3にマルチパートアップロードをする

## はじめに

Webアプリケーションでブラウザから直接S3にマルチパートファイルアップロードをする方法を備忘録的に残します。苦しんでる人の助けになればと思います。

動作する全てのコードはここにあります。
https://github.com/inunekousapon/s3_sts_upload_sample

## やること

– STSを利用したS3への直接アップロード
– マルチパートアップロード

## やらないこと

– マルチパートアップロードの自前実装
– 署名付きURLを利用したオブジェクトのアップロード

## ブラウザからS3に直接アップロードする方法

2つの方法があります。

– 署名付きURLアップロード
– AWS Security Token Serviceを使った方法

通常、署名付きアップロードを使うのが最適な選択肢になると思います。しかし、マルチパートアップロードを選択しようと思うと実装が難しいことがわかりました。

下記は署名付きURLを利用したマルチパートアップロードの記事です。
https://zenn.dev/kujime/ar

元記事を表示

ブラウザで画像認識する安価な環境がほしい

#動機
普段はunityでアプリを作っていますが、アプリをインストールしてくれない時代になってきたので
webアプリも習得したいが、個人的な勉強なので安価な環境が欲しい
最終的には、mediapipe、opencv 使いたい 
GCP、IBMcloudでインスタンス停止し忘れた経験あるので、高額請求されるくらいなら止めて欲しい

#目指す環境
スマホカメラで撮影し、サーバーで処理し画像を返す
ubuntu18.14
flask
SSL

#コンテンツ
“`python:app.py
from flask import Flask
app = Flask(__name__)

@app.route(“/”)
def hello():
return “Hello World!”

if __name__ == “__main__”:
app.run( port=8000, debug=True)
“`

#自宅のPCに環境を構築 ngrokで公開してみる

https://ngrok.com/download

“`shell:install.sh
./ngrok a

元記事を表示

Pythonで東京都内 62区市町村の新型コロナウイルス陽性者数 推移グラフを一気に作る

# 目的
都内在住・在勤の者として、細かく区市町村ごとの陽性者数推移が知りたかったので開発しました。
同じ都内といっても、区市町村ごとに傾向が違っています。

【今回作ったもの】
https://nobukuni-hyakutake.github.io/covid19tokyo/
の下の方の区市町村名をクリックするとグラフが表示されます。例:
![shinjuku0806q.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1802863/80af91af-c26d-670a-1a7f-4acb765fb5d2.png)
原則毎日更新して公開しています。
なお、同サイトの上方にある分布マップの解説は[こちらの記事](https://qiita.com/Nobukuni-Hyakutake/items/bb6e6c529bf0078af02c)をご覧ください。

# 環境
* 言語:Python3.9
* 使用ライブラリ: データ前処理はPandasとNumpy、グラフ作成はPlotly
* 使用サービス:

元記事を表示

Pyinstallerでexe化した時のPydriveのエラー対処

PyinstallerでWindowsで実行可能なexe化を行った際にPydriveがインポートされず、
GoogleDriveへのファイルのアップロードが失敗してしまったので、そのエラーの対処方法の覚書です。

#環境
・OS: Windows 10 64bit
・Python 3.8.10
・PyInstaller 4.3

#エラー箇所
エラーの原因となっていたのは、下記のライブラリをインポートした部分です。
やりたかったこととしては、ローカルファイルを共有ドライブにアップロードするでしたが、Uploadの際に、Anaconda上では問題なく動作していましたが、Pyinstallerでexe化するとアップロードの際にエラーが発生して、GoogleAPIErrorが発生してしまった。

“`py:GoogleDriveup.py
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
“`
ローカルファイルを共有ドライブにアップロードする方法は以下の記事を参照しました。
[pydrive

元記事を表示

自動でMicrosoft teamsで個人あてにチャットを送る方法

#自動でMicrosoft teamsで個人あてにチャットを送る方法
 相手からの電子メッセージにできるだけ早く、かつ漏れなく確認することは、業務上大事である。
メールは全体へ連絡したり情報共有するのは使いやすいが、自身とあまり関係のないメッセージも大量に来るので漏れなく確認するのは難しい。チャットにはプッシュ通知機能があり、その連絡に気付きやすく効率的な会話ができる。今回は自動でteamsにメッセージを送る方法を紹介する。
##install python selenium by pip
pip installでseleniumをinstallする。

“`
pip install selenium
“`
##Web版teamsの操作
 今回はChrome web driverを使ってWeb版TeamsをChromeで開いて操作する。
 開くページのURLにチャットの相手のユーザーネームが書いてるので、複数送りたい相手がいる場合はその箇所を送りたい相手に変更する。

“`python
driver_path = r’/path/chromedriver.exe’
driver

元記事を表示

アラビア数字から漢数字変換

# アラビア数字から漢数字に変換する処理 備忘録

無量大数って有限だったんだ、、知らんかった

“`python
d1 = {u’1′: u’一’, u’2′: u’二’, u’3′: u’三’, u’4′: u’四’, u’5′: u’五’, u’6′: u’六’, u’7′: u’七’, u’8′: u’八’, u’9′: u’九’}
d3 = {1: u’十’, 2: u’百’, 3: u’千’}
d4 = {4: u’万’, 8: u’億’, 12: u’兆’, 16: u’京’, 20: u’垓’, 24: u’予’, 28: u’穣’, 32: u’溝’, 36: u’潤’,
40: u’正’, 44: u’載’, 48: u’極’, 52: u’恒河沙’, 56: u’阿僧祇’, 60: u’那由他’, 64: u’不可思議’, 68: u’無量大数’}

def int2kanji(integer):
sio = str(integer)
i = len(sio) – 1
ret = u””
for s in sio:

元記事を表示

Python内でLogicaのプログラムをSQLに変換する

# Logicaとは

[Logica](https://logica.dev/)とはGoogleが発表した論理プログラミング言語で、BigQueryやPostgreSQLのクエリにコンパイルして実行できます。

日本語ではこれらの記事で紹介されており、だいたいの概要は分かると思います。

* [logica で readable, testable な SQL の夢を見る](https://labs.septeni.co.jp/entry/2021/05/26/110000)
* [論理プログラミング言語Logicaでデータサイエンス100本ノック](https://zenn.dev/koji_mats/scraps/81edc33b8b9e5d)

引用すると次のような特徴があり、私の所属するチームではBigQueryでそれなりに複雑な処理が実装されているので、特に「モジュール機能があること」「テストが実施できる?(ドキュメントにも明確に記載がないのでまだ詳細不明)」ことに期待しています。また、GitHubのDiscussions([PageRank Alogrithm](http

元記事を表示

Kaggleで無作為にサブミットして正解を調べる回数の見積もり その2

[前回の記事](https://qiita.com/nishiha/items/77e590bcf7bae5020dde)では非適応戦略では28bitあたり14回のチェックで同定する手法を示した。
これ以上は何故か一意に解くことが出来なくなったため、以降詳しくは書いていない。
とはいえ問題が発生する確率は当初の見積もりよりも非常に低い確率であったので**「高確率で同定可能な手法」**という但し書きが可能ならもっと28bitあたり14回よりも高効率で同定が可能である。
一意に解ける係数は求められていないが、高確率では解けるのでその係数を参考にメモしておく。

#解11 15/32*N回
4bitのチェック関数である$bit4(a,b,c,d)$を仮定して立ててみた。今までの傾向から1個のbitは値が1回だけ、残りの3bitは15回中8回が値が1にならなければならない。この傾向は以下の手順から推測される。

例えば12bitを7回のチェックで同定する手法では7回のチェックの合計値(赤枠の総和)は“`4,4,2,4,4,2,4,2,4,1,4,4“`となっている。
これを2で割った商が`

元記事を表示

Z3Py 例題 ナップサック問題

# 問題
5つの品物の価格と価値が以下の表に示されるようになっているとする. 価格の合計が 15以下で,価値の合計が 19以上になる場合はあるか?

| 品物 | 価格 | 価値 |
|:-:|:-:|:-:|
|品物0|3|4|
|品物1|4|5|
|品物2|5|6|
|品物3|7|8|
|品物4|9|10|

# 回答
“`example_knapsack.py
from z3 import *

price = [3, 4, 5, 7, 9]
value = [4, 5, 6, 8, 10]

X = [Int(“X%s” % i) for i in range(5)]

s = Solver()
s.add([And(0 <= X[i], X[i] <= 1) for i in range(5)]) s.add(Sum([price[i]*X[i] for i in range(5)]) <= 15) s.add(Sum([value[i]*X[i] for i in range(5)]) >= 19)

print(s.check())
if s.check() == sa

元記事を表示

OTHERカテゴリの最新記事