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

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

【Python】エラーメッセージの内容を理解する

#### 背景

自身がPython習得をすすめる上での備忘録ではありますが、エラーメッセージの読み解き方を、ここにまとめておきます。

先人たちの知恵をお借りするなどして解決できたことを、この場をお借りして感謝するとともに、大変恐縮ですが自分のメモとしても、こちらへまとめておきます。

#### 開発環境

– Windows 10 Pro
– Python 3.9.0, 3.8.5
– Django 3.1.3
– PostgreSQL 13.1
– Nginx 1.19.5
– Gunicorn
– Putty 0.74

# エラーメッセージ

## 1. NameError(ネーム・エラー)

#### 1-1.

– ミス・タイピングによって起こる。大文字・小文字の違いでも起こる。

“`python:python
prlnt(“Hello World !”) # 誤…print→prlnt

print(“Hello World !”) # 正
“`

“`:ターミナル
Traceback (most resent call last):
f

元記事を表示

データ分析で役立つPandas DataFrameへの置換操作のやりかた(簡単)

pandas でデータ置換を行うときに見る個人メモ。

## 結論
“`python
data_x = features_df
data_x.width = data_x.width.replace(‘めっちゃ高い’, 333)
“`

これで’めっちゃ高い’を333に置き換えることが可能

元記事を表示

ArgumentParserの使い方のシンプルな例

Pythonで初めてArgumentParserを使ってみました。

使い方に関する記事はいろいろありましたが、取り急ぎやりたいことを調べるのに、時間がかかって、あきらめそうになったので、メモとして残します。

実現したいことは、
* 対象とするデイレクトリをパラメータとして渡す
* 通常は条件に一致したファイルを対象とするが–allと指定されたらすべてを対処とする

下記を実行した時は、testDir内のすべてのファイルを処理対処として

“`
$ python3 check.py testDir –all
“`

–allを指定せず実行した時は、testDir内のすべてのファイルのうち特定のファイルを処理したい

“`
$ python3 check.py testDir
“`

##### ディレクトリをパラーメータとして渡す
まずは初歩の初歩 最初の一歩として

“`
parser.add_argument(‘directry’, help=’input directry’)
print(args.directry)
“`
実行結果

“`
$ pyt

元記事を表示

scipy.interpolate.griddataで2次元データの補間をする

# やりたい事
`scipy.interpolate.griddata`の使い方説明

x,y座標、及びその座標での値データがあるとします。

“`python:example.py
print(sample_df)
# >>>
# X Y value
# 0 0 0 11
# 1 0 2 17
# 2 0 4 13
# 3 0 6 12
# 4 0 8 26
# …
# 32 10 4 8
# 33 10 6 35
# 34 10 8 30
# 35 10 10 17

“`
x,y座標のみをプロット
xy.png

“`python:exampl

元記事を表示

公益財団法人日本薬剤師会の医薬分業進捗状況(保険調剤の動向)のPDFをCSVに変換する

公益財団法人日本薬剤師会の[医薬分業進捗状況(保険調剤の動向)](https://www.nichiyaku.or.jp/activities/division/faqShinchoku.html)のPDFをCSVに変換する

“`python
import pathlib
import time
from urllib.parse import urljoin

import pandas as pd
import pdfplumber
import requests
from bs4 import BeautifulSoup
from tqdm.notebook import tqdm

headers = {
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko”
}

def fetch_soup(url, parser=”html.parser”):

r = requests.get(url, headers=headers)
r.r

元記事を表示

PythonでS3バケット内の一覧を取得し、特定のKeyで検索 Key名と最終更新日、カウント数をファイルに出力

所用で必要になったので

“`
# -*- coding: utf-8 -*-
import boto3

PUBLIC_S3_BUCKET_NAME_TEST = ‘バケット名’

def access_count():
count = 0
with open(‘file.txt’, ‘w’) as f:
# バケットの一覧取得
S3 = boto3.resource(‘s3’)
S3BUCKET = S3.Bucket(PUBLIC_S3_BUCKET_NAME_TEST)

for obj in S3BUCKET.objects.all():
if ‘検索名’ in obj.key:
count += 1
print(count, obj.key, obj.last_modified, file=f)

print(‘total=’ + str(count), file=f)
“`

元記事を表示

時間のかかるプログラムのプロセス終了をSlackで通知してくれるようにする

# 概要
時間のかかるプログラム(ディープなモデルの学習など) のプロセスの終了を Slack で通知してくれるようにしたので、そのメモ。

