Python関連のことを調べてみた2022年05月18日

Python関連のことを調べてみた2022年05月18日

GoogleColabでクラウドストレージのwasabiを使う方法(boto3)

S3互換で安いクラウドストレージサービスのwasabiをGoogleColabと連携して使いたいと思ったので自分用にメモしておきます。

1.認証
2.ファイルの一覧取得
3.ダウンロード
4.アップロード
5.バケット作成
を記載しておきます。

“`
# 必要なライブラリのインストール
!pip install boto3 -q
import pandas as pd
import boto3

# 認証情報
aws_access_key_id = アクセスキー
aws_secret_access_key = シークレットキー
region = リージョン # リージョン一覧 → https://wasabi.com/locations/
bucket = バケット名

# S3アクセス準備
s3 = boto3.resource(‘s3’,
endpoint_url=f”https://s3.{region}.wasabisys.com”,
aws_access_key_id=aws_a

元記事を表示

コンピュータにおける三角関数の実装

# コンピュータにおける三角関数の実装

※この文章は主に Intel社の文献 [^1] をもとに記述しています。

## 歴史的な話

1980年代に開発された Intel 8087 プロセッサーでは、`sin` `cos` を含む数学関数がハードウェア実装された。
現在の Intel や AMD の x86_64 アーキテクチャ CPU にも、互換性を維持する目的で実装され続けている。(x87)

しかしながら、最近のプログラミング言語で `sin` `cos` を呼び出しても、
これらの x87 命令が使用されることはなく、ソフトウェア的に計算が行われる。

それには、x87 命令の実装に使用されたアルゴリズムに、速度や精度上の欠点があるため、と言われている。

[^1] から引用
> In the 1990s Intel replaced the 8087’s CORDIC-based approximations of the elementary transcendental functions with polynomial-based approximations. T

元記事を表示

[python] リストの内容をフィルターして新たなリストを作る時の Tips

備忘録として。
掲題のケースですっきり書けるやり方をメモしておく。
( 他に良い方法があればご指摘いただけますと幸いです )

# 確認環境
少し古いが下記の環境で確認。

| | バージョン | 確認方法 |
| ——- | ——– | ———- |
| python3 | v3.7.12 | python3 -V |

# 単純なリストの場合
## 単一の条件にマッチ
“`python
hoge_list = [1,2,3,4,5,6,7,8,9,10]

# hoge_list の値が 5 のものを抽出して新しいリストを作る
filtered_hoge_list = [ hoge for hoge in hoge_list if hoge is 5]

# 出力して確認
# 条件に指定した値がリストの要素になっていることが確認できる
filtered_hoge_list
[5]
“`

## 複数の条件にマッチ

“`python
hoge_list = [1,2,3,4,5,6,7,8,9,10]

# hoge_

元記事を表示

Pythonで歌詞を集めて軽く分析してみた話

これを作ろうと思った理由

・ただ単に歌の歌詞の頻出度が気になったから
・これを使えばなにかいい歌詞が作れるのではないか

コード

