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

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

【bokeh】ColumnDataSourceインスタンス生成時に、`ValueError: cannot insert ~, already exists`が発生

# 環境
* Python 3.9
* bokeh 2.4.2
* pandas 1.3.3

# やりたいこと
Pythonの可視化ライブラリ[bokeh](https://docs.bokeh.org/en/latest/)を使って、グラフを生成したいです。

# 発生したエラー
`bokeh.models.ColumnDataSource`のインスタンス生成時に、`ValueError: cannot insert x, already exists`というエラーが発生しました。

“`python:foo.py
from bokeh.plotting import figure, output_file, save
from bokeh.models import ColumnDataSource
import pandas

index = pandas.Series([0, 1, 2, 3, 4], name=”x”)
data = {“x”: [1, 2, 3, 4, 5], “y”: [6, 7, 2, 3, 6]}
df = pandas.DataFrame(da

元記事を表示

Python: PDFファイル内の全ページを任意のサイズに変換する

“`python
from enum import Enum
from io import BytesIO
import PyPDF2

class PDFSizeParam(tuple, Enum):
PX_72DPI_A4 = (595, 847)
PX_300DPI_A4 = (2480, 3508)
PX_350DPI_A4 = (2894, 4093)

def scale_pdf_to(pdf_bytes: bytes, scale_to: PDFSizeParam = PDFSizeParam.PX_72DPI_A4) -> bytes:
reader = PyPDF2.PdfFileReader(BytesIO(pdf_bytes))
num_pages = reader.getNumPages()
pages = [reader.getPage(i) for i in range(num_pages)]
[page.scaleTo(scale_to.value[0], scale_to.value[1])

元記事を表示

Python: 複数PDFを結合して1つのPDFに変換する

“`python
from io import BytesIO
from typing import List
import PyPDF2

def merge_pdfs(pdf_bytes: List[bytes]) -> bytes:
merger: PyPDF2.PdfFileMerger = PyPDF2.PdfFileMerger()
try:
for b in pdf_bytes:
merger.append(PyPDF2.PdfFileReader(BytesIO(b))) if b else None
ret: BytesIO = BytesIO()
merger.write(ret)
ret.seek(0)
return ret.read()
finally:
merger.close()
“`

bytes <-> File読み書きは割愛。

元記事を表示

Pythonでの Lambda関数共通レスポンスUtil

#目的
PythonでのLambda関数共通レスポンスUtilを作成方法を共有します。

#実装
“`response.py
import decimal
import json

class DecimalEncoder(json.JSONEncoder):
“””DecimalEncoder クラス
Decimal クラスを使用して保存された数値を出力するために使用されます(Amazon DynamoDBの数値を保持します)
“””
def default(self, o):
if isinstance(o, decimal.Decimal):
if o % 1 > 0:
return float(o)
else:
return int(o)
return super(DecimalEncoder, self).default(o)

def response_200(body, **kargs):

元記事を表示

[Python] Requests パラメータ allow_redirects

# allow_redirects

`Request`は(`HEAD`以外)デフォルトリダイレクトする

`history`のプロパティでリダイレクトされたかの歴史を追跡できる

## 例

GitHub は`HTTP`を`HTTPS`にリダイレクトする

“`python:default
>>> r = requests.get(‘http://github.com/’)

>>> r.url
‘https://github.com/’

>>> r.status_code
200

>>> r.history
[]
“`

`allow_redirects=False`を設定すると、リダイレクトをしない

“`python:allow_directs=False
>>> r = requests.get(‘http://github.com/’, allow_redirects=False)

>>> r.status_code
301

>>> r.history
[]
“`

`HEAD`の場合、デフォルトはリダイレクトしない

リダイ

元記事を表示

日本語版BERTを使って、Tweetのいいね数を予測するアプリを作ってみた【Django】

こんにちは。kuro_Bです。

突然ですが、みなさんはTwitterをやっていますか?
自分は今年に入り、ようやくアカウントを作ったのですが、一つ切実な悩みがございます。

~~ネタ~~ツイートのいいね数を伸ばしたい!

そこで今回、
日本語版BERTという自然言語処理用の機械学習モデルを使用して、
Tweetのいいね数を事前に予測するアプリを作ってみました。

# 環境
– Python: 3.9.9
– Django: 4.0
– transformers: 4.5.0
– pytorch-lightning: 1.4.9

# 概要
今回以下の手順でアプリ作成を行いました。

1. Twitter API v2を使用して、Tweet情報を取得
2. 取得したTweet情報を元に、日本語版BERTを学習
3. 学習済BERTとDjangoを使用し、アプリ作成

また、最後にAWSのEC2にてデプロイを行いました。
それでは、各手順を紹介していきます。

# 1.Twitter API v2を使用して、Tweet情報を取得
まずは、BERTを学習させるために必要なデータを収集し

元記事を表示

今日の単語 entrepreneurial

今月は例のDeepLearningテキスト(https://pythonrepo.com/repo/minitorch-minitorch-python-machine-learning
から進めていて、コーネル大学のプログラマ向けの教材をやっている
(もちろん英語の勉強だけでなく、プログラム教育を大学生に戻って受けるつもりである。
今は本当に、いい時代になったとおもう。こうして50代のオッサンでさえ、彼らと肩を並べて現役でいられるなんて・・・)

#conel大学の動画

 AIを学ぶ動機として、動画の中でお姉さん達が力説しているが、この単語が実に重要と言うらしい。これからの世の中を象徴している気がする。もちろん、こんな単語、いまの日本人は知っている人はゼロパーに近いんではないか?

` 途中に出てくる単語が、分からない、読めない、発音できないと、三重苦であった。
èn・tre・pre・néur・i・al → あんた プレなあ
`

“`
ESTRIN: Our one year masters of engineeri

元記事を表示

RocketCEAでロケットエンジン性能計算

## 概要
ロケットエンジンの化学平衡計算と呼ばれる性能計算をするために便利なRocketCEAというpythonモジュールの紹介。従来からよく使われているNASA CEAという難解なアウトプットのものに比べ、取り扱いしやすい。
詳細は公式ドキュメントやGithubのページへ

https://rocketcea.readthedocs.io/en/latest/

https://github.com/sonofeft/RocketCEA

## NASA CEA
化学平衡計算は初歩的なロケットの勉強から開発の最前線まで多用される。
化学平衡計算は従来からロケットエンジン設計者なら全員が使ってきたNASA開発のCEA(Chemical Equilibrium with Applications)がある。
これは論文もあり、内容は流石NASAというべきすごいもの。しかし作られたのが古く使いやすさの面ではイマイチ。
加えて、最近ではソースコードが非公開になり(探せばネット上落ちてはいるが見つけにくい)、[オンラインで実行できるサイト](https://cearun.grc.nasa.g

元記事を表示

Pythonにおける静的解析とコード整形について

# はじめに
Pythonのスタイルガイドの話からLinterとFormatterのツール紹介、vscodeへの導入までを簡単にまとめています。
本稿で対象となるツールは下記の通りです([他にもいくつかツールは存在します](https://qiita.com/kannkyo/items/0bcc8264009921e560ba#linter))。

– flake8
– mypy
– isort
– black

# スタイルガイド( コーディング規約 )
コードの保守性と品質を高めるために定義されたコードの書き方です。基本的に同じ開発チーム内で決定するものですが、スタイルガイドに則ったものを利用しているところが多いのではないでしょうか?
これをプロダクトに導入することで得られる効果はさまざまあるかと思いますが、個人的に感じている大きなメリットは下記2点です。

– 可読性が向上し、プログラムが理解しやすくなる
– 複数人開発において、統一されたコードが作成できるようになる

同じ言語に複数のスタイルガイドがあったりします。
[google style guide for pytho

元記事を表示

自分用Pythonメモ

最近はPythonとTypeScriptを交互に使うことが多く、頭の中で両言語がごっちゃになっているので、本記事でPythonについてメモします。
情報の網羅性はありません。
気づいた時点で随時追加します。

# ループ

ループ中でbreak、continueが使える。

## while文

else節は、whileでbreakが実行されなかったときのみ実行される。

“`py

while 式:
スイート
else:
スイート
“`

## for文

while文同様、else節が書ける。

様々な書き方:

“`py

for i in range(n):

for i in range(a, b):

for i in range(a, b, step):

for i in list(range(1, 8)) + list(range(9, 13))

for i, ch in enumerate(s):

# 1からカウント
for i, ch in enumerate(s, 1):

for ch in s:

# カウンタ用変数を使わないなら、

元記事を表示

AI業界で作られるAIの4つの分類

#本題
今回この記事を書いたキッカケとして、
「経済を、もっとおもしろく。」ビジネスパーソンや就活生必携のソーシャル経済メディアのNewsPicksで放映された、
番組の「未来を創る!新世紀のAI技術」という回でした。

#学びの詳細
・見る力?
『識別系AI』
…画像認識AI
…顔認識AI
…文字認識AI
など。

・予測する力?
『予測系AI』
…需要予測AI
…顧客予測AI
…異常検知AI
など。

・話す力?
『会話系AI』
…翻訳AI
…自然言語処理AI
…文字認識AI
など。

・動く・作る力?
『実行系AI』
…自動運転AI
…ロボット/ドローンAI
…画像生成AI
…作曲AI
など。

これを見てもわかる通り、AI業界の現場仕事では4つに分類されておりAIについて知識がない人でも、身近にある物でも想像できるのではないでしょうか。これから更に発展していくAIの知見を高くすることは大事だと思いますし、どう動くのかどう育成するのかなどを深堀すると、更に学び楽しさが出来るのではないかと思いました。

#参

元記事を表示

【python】python×sakuraエディタのgrep自動化メモ

#1.はじめに

仕事をしていると、何度も同じ作業が発生したりすることがある。

あるフォルダにあるソースを毎日、いくつかの項目でgrepする。前日との差分比較をしたいため、テキストファイルに実施日付もファイル名に追加して保存。
大した時間ではないが、毎回だと鬱陶しい。

今回は(1),(2)を実行するスクリプトを作成することにした。

(1)sakuraエディタで指定フォルダをlotoでgrepをしたものをgrep_result_yyyymmdd.txtと名前を付けて保存

(2)sakuraエディタで指定フォルダをinsert into またはでgrepをしたものをinsert_result_yyyymmdd.txtと名前を付けて保存

#2.sakuraエディタ

下記場所からインストールできるフリーの高機能エディタ。
[サクラエディタ](https://sakura-editor.github.io/)
使用頻度の高いgrep機能と、豊富なコマンドラインオプションが魅力的なエディタだと個人的には思っている。
コマンドラインオプションを使用することで、やりたいことのほとんどが実行

元記事を表示

NumpyでCannyエッジ検出

NumpyでCannyエッジ検出を実装してみます。

## 画像読み込み

画像を読み込み、カラー画像をグレースケール画像に変換します。

“`python
original_image = plt.imread(image_name)
if np.issubdtype(original_image.dtype, np.integer):
original_image = original_image / np.iinfo(original_image.dtype).max
gray_image = 0.2116 * original_image[:,:,0] + 0.7152 * original_image[:,:,1] + 0.0722 * original_image[:,:,2]
plt.imshow(gray_image, cmap=’gray’)
“`

![GrayImage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61569/9220c8e3-4253-4c2a-ec60

元記事を表示

Python: itertools.repeat と range によるループの実行時間の比較

# Python: itertools.repeat と range によるループの実行時間の比較

## はじめに

`range()`によるループは、作り出された値を使わない場合は無駄なんじゃないかと思いもっと良い方法がないか調べてみました。
そうすると、`itertools.repeat()`が良いとの記述を見つけました。
`itertools.repeat(None,n)`は、`None`をn回返す関数ですが、実際の値ではなくて参照を返すので速いようです。
では、どの程度実行時間に差があるのか調べてみました。

## 結論

値が要らないループならば、`itertools.repeat(None,n)`の方が速い。

## 環境

“`:OS
エディション Windows 11 Pro
バージョン 21H2
OS ビルド 22000.318
エクスペリエンス Windows 機能エクスペリエンス パック 1000.22000.318.0
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ
“`

“`:python
Py

元記事を表示

【備忘録】Django Rest Framework のViewについて

DjangoのRest Frameworkについて学んでいます。
学んだことをアウトプットするため、備忘録を書いていきます。
今回はViewに焦点を当てました。
間違った点がありましたら、教えていただけますと幸いです。

# 関数ベースのView(一番簡単)

Responseを返却する関数型のビューです。
第一仮引数に request を受取るように定義するだけです。

“`ruby:
from rest_framework.response import Response
from rest_framework.decorators import api_view # ここにapi_viewというデコレータを記述することにより、DRFの設定が、下記ビューに引き継がれるようになります。

@api_view([‘GET’, ‘POST’]) # 引数としてHTTPメソッドを指定
def hello_world(request):
if request.method == ‘POST’:
return Response({“message”: “Got so

元記事を表示

[Python] パッケージ中の __main__.py モジュール

# `__main__.py`

パーケージを呼び出す時に、
`-m` オプションを追加することで、
パッケージ中の `__main__.py` モジュールが執行されます。

“`shell:command
python3 -m bandclass
“`

“` :directory-structure
bandclass
├── __init__.py
├── __main__.py
└── student.py
“`

# 参考

https://docs.python.org/3/library/__main__.html#main-py-in-python-packages

元記事を表示

【AtCoder解説】PythonでABC233のA,B,C,D,E問題を制する!

**ABC233**の**A,B,C,D,E問題**を、**Python3**でなるべく丁寧に解説していきます。

ただ解けるだけの方法ではなく、次の3つのポイントを満たす解法を解説することを目指しています。

– シンプル:余計なことを考えずに済む
– 実装が楽:ミスやバグが減ってうれしい
– 時間がかからない:パフォが上がって、後の問題に残せる時間が増える

ご質問・ご指摘は**コメント**か**ツイッター**、**マシュマロ**、Discordサーバーまでお気軽にどうぞ!

**Twitter: [u2dayo](https://twitter.com/u2dayo)**
**マシュマロ: https://marshmallow-qa.com/u2dayo**
**ほしいものリスト: https://www.amazon.jp/hz/wishlist/ls/2T9IQ8IK9ID19?ref_=wl_share**
**Discordサーバー(質問や記事の感想・リクエストなどどうぞ!) : https://discord.gg/jZ8pkPRRMT**
よかったら**LGTM**

元記事を表示

AtCoder Beginner Contest 200 A,B,C問題を初心者が頑張る

#atcoderを学ぶ

競プロを少し学ぼうと思う。ほぼやったことが無い初心者です

###atcoder200をやる

そもそも入力がわからなかったので、入力をまとめてあるサイトを参考にしました。

https://qiita.com/ell/items/1f519aff0cdc3cf16284

https://qiita.com/zenrshon/items/c4f3849552348b3dbe67

この二つです。

####A問題

A – Century

西暦N年は何世紀か?という問題

最初の解答(誤答)

“`
N = int(input())

answer = 0
for i in range(1,N+1):
if N -i*100 >= 0:
answer +=1
else:
break

print(answer)
“`

WAが出たのでダメでした。
これだと 21年が0世紀になってしまうのでanswer = 1を最初にやるべきなのと、
100年、200年などぴったりの時を次の世紀にしてしまっているので

元記事を表示

Django勉強シリーズ(1)Formクラスを使う

##1.Djangoでフォームを作成する方法
djangoでHTMLファイルにフォームを作成する方法はいくつかある。
####①テンプレートに直接inputタグを記述して作成する
####②forms.pyにforms.Formクラスを継承したフォームクラスを作成し利用
####③forms.pyにモデル(forms.ModelForm)を利用したフォームクラスを作成し利用

今回は②の方法を用いてフォームを作成してみた

##2.データをソートするためのプルダウンフォーム作成
###①アプリケーションフォルダ内にデフォルトではforms.pyは作成されないのでまずはforms.pyを作り、その中に作りたいフォームのクラスを作成する
####→forms.pyに記入することで細かな設定をすることができる
“`python:app/forms.py
from django import forms
“`
###フォームのフィールドの型はいくつか用意されている
[フィールド一覧で参照したページ](https://office54.net/python/django/forms-

元記事を表示

Cloud Composerに入門する

# はじめに
* Cloud Composerに入門した時に確認したことのメモです。(QA方式)

# 確認したこと
## Cloud Composerとは?
* Apache Airflow で構築された、フルマネージドのワークフローオーケストレーションサービス
* ハイブリッドおよびマルチクラウド環境にまたがるパイプラインを作成、スケジューリング、モニタリング
* Apache Airflow のオープンソースのプロジェクト上に構築され、Python を使用して運用
* 特定のベンダーに依存する必要がなくなり、使用も簡単

## 仕組みは?
![スクリーンショット 2021-12-26 10.13.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92368/a4d36fe4-c580-40ed-06a0-6f9cd89ae1a9.png)
[Cloud Composer 環境のアーキテクチャ ](https://cloud.google.com/composer/docs

元記事を表示

OTHERカテゴリの最新記事