特徴としては、

1. プログラム実行環境にて、追跡するプログラムのプロセスIDを引数とするシェルスクリプトを実行
2. Slack にて、追跡開始の確認、およびプログラムの実行コマンドの表示
3. Slack にて、プログラムの終了通知、および追跡を終了するプロセスIDの表示

を行います。

# 使用ツール & 環境

* 使用ツール
* シェルスクリプト
* Slack
* [Incoming Webhook](https://slack.com/apps/A0F7XDUAZ-incoming-webhooks) (Slack App)

* 環境
* Ubuntu 18.04

シェルスクリプトをほぼ初めて触ったので、冗長なコーディングがあればご指摘お願いします。

# 導入手順
### 1. Slack のチャンネルに Incoming Webhook を連携させる
[Incoming Webhoo

元記事を表示

Python環境構築

OS Windows10 Pro
Vagrant 2.2.14
Ubuntu 16.04.4 LTS

Dockerで今後管理したいため、Pythonをインストールし、pipをインストール、numpyをインストールしようとしたらエラーが発生。
““

““
python3 -m pip install numpy
Collecting numpy
Using cached https://files.pythonhosted.org/packages/51/60/3f0fe5b7675a461d96b9d6729beecd3532565743278a9c3fe6dd09697fa7/numpy-1.19.5.zip
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File ““, line 1, in
File “/tmp/pip-build-ayy5xg9l/nump

元記事を表示

RocketChatをAPI/Pythonでイジる

RokcetChatのREST APIをPythonでなしかいじったものです。

Public,Privateで使い分けが必要になります(いまいっぽ。。。)。なので利用者にはその使い分けを意識せずに情報をとれるようにしてみました。

原理としては
responseの存在により

– publicチャンネル→private用API
– privateチャンネル→public用API

の組み合わせになった際にはresponseの有無で
格納処理をスルーするようにすることで
なんとかしている仕組みにしてみました。

“`python
#!/opt/anaconda3/bin/python3
# -*- coding: utf-8 -*-

”’RocketChat Channelメンテナンス

RocketChatのチャンネル管理を行う

Todo:
* まだRedmineとRocketChatのみ。他のOSSに対しても同様に作る

def __init__(self, HEADERS, URL):
def _getChannelPublicMa

元記事を表示

sudachipyで簡易的に同義語辞書をつかう

# TL;DR
– sudachiの同義語辞書(synonym.txt)から同義語グループidと代表語の組み合わせを生成
– 生成した組み合わせをつかってsudachipyで簡易的に同義語辞書を使えるようにする
– 例としてわかちがき後同義語辞書をつかって正規化する

# 目的
テキストからの情報抽出やテキストの類似度計算などのタスクを行う際に、sudachiでの形態素解析で同義語を使いたかったのですが、sudachipyではsudachiの同義語辞書を利用できませんでした。
簡易的でいいので、sudachipyで簡易的に同義語辞書が使えるようにします。
今回の目的は、あくまでも**形態素解析後の正規化**です。特に、わかちがき後に同義語を同じ見出しに揃えることを目的としています。したがって、同義語の展開は行いません。

# sudachiの同義語辞書

sudachiの同義語辞書は[ドキュメント](https://github.com/WorksApplications/SudachiDict/blob/develop/docs/synonyms.md)によると、

> Sudac

元記事を表示

1分で基礎をおさらい!Python 高速で最小値を取れる優先度付きキュー

# 概要

リストから最小値を高速で取り出したいときに用いる優先度付きキューがPythonにはheapqという便利なものがあるのでさくっと見直しましょう。AtCoderでも頻出内容

# 急いでる人向け

この記事のすべて。三行目を
q = heapq.heapify(a)
としても動かないため注意

“`python
a = [1,2,3,4,6,7,8]
#list をheapifyでヒープ化する。
heapq.heapify(a)

#heappush で5を追加する。
heapq.heappush(a,5)

#heap内のの要素を小さい順にheappopで取り出す。
while a:
print(heapq.heappop(a))

######実行結果######
1
2
3
4
5
6
7
8
“`

# かんたんな説明

・heap**.heapify(list)**
リストを与えるとヒープ化してくれる

・heap.**heappush(heap,要素)**
heapに新しい要素を追加する(listにおけるappendのheap版)

・hea

元記事を表示

教師あり学習 ~入門者のメモ~ (scikit-learn)

## 本記事の内容

「[東京大学のデータサイエンティスト育成講座](https://www.amazon.co.jp/%E6%9D%B1%E4%BA%AC%E5%A4%A7%E5%AD%A6%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%B5%E3%82%A4%E3%82%A8%E3%83%B3%E3%83%86%E3%82%A3%E3%82%B9%E3%83%88%E8%82%B2%E6%88%90%E8%AC%9B%E5%BA%A7-Python%E3%81%A7%E6%89%8B%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E5%AD%A6%E3%81%B6%E3%83%87%E2%80%95%E3%82%BF%E5%88%86%E6%9E%90-%E5%A1%9A%E6%9C%AC%E9%82%A6%E5%B0%8A/dp/4839965250/)」を読んで、scikit-learn の各モデルについての概要が掴めたので、忘れないうちにメモ。
書籍で言うと:Chapter 8 機械学習の基礎(

元記事を表示

Django – Qiita上のtutorial appを概観し、機能をプラスする(2)

## はじめに
前回[Django – Qiita上のtutorial appを概観し、機能をプラスする(1)](https://qiita.com/emo157/items/c645b33e3a36ccd1d6bc)の続きです。

Djangoにはログイン機能について標準でユーザー認証(login)機能がついていますが、ユーザー登録(signup)機能は備わっていません。

今回はユーザー認証機能とユーザー登録機能とそれら画面を実装していきます。
ログアウト画面も作ってよいのですが、今回はログイン画面に遷移させることで対応します。

参照記事は以下です。
[Django2 でユーザー認証(ログイン認証)を実装するチュートリアル -2- サインアップとログイン・ログアウト](https://it-engineer-lab.com/archives/544)

以下前回の機能も付与してgitにあげたものです。
https://github.com/Rio157/crud-image-accounts.git

## 完成型
![b2b6f6da-fefe-4019-bbc4-567

元記事を表示

ゼロから! 入門 Python3! この2つの書籍を同じ人が出されているって。

#知らなかった

以下のような記事を書いたことがある。

[良書「ゼロから作るDeep Learning — Pythonで学ぶディープラーニングの理論と実装」を読む](https://qiita.com/enoughspacefor/items/d545b23bd64d285647de)

[良書『入門 Python3』、説明に失敗しているところN選(N=3)。](https://qiita.com/enoughspacefor/items/1d53f38be261f3b0c8ec)

つまり、対象としている書籍は、

* **ゼロから作るDeep Learning — Pythonで学ぶディープラーニングの理論と実装**
* **入門 Python3**

**これ、両方!**

|斎藤康毅 :tada:|
|:—:|

という方が、(後者は、訳本なので監訳であるが、)出されているよう。
巨人ですね。。。

#それをふまえ

以下のような記事も書いたが。。。

[良書「ゼロから作るDeep Learning 」のGitHub](https://qiita.com/eno

元記事を表示

python codeの自動整形をするアクションを作ってみた

# Why
* チーム開発をしていると、コードフォーマットの差が大きい
* やる人もいれば、やらない人もいる
* フォーマッタが異なる
* コード整形のみのコミットを入れたくない
* 開発者に手間を掛けさせず、且つローカル環境の依存をなくしたい
* black, autopepなどのライブラリをローカル環境に依存したくない
* vscodeやemacsなどエディタに依存したくない

* github actionsを触ってみたかった
* 初めてのお題としては丁度いいと思った

# What
* 作ったもの
* 所定のbranchにpushした時に、所定(今回の例だと、workspace/python以下)の*.pyコードをサーチし、対象となったpythonファイルにblackによるコード整形を実行する
* プルリク→マージも想定して、マージ先のブランチにマージされた時にも、上記コード整形を実行する
* [リポジトリ](https://github.com/unmo/codeformat_with_actions)
* 前提

元記事を表示

Django – Qiita上のtutorial appを概観し、機能をプラスする(1)

##1年ほど前に書いた記事です。
Publicに公開できるようにQiitaに投稿いたします。

## はじめに

この記事では
– Djangoアプリケーションのそれぞれのファイルの相関と大まかな役割を理解できる
– 既存のアプリケーションを概観し、適切な変更を加えられるようになる
– Djangoを知らない人には、ほう、そんな感じか、というイメージを持ってもらえる

ことが目的です。個人的には復習のつもりで取り組みます。

以下の記事のアプリを概観し、
[[Python] Djangoチュートリアル – 汎用業務Webアプリを最速で作る](https://qiita.com/okoppe8/items/54eb105c9c94c0960f14#%E6%89%8B%E9%A0%86%EF%BC%93%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90)

今回は、
**ログイン機能とその画面の作成(2)と
画像ファイルのアップロード・表示を可能にする(1)作業を行います。**

以下は今回の(1)の作業を終えたもの
https://githu

元記事を表示

Streamlitで作ったデータ閲覧用のWebアプリをherokuで公開する

# 概要

– [前回](https://qiita.com/yoichi_t/items/41ec07286a963b5e2eee)、Streamlitを使ってWebアプリを作れるようになった
– せっかくだから公開しよう
– ということで、できたもの → [Chocolate Ball Viewer](https://chocolate-view.herokuapp.com/)

# 前提

– herokuにアカウントを作っておく(無料でOK)
– githubのアカウントがある

# アプリ作成

[こちら](https://qiita.com/yoichi_t/items/41ec07286a963b5e2eee)などを参考にアプリを作成します。本記事ではStreamlitの記法などについては触れません。

“`
$ streamlit run [python-file]
“`

で、期待通りにアプリが作成されていることを確認しときます。

# herokuにデプロイ

ここからが本記事の本編です。
手順の概要としては次の通りです。

1. herokuデプロイに必

元記事を表示

正方形の二次配列を渦状に取得する方法!

##1. はじめに
皆さん、初めまして!
今、大学でソフトウェア工学を専攻しているモナ坊です。

読まれる前に、読者にはコードよりも考え方を参考として読んで欲しいという希望があります。

突然ですが、皆さん配列の流れに困惑したことはありますでしょうか?
そのくらい分かるわ!とつっこまれるかも知れませんが、もう少し読んでください。

では、正方形の配列をポインターで渦状に移動させる方法はご存知でしょうか?

詳しく説明致します。

本題

では、さっそく本題に入ります。

正方形の二次配列が存在するとします。
例.)

“`python:array_traversal.py

array = [
[1, 2, 3, 4]
[12, 13, 14, 5]
[11, 16, 15, 6]
[10, 9, 8, 7]
]
“`

この 縦x横の二次配列を渦状に一つ一つの要素を渡り、一次配列を取得してください。(時間計算量はO(n))

“`:出力例
[1, 2, 3, 4, 5, 6, 7, 8, 9, 1

元記事を表示

PySImpleGUIでファイルの更新履歴や簡単なリリースノートを作成

#はじめに
仕事ではチーム開発などはなく、個人でコードを作成することが多いので、
いままでほとんどコードの更新履歴やリリースノートを書いたことがありませんでした。
(リリースしてないのでリリースノートを書いたことがない)

ふとリリース前にバージョン管理はしっかりしておいた方がいいと思い立ちました。

GitHubをローカルで使う方法もありますが、
使うOSがばらばらで使い方を覚えるのも億劫だったので、
簡易的なバージョン管理ツールを作るに至りました。

#開発環境
Windows10
PySImpleGUI 4.29.0
Python 3.7.6
pyinstaller(exe化で使用) 4.1

#GUI
GUIは以下のようになります。今回はテーマがLightBrown3です。

更新履歴は事細かに記載する予定なので、リリースより細かい更新が入ります。
そのため、同じファイル名で二度以上更新する場合もありますので、
更新時間をファイル名に追加し、更新したファイルを別のフォルダにコピーします。
それにより、テキストの履歴と実際のファイルの紐づけを取ります。

リリースノートの「タイト

元記事を表示

streamlitとherokuで市町村別コロナ発生状況グラフをリリース

## 自分
 経理屋です。35才から趣味でpythonを始めて3年が経ちました。最近は徐々にwebアプリなんかも作れるようになってきてすごく楽しいです。よろしくお願いします。
 まだまだ未熟ですが、誰かの役に立つかなーと思って記事を書いてみました。

## とっかかり
 ここ最近まで長野県は新型コロナの発生が少なかったんですが、最近になってかなり増えてきました。出かける時もどこに出かければいいか少々不安です。
 そんなタイミングで長野県のホームページにコロナ発生状況のCSVデータが公開されているのを見つけたので(今さら)グラフで見れるサイトを作って見ました。
出来上がりはこちら [→covid19 in nagano](https://covidnagano.herokuapp.com/)

## 全体イメージ
![Screen Shot 2021-01-20 at 9.13.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/284553/ef2339cf-ea88-bf81-c5a9-6b8234e

元記事を表示

OTHERカテゴリの最新記事