まずコードからお見せします。コードが雑ですが…
“`python:例のコード
import requests
from bs4 import BeautifulSoup
import sentencepiece as spm
import os

net = range(1,318500)

for i in net:
kasi = “”
memory = “”
load_url = “https://www.uta-net.com/song/” + str(i) + “/”
html = requests.get(load_url)
soup = BeautifulSoup(html.content ,”html.parser”)
for element in soup.find_all(id=”kashi_area”):
memory = element.text

元記事を表示

量子計算ライブラリの量子回路を相互変換するライブラリ 「naniwa」を作ってみた

# はじめに
量子ソフトウェア研究拠点主催の量子ソフトウェア勉強会のグループワークで、量子計算ライブラリの量子回路インスタンスを相互変換するライブラリ 「[naniwa](https://github.com/q-group-work/naniwa)」を作成した。この記事では、naniwaの概要とその使い方について説明したいと思う。

# 対象読者
qiskitやqulacsなどの量子計算ライブラリを使ったことがある人
複数の量子計算ライブラリで回路インスタンスを生成してる人
ある回路インスタンスを別ライブラリの回路インスタンスに変換したい人

# naniwaとは
pythonには、qiskitやqulacsなどの量子計算ライブラリが充実している。
しかしそれ故に、それぞれのライブラリで同じ回路を使いたくなった時に別のライブラリで量子回路を書き直さなければいけない。
簡単な回路ならすぐかけるが、複雑な量子回路を書き直すのはなかなかに大変である。

この問題を解決するのが、量子回路相互変換ライブラリ 「[naniwa](https://github.com/q-group-work/

元記事を表示

Python Pandas, Plotly, GridDBによる株式市場分析

![Graph](https://griddb.net/ja/wp-content/uploads/2021/04/newplot.png)
# はじめに
株式市場は気まぐれで、よく変化します。人間は歴史の中で雄牛を飼い慣らそうとしてきたが、決して成功しなかった。株式市場の予測が難しいのは、あまりにも多くの要因が絡み合っているからであり、そのような分散を考慮したモデルを作成することはほとんど不可能です。しかし、近年の機械学習やコンピューティングの進歩により、機械が大量のデータを処理できるようになりました。これにより、過去の証券取引所のデータを利用し、トレンドを分析することができるようになります。この記事では、pythonとGridDBを活用して、Googleの過去1年間の株価データを分析します。

株価は毎日保存されます。そのため、日々の株価データは非常に大きくなります。データを保存するデータベースとして、大規模なデータセットをうまく扱えることで知られているGridDBを使用します。GridDBは、スケーラブルで信頼性が高いと同時に、高いパフォーマンスを保証します。GridDBは使いや

元記事を表示

[Aidemy成果物] ナスが健康か病気かを判別するアプリを作成

# 目次

[1.はじめに](#1-はじめに)
[2.実行環境](#2-実行環境)
[3.データ収集](#3-データ収集)
[4.画像の選別](#4-画像の選別)
[5.学習データの水増し](#5-学習データの水増し)
[6.学習](#6-学習)
[7.学習に使用したパラメータと精度評価結果を保存](#7-学習に使用したパラメータと精度評価結果を保存)
[8.モデルを使って新たなデータを判定してみる](#8-モデルを使って新たなデータを判定してみる)
[9.flaskとHerokuを使ってアプリ制作](#9-flaskとherokuを使ってアプリ制作)
[10.考察](#10-考察)
[11.おわりに](#11-おわりに)

# 1. はじめに
こんにちは。Aidemyさんで機械学習を勉強中でpython初心者の機械設計エンジニアです。
以前ナスを育ててた時に実りが悪く、害虫や病気にやられていたことが後から分かりました。
そこで、ナスの葉の画像から病気かどうか判別してくれる簡易アプリを作ってみました。
夢はスマート家庭菜園を自作することです。

# 2. 実行環境
+ Vis

元記事を表示

ValueError: at site “y”, invalid log_prob shape Expected [], actual [200]の解決

## 問題
pyroで変分ベイズを触っているときに以下のようなエラーが出た。
(” “と[ ]の中身はそれぞれ違うと思います。)
“`python:error
ValueError: at site “y”, invalid log_prob shape
Expected [], actual [200]
Try one of the following fixes:
– enclose the batched tensor in a with plate(…): context
– .to_event(…) the distribution being sampled
– .permute() data dimensions
“`

## 解決
あまりよくわからないけど、モデル設計の以下の部分と近似分布の形状が合っていない?っぽい。
“`python:model
pm_Y = pyro.sample(‘pm_Y’, dist.Normal(mu, sigma), obs=Y)
“`
これを以下のようにしたら解決した。
“`python:mode

元記事を表示

pandasを使ったデータの処理

# はじめに
データ分析関連の基礎を身に着けるため、本を読みながら勉強しています。
データを分析する際には便利そうなpandasについていろいろ試しながら確認したので、結果をまとめてみました。
基礎的な内容かもしれませんが、知らない事がたくさんあり、勉強になりました。

https://www.shoeisha.co.jp/book/detail/9784798158341

## pandas のデータの形 seriesとdataframe
pandasには1次元のseriesと2次元のdataframeがあります。

“` python:in
a = pd.Series([10,20,30,40])
print(a)

b = pd.DataFrame([[10,”apple”,True],
[30,”banana”,False],
[20,”orange”,True],
[40,”grape”,False]]
)
print(b)
“`

`

元記事を表示

【Python】ダウンロードフォルダから本日分のファイルをDropbox内のフォルダに一括移動

# ダウンロードフォルダから本日の日付のファイルをDropboxの指定の日付フォルダに移動するには…

## 目次

[I. 必要なPythonモジュールのimport](##-I.-必要なPythonモジュールのimport)
[II. Pathの定義](##-II.-Pathの定義)
[III. 実際のpythonコード](##-III.-実際のpythonコード)
[IV. まとめ](##-IV.-まとめ)


 メールが多すぎるので、M1 MacにThunderboltを導入してみたものの、Sparkのようにスペースキーで添付のファイルがプレビューできません。仕方がないので、いちいちダウンロードフォルダにダウンロードしてから見ることに…。しかし、それも手間なので、ダウンロードした添付ファイルを見ないという矛盾が生じてしまっています。

 メール内のファイルはDropboxの日付フォルダに入れておけば、後で「あのメールの添付ファイルはどこだっけ?」となった時に便利ではないかと思い、jupyterでコードを書いてみました。

“`
手順:
1. 予

