- 1. GoogleColaboratoryのファイルアップロードと削除
- 2. class内のdelattr(self,’xxxx’)では自身のプロパティを消してくれない罠
- 3. pandas x スクレイピングで時系列データ分析を試す
- 4. pipenvの新しいバージョンの問題(>2022.8.5)
- 5. PythonでNextCloud(CalDAV)のカレンダーの予定を取得する
- 6. 「関数グラフソフトGRAPES」の正五角形をpythonのezdxfを使ってDXF変換した。
- 7. Windows環境へのAnacondaインストール2
- 8. Windows環境へのAnacondaインストール
- 9. pandasのDataFrameからリストで指定した複数行を取得する
- 10. AIで遊べるデモサイト「AI World3」
- 11. ラズパイとAWS IoTを使った見守りシステム自作で学んだこと(2)見守りProjectの設計(名前の設定)
- 12. PythonでFusion360でexportしたstlファイルの単位をmm→mに変換する
- 13. Pythonで3次元kd木(kd-tree)探索
- 14. Flask + uwsgi + NginxでAPIを実行する
- 15. 吸着理論-吸着等圧線をプロットしてみたよ-
- 16. FastAPI爆速チュートリアル 導入からテストの作り方まで
- 17. テーブルデータを RankNet でランキング学習
- 18. 駆け出しプログラマのAtCoder日記 1
- 19. python + OpenCVで画像を加工⑥ 動画の顔を検出してモザイクをかける→動画を保存
- 20. Twitterに対してtweepyを使って、Pythonでツィートする
GoogleColaboratoryのファイルアップロードと削除
# GoogleColaboratory
機械学習の強い味方、GoogleColaboratory。
インストールが不要ですぐにPythonなどの機械学習の環境を整えることが出来る。
ローカル環境が整っていない時などに使うとめっちゃ便利。
けど…## ファイルの削除&アップロードが面倒
やや面倒臭いのが、ファイル管理。
デフォルトの機能だと、以下の制限があります。
1. フォルダの削除は中が空でないと出来ない
1. ファイルの削除は一件ずつ
1. ファイルのアップロードも一件ずつフォルダ内のファイルを一個一個消して空にしてからフォルダを削除?
100件以上もあるファイルを一件ずつあげる?やってられるか!## プログラムで削除&アップロード
ということで、一括削除&アップロードをプログラムにしてしまえばいいのではと思い至る。
まずは削除。
“`python:GoogleColab:フォルダ削除
import shutil
shutil.rmtree(‘/content/削除フォルダ名’)
“`
これで中身ごと一掃できました。
次はアップロード。
ローカルのこの構造
class内のdelattr(self,’xxxx’)では自身のプロパティを消してくれない罠
今回は軽い発見があったので、備忘録として書き込みます。
以下のコードを見ていて気づかなかったのだが、
このdelattrでは、プロパティは消えてくれない。“`python
class Hoge(object):huga = ‘hugahuga’
def del_propaty(self):
delattr(self, ‘huga’)>>> hoge = Hoge()
>>> print(getattr(hoge,’huga’))
hugahuga
>>> hoge.del_propaty()Traceback (most recent call last):
File “/usr/lib/python3.9/code.py”, line 90, in runcode
exec(code, self.locals)
File ““, line 1, in
File ““, line 5, in del_propaty
AttributeError: huga
pandas x スクレイピングで時系列データ分析を試す
## 今年の夏熱くない?
いつも私はエアコンなし・扇風機一本で夏を乗り切る男なのですが、
今年は暑さに耐え切れずエアコンを使用しています。
今年の夏の暑さが異常なのか、年を取って体力が落ちたのか、調査をしたいと思います。## 調査方法
7月から8月までの平均気温と平均湿度を年ごとに折れ線グラフでプロットします。
データは気象庁のデータをスクレイピングすることで取得します。## 分析用dataframeの作成
### 分析対象日のdatetimeindexを作成する
~~~:python
index = pd.date_range(start=”2022-07-01″, end=”2022-08-31″)
for i in range(2):
# 一年分ずらす
y_delta = index – pd.DateOffset(years=1)
index = index.union(y_delta)
index
~~~結果
![output_1.PNG](https://qiita-image-store.s3.ap-northeast-1.a
pipenvの新しいバージョンの問題(>2022.8.5)
# 問題
* GWの後にソースコードが何も修正しなくて、docker buildが失敗になってしまう
* 現象
“`
Traceback (most recent call last):
File “/backend/./app/wsgi.py”, line 12, in
from django.core.wsgi import get_wsgi_application
ModuleNotFoundError: No module named ‘django’
unable to load app 0 (mountpoint=”) (callable not found or import error)
“`# 分析
* docker buildのログを確認してpipenvのバージョンが更新されてしまう
* GW前のバージョン: 2022.8.5
* GW後のバージョン: 2022.8.19* githubを確認してGW中にissueがいっぱいある
* https://github.com/pypa/pipenv/issues
PythonでNextCloud(CalDAV)のカレンダーの予定を取得する
# 概要
初めての記事投稿になります。この記事ではPythonでNextCloudのカレンダーの予定を取得する方法を載せようと思います。
自分が試そうと思ったときに日本語の記事が見つからなかったため、ここに残しておこうと思います。
動機としては研究室のカレンダーがNextCloudを使用しており、それを手軽に見れるようにしたいなといった感じです。
ThunderBirdやIOSのカレンダーにCalDAVをインポートすれば表示されるのですが、据え置きのディスプレイを見るだけで今日の予定が知ることができればもっといいなと思いました。# 使用するモジュール
今回使用するPythonモジュールはcaldavとdatetimeです。caldavをインストールしていない方はまずインストールをしましょう。
“`
pip install caldav
“`caldavのドキュメントは[こちら](https://caldav.readthedocs.io/en/latest/)を参照。
次にPythonでインポートしましょう。
“`
import caldav
import
「関数グラフソフトGRAPES」の正五角形をpythonのezdxfを使ってDXF変換した。
ソースは、約300行長文です。
正五角形のみです。![png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/1121d8e4-6546-6847-d023-039491624fbb.png)
# pythonで(ezdxf)
“`python
import ezdxf
from sympy import *
def myTextInit(myText):
GPS_List = myText.splitlines()
del GPS_List[0]
joined = ‘\n’.join(GPS_List)
return joined
def myTextIndex(myText,n):
GPS_List = myText.splitlines()
return GPS_List[n-1]
GPS_Text=”””
Grapes/win 2.9
[Don’t Edit] 3.14
———-
BGstretchOn BGfile
Windows環境へのAnacondaインストール2
Pythonのパッケージ管理に必要だったため、
AnacondaをWindows 64bit環境へインストールしました。1.Anacondaからインストーラーをダウンロード
https://repo.anaconda.com/
image.png2.Anaconda Installersをクリックしダウンロード
https://repo.anaconda.com/archive/Anaconda3-2022.05-Windows-x86_64.exe
3.インストール
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/7e3fef87-89c6-c114-3b16-e2751915ed17.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/e22f9cda-e37b-a210-cae8-ce7303f63785.png)
![image
Windows環境へのAnacondaインストール
Pythonのパッケージ管理に必要だったため、
AnacondaをWindows 64bit環境へインストールしました。1.Anacondaからインストーラーをダウンロード
https://repo.anaconda.com/
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/435ee8f0-cc71-0387-cdd8-87caa4b8ae0d.png)2.Anaconda Installersをクリック
https://repo.anaconda.com/archive/記載時点での最新バージョン(Windows 64bit)
Anaconda3-5.3.1-Windows-x86_64.exe
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653035/c9fd9315-a5b7-8ad6-03f4-0f6c007db082.png)3.インストーラ―
pandasのDataFrameからリストで指定した複数行を取得する
pandasのDataFrameからある特定の複数行をDataFrameのまま取得したい事があったのですが、少しハマったので備忘録として残しておこうと思います。
# 結論
DataFrame“`df“`からリスト“`rows“`の値で指定した行を取得する場合は“`df.iloc[rows]“`とすれば良い。# NumPyの場合
まず、NumPyの場合を見てみます。
次の配列を考えます。“`python
import numpy as np
arr = np.arange(100).reshape(-1,10)
print(arr)
“`
“`python:結果
[[ 0 1 2 3 4 5 6 7 8 9]
[10 11 12 13 14 15 16 17 18 19]
[20 21 22 23 24 25 26 27 28 29]
[30 31 32 33 34 35 36 37 38 39]
[40 41 42 43 44 45 46 47 48 49]
[50 51 52 53 54 55 56 57 58 59]
[60
AIで遊べるデモサイト「AI World3」
## はじめに
以前公開したAIのデモサイト「[AI World2](https://qiita.com/jw-automation/items/3d8e8510f22ae72e3d2e)」に、7つのデモを追加し、計20デモになりました。スマホでも遊べるので、良かったら触ってみて下さい。![jw-automation.com_aiworld.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431306/eabc253c-a17a-8992-3dc1-163e5cf3daa1.png)
■サイトリンク
[AI World](https://jw-automation.com/aiworld)■環境
Python, AWS(Lightsail), Flask, Docker## デモ一覧
以前公開したものも含めた、デモの一覧は以下になります。|#|タイトル|内容|利用モデル
|:-|:-|:-|:-|
|1|Digit Recognition|異常検知付き手書き文字認識|
- De
ラズパイとAWS IoTを使った見守りシステム自作で学んだこと(2)見守りProjectの設計(名前の設定)
[ラズパイとAWS IoTを使った見守りシステム自作で学んだこと(1)概要の説明](https://qiita.com/nsaito9628/items/ff9743e471592f38a463)からの続きです。今回も概要説明の続きになります。
本稿では、この「見守りProject」の設計書を作ります。
大上段で設計と言いましたが大げさなものではなく
* Project
* モノ(ラズパイ)
* 録画したmp4をuploadするS3のBucketの3種類、最大で6個の名前を決めて、cliの対話実行でdeployに必要な設定ファイルを出力します。
以下、若干分かり難い説明になりますが、やることは**最大6個の名前を決めて出力するだけ**です。
## Projectで使う名前を決める
[リポジトリー](https://github.com/nsaito9628/Monitoring-system-with-Raspberry-Pi-and-AWS)のProjectを実装するのに必要なパラメーター(名前)は次の3種類です。
* Project名
* モノの名前(ラズパイの名前)
PythonでFusion360でexportしたstlファイルの単位をmm→mに変換する
# 問題点
Gazebo上で自分で作ったオブジェクトを出現させるときはstlファイルを読み込ませる必要がある。
Fusion360でstlファイルを出力する時はmm単位、ROSやGazeboはm単位であるため、mmからmに変換する必要があるが、フリーソフトを使ったり、Windowsにしか対応してない方法が多かったので、Ubuntu単体で変換できる方法を模索したところ、Pythonのnumpy-stlライブラリを使うことで解決できた。# インストール
“`
pip install numpy-stl
“`# スクリプト
“`pythonfrom stl import mesh
# 変換したいstlファイル名
file_name = “sample.stl”
#出力ファイル名
output_file_name = “sample_m.stl”mesh = mesh.Mesh.from_file(filename=file_name)
# 0.001倍することでmmからmに変換
mesh.x = mesh.x * 0.001
mesh.y = mesh.y * 0.
Pythonで3次元kd木(kd-tree)探索
Unityで点群データの効率的な探索をするために3次元のkd木探索法が使えるかなと思ったのですが、C#で書く前にグラフを出力して確認しながらアルゴリズムを理解した方が良いと思ったので一度Pythonで実装してみます。
….簡単に実装したいなら既にscipyなどのライブラリで提供されているのでそちらを使うと良いと思います。
+ [SciPyのKDTreeを試す](https://emotionexplorer.blog.fc2.com/blog-entry-86.html)# 参考
以下の@fj-thさんの記事を読んでいることを前提とします。
アルゴリズムの説明とC言語でkd-treeの実装をしています。https://qiita.com/fj-th/items/1bb2dc39f3088549ad6e
# 2次元のkd木
3次元のkd木は、2次元のkd木を拡張するれば良いので、まず@fj-thさんの[C言語のkd-木(リポジトリ)](https://github.com/fj-th/kd-tree-C-language-)をPythonに書き換えます。
ただPython
Flask + uwsgi + NginxでAPIを実行する
# やりたいこと
– Flask + uwsgi + Nginxの構成でAPIを動作させる
## 環境・MWのバージョン
– Ubuntu20.04
– Python 3.8.10
– Flask 1.0.2
– Nginx 1.18.0
– uwsgi 2.0.20## 今回使用する技術の概要
## Flaskとは
Pythonの軽量フレームワークです。機能が少ない分リリース用のアーティファクトが軽量になる、習得が簡単であるなどのメリットがあります。
Djangoが中規模以上の開発に適しているのに対してFlaskは小規模な開発に向いています。(機能が限られたAPIをサブシステムとして構築する際に選択肢になるでしょう。)
## uwsgiとは
Pythonのアプリケーションを動作させるためのアプリケーションサーバ用MWです。
機能が豊富で動作が速いことがメリットとして挙げられます。uwsgiを使うにあたってはWSGIを理解しておく必要があります。
WSGIとは(Web Server GateWay Interface)の略で、Webサーバとアプリケーションサ
吸着理論-吸着等圧線をプロットしてみたよ-
# Langmuirの吸着等温式
温度一定条件下での固体表面への吸着物質の吸着量の圧力依存性に関する理論。
導出せずに紹介だけします。
Langumirの吸着等温式は以下のような条件が成り立つときのモデルである。– 一つの吸着サイトには1分子のみ吸着する(単相吸着)
$ \theta = \frac{abp}{1 + ap}$
ここで$ \theta$, $ a$, $ b$, $ p$はそれぞれサイトの被覆率(0~1)、平衡定数、飽和吸着量、圧力[p]となります。
# 吸着-脱着方程式
Langumirの吸着等温式の条件で温度、圧力が可変の場合でも成り立つ吸着式は以下のようになります。
これも導出大変そうなんでやりません。紹介です。absorption-desorption equilibriumって検索するといい解説あるかもしれません。僕がその解説読みたいです。$ \theta = \frac{b(T)p}{1 + b(T)p}$
$ b(T) = \frac{s_0 exp(\frac{q}{RT})}{v \sigma \sqrt{2 \pi m RT}} $
FastAPI爆速チュートリアル 導入からテストの作り方まで
# 目的
爆速でWEBAPIを作れると巷で噂のFastAPIの導入からテストの作り方までを爆速で知る。
# 背景
最近Python関連のコードを書くことがあるが、FlaskやFastAPI、DjangoなどのWEB開発フレームワークの名前をよく目にしており、実際に使ったことがなかったので、お話のネタ程度に試してみた。
FastAPIを選んだ理由はとして、SwaggerUIの表示やテストが簡易的だったこと。
最初はFlaskを試していたが、SwaggerUIを表示するためにライブラリを別で入れないといけなく、エラーが出てなんか失敗してしまったが、FastAPIは特に何もせずとも表示ができたため、それも含めたトータル的な敷居の低さから選択。~~Djangoは一度も触れず、検索すらしていなかった。ごめん。~~# FastAPIとは
Python3.6以降でAPIを構築するための爆速なWEBフレームワークです。
https://fastapi.tiangolo.com/ja/
https://github.com/tiangolo/fastapi
ライセンスはMITライセ
テーブルデータを RankNet でランキング学習
PyTorch を Google Colaboratory 上で使って RankNet っぽいランキング学習を行なってみます。ランキング学習は、目的変数の値を直接使うことができず、その大小関係しか分からない場合に使える方法です(浅い理解)。今回は特別なライブラリを使うことなく PyTorch だけで実装します。
“`python
import torch
device = ‘cuda’ if torch.cuda.is_available() else ‘cpu’
device
“`‘cuda’
# テーブルデータで RankNet
ランキング学習は画像解析を題材とする例が多いと思いますが、ここでは簡単な MLP (Multi-Layer Perceptron) を使って、テーブルデータを取り扱いたいと思います。
“`python
class MLP(torch.nn.Module):
def __init__(self, n_input, n_hidden, n_output):
super(MLP, self).__i
駆け出しプログラマのAtCoder日記 1
# はじめに
はじめまして、SLOTREと申します。
最近、pythonのお勉強をはじめたばかりの駆け出し君です。
作りたいものもあるけれど、まずは基礎力をつけるために・アルゴリズムを理解するためにAtcoderで勉強をはじめてみました。
ぜひ、こうしたら良いよ!ってアドバイスあれば教えていただけるとありがたいです。# やってみた問題
今日は初歩の初歩からやってみると言うことで、りんごさんが何個買えるかな?って感じの問題をやってみました!問題文 [A-Apple](https://atcoder.jp/contests/abc265/tasks/abc265_a)
果物屋さんでりんごが売られています。
あなたは次の操作を好きな順で好きなだけ繰り返すことができます。X 円を払ってりんごを 1 個手に入れる。
Y 円を払ってりんごを 3 個手に入れる。
りんごをちょうど N 個手に入れるには最低何円必要ですか?# コード
まずは、僕が書いたコードです。
“`python3:Apple.py
import numpy as np
#—-変数定義—-
numbers
python + OpenCVで画像を加工⑥ 動画の顔を検出してモザイクをかける→動画を保存
[前回の記事](https://qiita.com/HIROKOBA/items/3b917b07497b319c8104)で動画の中から人の顔を検出してモザイクをかけて表示することをやりました。
その後、動画を保存しようとする際の設定が複雑であることが分かったので、自分用の備忘録もかねてまとめておこうと思います。
最終的なコードはこちらになります。
“`python
import cv2def mosaic(img, mosaic_rate):
w = img.shape[1]
h = img.shape[0]
img = cv2.resize(img, (int(w * mosaic_rate), int(h * mosaic_rate)))
img = cv2.resize(img, (w, h), interpolation = cv2.INTER_NEAREST)
return imgcascade_file= cv2.data.haarcascades + ‘haarcascade_frontalface_def
Twitterに対してtweepyを使って、Pythonでツィートする
# はじめに
Twitterに対して、tweepyというpythonのモジュールを使って、ツィートする方法を説明します。
初めてのQitaの投稿になります。
これから少しずつでも投稿して、技術力を伸ばしていけたらと思います。## tweepy をインストールする
“`
pip install tweepy
“`
## サンプルコード
“`python:tweet.py
import tweepydef twitter_bot() -> None:
# XXXXXXXXXXXXXXXXXXには自分のコードを設定してください
ck = ‘XXXXXXXXXXXXXXXXXX’
cs = ‘XXXXXXXXXXXXXXXXXX’
at = ‘XXXXXXXXXXXXXXXXXX’
ats = ‘XXXXXXXXXXXXXXXXXX’client = tweepy.Client(consumer_key=ck, consumer_secret=cs,
access_toke