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

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

VSCodeでPythonファイルをデバッグ

## VSCodeの拡張機能インストール

以下をインストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/a479313d-b59c-d94c-65c6-c3eede732fd5.png)

## デバッグ手順

### インタープリター確認

仮想環境に入っている場合はvenvを選択しているか確認する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/1303d639-ae2f-d420-dfbd-f3e1632a5b39.png)

### ブレークポイントを設置

止めたいところにブレークポイントを設置。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399745/ac1a4b5c-0be7-6e78-9860-fa6b3a8fab41.png)

###

元記事を表示

Pythonで麻雀を作る#2

#今回の目的
[前回](https://qiita.com/JuneOgust/items/25f9ca05ee068a1c611a)のコードを改良する。
赤ドラとノーテン罰符の処理を実装する。また、プレイヤーの入力に対応する。

#環境
Windows 10
Python 3.8.8
mahjong 1.1.11

#やったこと(変更点)
[ポーカーのコード](https://qiita.com/JuneOgust/items/94163c56f159fc00f917)のように、コードを6つのモジュールに分割し内容を整理した。
大きな変更点として、前回は牌は単純に整数で区別しており、関数にその値を入力することで牌の役割を識別させていたが、今回は牌1つ1つをオブジェクトにした。
それにともない全体的にコードの内容を編集した。
また、前回まで牌をmahjongライブラリに読み込む際に一度牌の種類ごとに文字列に変換し、それをさらにmahjongライブラリのTilesConverterというクラスにあるメソッドに読み込んで専用の形の配列に整形していたが、二度手間だったため、牌を直接mahjo

元記事を表示

わんたす 初めてのポートフォリオ

# [wantas](https://www.wantas.net/search)

### **_ユーザーの”すぐ欲しい”実現アプリ_**

ユーザーが商品を検索し、位置情報から近くのコンビニを特定、商品を表示する。コンビニの商品は地域で差異があるためその点も考慮し、そのコンビニで販売されている商品のみを表示する。
横にグーグルマップも付けているのですぐ行くことができます。

### [github](https://github.com/biki-cloud/wantas)

# 使用技術

### プログラミング言語: バックエンド
* Python
* Go
* Shell

### プログラミング言語: フロントエンド
* Html
* Css
* Javascript

### データベース
* Sqlite

### CI/CD, VCS
* AWS
* Docker
* GRPC
* Jenkins
* Git
* Pytest

# 技術の選定理由
コンビニの位置情報や商品情報のスクレイピングをするためにPythonを選択しました。WebサーバーはGoのWebフレ

元記事を表示

Firestore(+Cloud Functions)で関連度つき全文検索をできるようにした話

# 記事概要を3行で
* Firestoreは便利だが全文検索機能はない
* でも外部サービスは使いたくない
* Firestore上に全文検索用のインデックス(転置インデックス)を構築して全文検索可能にした
* ついでに関連度(TF-IDF)で並べて表示できるようにした
* Cloud Functionsのコードと使い方はここ→https://github.com/tommyktech/Japanese-Fulltext-Search-in-Firestore

# Firestoreには全文検索機能が無い
[Firestoreの公式ドキュメント](https://firebase.google.com/docs/firestore/solutions/search)によると、Firestoreでは全文検索機能を提供しておらず、それをやりたいならサードパーティの検索サービスを使う必要があるようです。

> Cloud Firestore データの全文検索を有効にするには、専用のサードパーティの検索サービスを使用します。これらのサービスは、単純なデータベース クエリで実現できる機能を

元記事を表示

Djangoで指定したhostにリダイレクトさせるmiddlewareを書いた(middleware入門)

## TL;DR
タイトル通り、Djangoで指定したhostにリダイレクトさせるmiddlewareを書こうとした。
[見つかった記事](https://qiita.com/shinsaka/items/ed8527cb1c83519d8f43)が5年以上前のものと古く、Django v1.10以降のmiddlewareの書き方に対応していなかったので対応する書き方で書き直した。
middlewareで呼ばれる関数については[こちら](https://qiita.com/shirakiya/items/1503eaffe81f91af5b9d)がわかりやすかった。

## 0.問題設定
例えばDjangoアプリケーションをherokuでデプロイし(`example.herokuapp.com`)、お名前.comでドメイン(`example.com`)を取得したとする。
この場合、`example.com`からアクセスできるようになったとしても、
`example.herokuapp.com`でも同様にアクセスできる。
これをリダイレクトするために、middlewareを作って対応した

元記事を表示

縦持ちデータをグループ化して横持ちデータに変更

わけあって下記のようにgroupをグループ化して、指定した列をユニーク数分新しいカラムを用意して横持ちに変換する必要がでてきました。

![図1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/428239/592a9f64-35f6-a1f7-097a-210f12c2fdb8.png)

今回の例でいう新しいカラムを作成するcol1,col2以外はグループ毎に同じデータが入っているという条件です。

メソッドでさくっとできるかなと考えていたのですが、
メソッドではできなさそうなので、自分で処理を作成しました。
同じコードを書く必要が出てきたときに備えてメモを残しておきます。

“`py:データ用意
import pandas as pd
data = {
‘group’: [‘A’, ‘A’, ‘A’, ‘B’, ‘B’, ‘C’, ‘C’, ‘C’, ‘C’ ],
‘other_col’: [‘AA’, ‘AA’, ‘AA’, ‘BB’, ‘BB’, ‘CC’, ‘CC’, ‘C

元記事を表示

pythonにおけるMySQLへの接続とSQLを用いた簡単なCRUD処理

# 執筆時点でのバージョン情報
“`bash
~/Desktop/projects/python
$ python –version
Python 3.9.5
$ pip –version
pip 21.1.1
“`

# 目次
1. DB接続用ライブラリpymysqlのインストール
2. DB接続の前準
3. SQLを用いたCRUD処理

# 1. DB接続用ライブラリpymysqlのインストール
“`bash
$ pip install pipenv
$ pipenv –python 3.9.5
$ pipenv install pymysql
“`
– インストールしたライブラリがPipfileの`[packages]`に追記されます

“`python:Pipfile
[[source]]
url = “https://pypi.org/simple”
verify_ssl = true
name = “pypi”

[packages]
pymysql = “*”

[dev-packages]

[requires]
python_version = “3.

元記事を表示

ビーフストロガノフはどのくらい強いのか

食べ物で強そうな名前のものは?というお題があったときに出がちなのは「ビーフストロガノフ」です。確かに強そうですが、もっと強そうな食べ物もあるような気がします。
今回はディープラーニングの一種であるLSTMとライブラリKerasを使って、食べ物に限らず単語の強さの定量化をしてみようと思います。

# 方針
まず、件の食べ物がなぜ強そうに思えるかについて考えると、

– 濁音が二つ入っている([濁音減価](https://news.yahoo.co.jp/articles/c57b80dfe3eeb2b2bf8a717a2486f26e2fd4cb2d?page=3))
– 「ストロング」っぽいものが入っている
– 最後「ノフ」で終わるのが大国ロシアを思わせる

あたりが挙げられました。つまり、発音の響きを考慮する必要があります。
そこで、1文字ずつ切り取ってデータ列にするのに加え、読み方やローマ字表記のデータ列を並行して入力に加えることでモデルがその並びを学習できそうな気がします。

例としては、

“`
input1 = 邪王炎殺黒龍波
input2 = ジャオウエンサツコクリュウハ

元記事を表示

[Python] スクショ→範囲選択→OCR→翻訳

#緒言
PDFや画像中の英文をさくっと翻訳したかった。

#コード全体
↓の記事をかなり参考にさせていただきました(ありがてえです)。
範囲指定に関してはこちらの記事参照ください。

https://qiita.com/hisakichi95/items/47f6d37e6f425f29c8a8

“`python:area_translator.py
import os
import tkinter
from tkinter import messagebox
import pyautogui
from PIL import Image, ImageTk, ImageEnhance, ImageOps
import pyocr
import pyocr.builders
from googletrans import Translator
import re

RESIZE_RETIO = 1.5

# Tesseractのパスを通す
path_tesseract = “C:\Program Files\Tesseract-OCR”
if path_tesseract not in

元記事を表示

【pandas】DataFrameであるカラムを改行文字で分割して行番号をつける

## 改行(またはその他の区切り文字)で行を分割したい
元となるDataFrameは

“`
id name
0 1 あい\nうえお
1 2 かきくけこ
2 3 サシスセソ
“`
このようなもので、このnameの値を改行コードで分割する。

“`
id name line_number
0 1 あい 1
1 1 うえお 2
2 2 かきくけこ 1
3 3 サシスセソ 1
“`

このように`id=1`の行を2つに分割し、先頭から1,2… と行番号をつけていく処理をしたかった。

## コード

“`python:split.py
import pandas as pd
import numpy as np
import re

df = pd.DataFrame(
data={
‘id’: [1, 2, 3],
‘name’: [‘あい\nうえお’, ‘かきくけ

元記事を表示

# 毎月壁紙を自動で変えたい!

# Qiitaはじめました
いろんな調べごとでお世話になってたQiita, まさかの初投稿です。
うまく書けるかドキドキです。
備忘として、やったことをメモしていければなーと思います。

# 毎月壁紙を自動で変えたい!
いろんなところで配布されているカレンダー入りの壁紙、かわいくて使いたいけど手動で毎月変えるのが面倒なので、Pythonを使って自動で変えるプログラムを作ってみました。
今回は[東京ディズニーリゾート](https://www.tokyodisneyresort.jp/tdr/wallpaper.html)で配布している壁紙を使いたいと思います。
初めてのPythonでしたが意外と簡単にできました。

# 環境
– Windows10
– Python 3.9.6

# はじめに
まず初めに、画像をダウンロードするコードを書いてみます。
といっても、[コピペ](https://note.nkmk.me/python-download-web-images/)です。
※この辺のお勉強はこれから頑張ります。。。

~~~python3
import os
import p

元記事を表示

Pythonのモジュールとライブラリとパッケージの違い

何度も同じことを調べているので覚書として書きます。

##モジュールとライブラリとパッケージの関係性
モジュールとは、クラスや関数を用いて実行したい内容を記述したPythonのファイル(.py)のこと。
モジュールをいくつか集めてまとめたものがパッケージ。
ライブラリとは、いくつかのパッケージをまとめて一つのライブラリとしてインストールできるようにしたもの。

また関数、モジュール、パッケージ自体を総称してライブラリと言うこともある(←これがややこしくする原因)。

つまり、関係性は以下の通り。
クラスや関数 < モジュール < ライブラリ < パッケージ ##ライブラリは2種類ある #####1, 標準ライブラリ 標準ライブラリはPythonに付属している。組み込み関数とそれ以外に分けることができる。 組み込み関数は、以下の通り。 ```Python abs(), delattr(), hash(), memoryview(), set(), all(), dict(), help(), min(), setattr(), any(), dir(), hex(), next()

元記事を表示

PythonでバイナリSTLファイルを読み込み表示させる

# はじめに

この記事は,STLファイルを例にしてPythonでバイナリファイルを読み込む方法を調べたときのメモです.

Google Colab と Gist にコードがあります.

https://colab.research.google.com/drive/1XgTe46uWYTLRRoO5i2B8r0Kr2c9vflay?usp=sharing

https://gist.github.com/Be4rR/f366e08d5834780e5cef9ae367e36b45

:::note info
単にPythonでSTLファイルを読み込みたいのであればnumpy-stlなどを利用したほうが良いです.
:::
https://numpy-stl.readthedocs.io/en/latest/index.html

# ASCII形式とバイナリ形式

[STLファイル](https://ja.wikipedia.org/wiki/Standard_Triangulated_Language)にはASCII形式とバイナリ形式の2種類が存在します.下のサイトでフォーマットが詳

元記事を表示

[macOS Big Sur] Homebrew + pyenv

MAC バージョン確認

“`
% sw_vers

ProductName: macOS
ProductVersion: 11.5.2
BuildVersion: 20G95

“`

Pythonバージョン確認

“`
% python -V

Python 2.7.16
“`

brew バージョン確認

“`
% brew -v

Homebrew 3.2.9
Homebrew/homebrew-core (git revision f401485d70; last commit 2021-08-29)
“`

pyenvインストール

“`
% brew install pyenv

Updating Homebrew…
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
https://github.com/Homebrew/brew#donations

元記事を表示

Pythonではじめる機械学習 part5

# 前回の内容
[Pythonではじめる機械学習 part4](https://qiita.com/yuto_suzuki/items/97f158451990dca1bb58)

# 教師あり学習① 概要
前回まではアイリスのクラス分類ということで、大量のアイリスデータを元に、野生のアイリスを推測するモデルの構築をしてきた。
これはいわゆる、教師あり学習という枠の機械学習である。
ここからは、教師あり学習についてさらに踏み込んでまとめていく。

### 教師あり学習とは?
ある入力に対して、特定の出力を予測したいケースの時に、入力と出力のペアがすでに入手可能である場合に用いられるパターンである。
一般的に、教師あり学習で学習させる際はかなりの工数がかかるが、ひとたび学習が終われば、その労力に見合った働きをしてくれる。

### クラス分類と回帰について
教師あり学習で解く問題は大きく分けて、クラス分類と回帰に分類できる。
クラス分類とは、予め定めておいたいくつかのクラスに新しいデータを分類すること。
一方、回帰とは、連続値を予測する際に用いられる。(こちらわかりづらいので後程詳細に)

元記事を表示

AWS lambdaを時間指定で1回だけ実行する方法

# はじめに
私はaws初心者です。lambdaで困ったことがあったからメモとして残します。

# やりたいこと
lambda functionを時間指定で1回だけ実行したい

想定しているケース
・ あるイベントがまとまったページを監視して、新しいイベントが登録されたらイベントが開催される1日前にLINEで通知する。

この場合だと、
Lambda①:スクレイピング→Lambda②の時間予約(新しいイベントの1日前)
(イベント情報も渡す)
Lambda②:関数①から受け取った情報をLINEに送信

# どうしたか
使ったもの:Lambda、EventBridge

> 補足
EventBridgeは**定期実行**とかをしてくれるらしい。この定期実行の規則をルールと呼ぶ。

“`python:Lambda①
import boto3

client = boto3.client(‘events’)

event_name = “ルールの名前”
description = “ルールの説明”
event_time = “cron(* * * * ? *)” #実行したい時間を満たす

元記事を表示

櫻坂っぽい歌詞をjanomeとmarkovifyを使って生成してみた

# はじめに
日本語形態素解析エンジンの`janome`とマルコフ連鎖ジェネレータ`markovfy`を使って、櫻坂の歌詞を学習してそれっぽい歌詞を生成します。

文章生成と言うと、RNNモデルを構築して学習する方法もありますが、色々な記事をググった感じ、精度が微妙そうだったので今回はマルコフ連鎖を使います。

# 目的
自分は機械学習を学び始めておよそ2ヶ月でして、**画像分類・顔認識**といった方向のアウトプットとして[コチラの記事](https://qiita.com/okateru/items/6f9daf1094ef8c2d6d68)で[櫻坂46メンバーの顔分類アプリケーション](https://share.streamlit.io/rukaeto/sakurazaka_face_detect_app/main/main.py)を作成しました。

自然言語処理方面でも何かアウトプットしたいということで、これまた好きな櫻坂46を取り上げ、歌詞生成をやってみることにしました。

歌詞生成や文章生成について先例が多くあるのですが、意外と`markovify`と`janome`の組み

元記事を表示

【Python】サーバーサイド初心者にオススメのUdemyのDjango動画講座5選

web開発に入門したい人向けに、Django関連のおすすめUdemy講座をまとめました。
初心者OKのものがほとんどですが、Pythonの簡単な文法(for文、if文など)はあらかじめ知っていることが望ましいです。
(またはPythonに全く馴染みがなくても、多言語の経験があればOKです。)

## 【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!(Django2版 / 3版を同時公開中です)
おすすめ度:★★★★
・[【徹底的に解説!】Djangoの基礎をマスターして、3つのアプリを作ろう!(Django2版 / 3版を同時公開中です)](https://px.a8.net/svt/ejp?a8mat=3BBPJR+AVRCOQ+3L4M+BW8O2&a8ejpredirect=https%3A%2F%2Fwww.udemy.com%2Fcourse%2Fdjango-3app%2F)
### この講座で学べる内容
・Djangoを使って作成したウェブサイトを作ることができるようになります。
・Djangoの基礎的なコードの書き方を学ぶことができます。

元記事を表示

AtCoder Beginner Contest 216 (A~C)

今週のAtCoder問題の振り返り.後にD問題を追加する.

#目次
[1. A-Signed Difficulty](#1-A-Signed Difficulty)
[2. B-Same Name](#2-B-Same Name)
[3. C-Many Balls](#3-Many Balls)
[4. 参考](#4-参考)

#1. A-Signed Difficulty
## 問題

実数,$X, Y$が与えられ以下のように出力する

– $0 \le Y \le 2$ならば,$ X- $
– $3 \le Y \le 6$ならば,$ X $
– $7 \le Y \le 9$ならば,$ X- $

## 制約

– $ 1 \le X \le 15$
– $0 \le Y \le 9$
– $X, Y$は整数

## 解答

“`python
x, y = map(int, input().split(‘.’))

if 0 <= y <= 2: print('{}-'.format(x)) elif 3 <= y <= 6: print('{}'.format(x)

元記事を表示

paiza向け Python開発環境構築手順(Eclipse)(Windows)

## 対象
 これからプログラミングを学びたい、けど何からやればいいかわからない。
 そういう人はまず「動かす場所を用意」して「動いているところを見る」のがいいと思う。
 この記事は「[paiza](https://paiza.jp/)で問題を解く」ことを前提に、「Pythonのソースファイルを動かす」ことをゴールとして書く。paizaが目的でなければ適宜読み替えてほしい。Eclipseを選んでいる理由は「まとまってて導入が簡単」「実行するのが簡単」「日本語で使える」という点。
 標準入力への値の設定方法だけ確認する場合、[ソース解説](#ソース解説)だけ見てもらえばいい。

 **環境**
 ・Windows10
 ・Eclipse2021
 ・Python3.9.5

## 目次
 1. [下準備](#下準備)
 2. [ダウンロード](#ダウンロード)
 3. [インストール](#インストール)
 4. [プロジェクト作成](#プロジェクト作成)
 5. [動作確認](#動作確認)
 6. [ソース解説](#ソース解説)
 7. [おわり](#おわり)

## 下準備
 

元記事を表示

OTHERカテゴリの最新記事