元記事を表示

printデバッグ用のデコレータ関数を書いてみた

# 前書き
筆者はそこまで複雑ではないPythonのプログラムを書く際に、「わざわざIDEを起動するのも面倒だな」とvimやVisual Studio Codeなどのテキストエディタを使いがちだ。そして、それに似た心境として、「わざわざデバッガを使うのも面倒だな」と引数の値や関数呼び出しのチェックに、いわゆる`print`デバッグを使いがちである。

だが、余分な一文を挟むことになるので可読性を損なうし、コードのあちこちに散らかった`print`を削除していくのも面倒だ。

デバッガを使えば解決するということは横に置いて、どうにか`printデバッグ`の手軽さを維持しつつ、この問題を解決してみたいと思う。また、折角なのでもう少しデバッグ用の機能も追加したい。

# デコレータを活用する
前節で求めているものをまとめると『複数の関数に対して、その可読性を損なうことなく、容易に削除できるような形でデバッグ機能を追加したい』となる。Pythonにはこうした場合に適した機能としてデコレータというものがある。

筆者自身の復習も兼ねて、少しだけデコレータの解説を挟む。

### デコレータ
例え

元記事を表示

VOICEVOXで音声変換器を作成してみた

# 1、概要
 皆さんは、無料で使えるテキスト読み上げソフトウェアである「VOICEVOX」をご存じでしょうか。 色々なキャラクターの音声で入力したテキストを読み上げてくれるソフトです。 今回は、「VOICEVOX」を使用して音声入力あるいはキー入力に対応した音声変換器を作成してみましたので紹介します。

# 2、動作環境
 本音声変換器は、「Python Script」と「HTML」、「Javascript」で作られており、動作環境は次の通りです。
– Windows10 64-bit
– Visual Studio Code (VS Code)
– Python 3.9.4 64-bit
– Browser: Microsoft Edge or Google Chrome

# 3、デモ画面
![Voice_Converter.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/408707/fa15325d-40f3-5eb5-1e3a-cd7f02d687ed.png)

# 4、動作方法
## 4-

元記事を表示

Heroku利用方法[Windows]

# 目次
1. 事前準備
1. Herokuの利用
1. Herokuの運用

# 1. 事前準備

### Gitインストール
>[こちら](https://www.curict.com/item/60/60bfe0e.html “Gitインストール詳細”)を参考にしながら、Gitをインストールします。
私はすべてデフォルトでインストールしました。

### Herokuアカウントを作成
>[こちら](https://jp.heroku.com )から、「無料で新規登録」より作成できます。

### HerokuCLIインストール
>[こちら](https://devcenter.heroku.com/ja/articles/heroku-cli)からインストールできます。
CLI -> Command Line Interface

# 2. Herokuを利用
### Heroku環境構築
>“`bash
>heroku login # ログインページが起動するので、アカウントを入力する
>heroku create <アプリ名> # アプリを作るフォルダーを作成する
>#

元記事を表示

word2vecのあらわす意味とは何か調べてみた

[word2vec](https://radimrehurek.com/gensim/models/word2vec.html)を使うと、たとえば`王様-男+女 = 王女様`のように、単語の意味の足し算ができます。

“`python
import gensim.downloader

vectors = gensim.downloader.load(‘word2vec-google-news-300’)
vectors.most_similar(vectors[‘king’] – vectors[‘man’] + vectors[‘woman’], topn=5)
“`

“`
[(‘king’, 0.8449392318725586),
(‘queen’, 0.7300517559051514),
(‘monarch’, 0.645466148853302),
(‘princess’, 0.6156251430511475),
(‘crown_prince’, 0.5818676352500916)]
“`

しかし。私は義務教育レベルの数学は理解しているつもりです

元記事を表示

FastAPIでクエリパラメータの指定にPydanticのModelを使う

以下のように `Depends()` を使えば指定できる

“`python
class ArticleFilter(BaseModel):
tag: str | None = None
author: str | None = None
favorited: str | None = None
limit: int = 20
offset: int = 0

@router.get(“/”, response_model=MultipleArticleResponse)
async def read_articles(
filter: ArticleFilter = Depends()
):
# TODO implement
pass
“`

Swagger見てみるときちんとクエリパラメータとして指定できるようになっている

![スクリーンショット 2022-05-17 13.06.16.png](https://res.craft.do/user/full/d3c976f4-50c5-ba12-9e71-29edf789f

元記事を表示

python で マルチスレッド(サンプルプログラム)

# はじめに
pythonにおける、マルチスレッドの基本的なサンプルプログラム。
※`threading`は標準ライブラリなので、pipは必要ない

# 確認環境
Windows 10
python 3.9.4

# コード

“`python
import threading
import logging

# デバッグログ出力設定(どのスレッドの実行かがわかるので便利)
logging.basicConfig(level=logging.DEBUG, format=”%(threadName)s: %(message)s”)

# 指定最大値までの指定倍数の値を出力する
def counter(multiple=1, max=1):
for i in range(1, max + 1):
if i % multiple == 0:
logging.debug(i)

if __name__ == “__main__”:
# スレッドの定義(targetは仕様する関数を指定、argsは引数を順番に指定)
trd1

元記事を表示

Pythonでfor-else構文を使ってリトライ処理する

# はじめに
Pythonで「一定回数だけ繰り返して、うまく行けば続行、数回実行してもダメならエラーを吐く」みたいな処理を実装したいときがありました。「リトライ処理」とか言えば伝わるっぽいですが、どうすればいいのかすぐ忘れてしまうので書いておきます。

# 外部モジュールを利用する(tenancityモジュール)
リトライ処理を実装するための便利なモジュールがあるそうです。
`tenancity`や`retry`や`retrying`などがあるそうですが、`tenancity`が一番市民権を得てそうです。
ただ、私は「できるんなら外部モジュールを使わずに済むならそれにこしたことはない教」に入信しているので、説明は他の記事に任せます。

https://github.com/jd/tenacity

https://zenn.dev/taroman_zenn/articles/dd0b33a3a37d1e

https://ohke.hateblo.jp/entry/2020/11/21/230000

# for-else構文とtry-except構文を組み合わせる
try-exce

元記事を表示

【Python】Seleniumを使わずにInstagramのフォロワーを全件取得する

# 初めに
 Instagramのフォロワーを全件取得する際、いくつか候補があります。例えば別のサイトではSeleniumを使用しています。

https://tachitechi.com/%E3%80%902020%E5%B9%B4%E3%80%91instagram%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%AE%E3%83%95%E3%82%A9%E3%83%AD%E3%83%AF%E3%83%BC%E6%83%85%E5%A0%B1%E3%82%92%E8%87%AA%E5%8B%95%E3%81%A7/

 Instagramのフォロワーの表示はフレキシブルになっているため、画面上では一度で取得できず、スクロールする必要があるため、時間がかかってしまいます。
# Instaloaderとは
 こちらを解決するのが、InstaloaderというPythonライブラリです。[以前の記事](https://qiita.com/fishyamamoto/items/3bc909051d13207f885d)でも記載しましたが

元記事を表示

Django – Hello Worldまで

## 環境
Mac M1
python 3.8

## インストール

“`
pip install django
“`

## プロジェクト作成
必要ファイルが生成されるので、プロジェクトを入れたいディレクトリで以下コマンドを実行

“`
django-admin startproject プロジェクト名
“`

## runserver

“`
python manage.py runserver
“`
ローカルのアドレスが表示されるのでアクセス
以下の画面が表示できればOK
![スクリーンショット 2022-05-17 8.28.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/482906/804748d6-439d-523d-5fc1-cad89ceb907d.png)

開発用サーバーを停める場合は、【 control + c 】で停止

## setting.pyの変更
### 107行目くらいをjaに変更

“`diff_python
– LANGUAGE_CODE =

元記事を表示

データサイエンスで便利なやつ(随時更新)

# Pandas.DataFrame.isin()
条件に合致するデータを探すときに重宝。
①文字列があるかの確認(Trueか否か)。
![20220517-074840.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001770/23726fef-1b1e-5a1a-17d8-3c4b3dc301f3.jpeg)

②複数条件で、データの抽出
![20220517-074640.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1001770/d1287070-a2bf-920e-cd88-1a657bb0d49b.jpeg)

# pandas.DataFrame.groupby()
これを使うことで、特定の列を軸とした集計が可能になる。ここでは、性別とidを軸として集計。![20220517-075438.jpg](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

OTHERカテゴリの最新記事