- 1. pyenvでPythonのversionが切り替わらない!
- 2. シェルコマンドをPythonから実行して結果をリアルタイムに標準出力に出す方法
- 3. Python で非 async な IO 処理を並列したい場合
- 4. Teamsのステータスを自動で変更する
- 5. ぼくのかんがえたさいきょうのGithub Actionsで複数のCloudFormationファイルをCI/CDする方法
- 6. GoogleColabでweb上のGIFを画像に分解して保存
- 7. 簡単にWeb APIを使ってラーメン屋の情報を出そう!!
- 8. 【Flask】 import Error DLL load failed while importing _sqlite3
- 9. 初心者がRaspberry Pi4 Bを購入後してSlackbotでカメラ撮影するまで
- 10. DjangoでUnityを動かしたい
- 11. pyenv install xxx が失敗する(Killed: 9)
- 12. pandasデータフレーム特定列に対し、条件別で文字列から数値を抽出
- 13. ABC 069 B – i18nをPython3で解く
- 14. YOLOv5をGoogleColaboratoryで動かして静止画と動画の物体検出をしてみた
- 15. Python: VSCode: 関数名をスネークケース(小文字と_で構成)に変換するショートカットを設定する
- 16. [Python] UserWarning: X has feature names・・・の対処法
- 17. 【一分理解】pythonでexcelを操作しよう
- 18. 【NVIDIA RAPIDS】cuDFライブラリを使ってみた
- 19. ABC 085 A – Already 2018をPython3で解く
- 20. ABC001メモ
pyenvでPythonのversionが切り替わらない!
## 状況
Homebrewを使用して、pyenvをインストールした後、
pyenvでPythonの3.6.5をインストールしました。“`:ターミナル
% python -V
Python 2.2.5% pyenv global 3.6.5
% pyenv versions
system
* 3.6.5 (set by /Users/user/.pyenv/version)% python -V
Python 2.2.5
“`
pyenvでバージョン3.6.5をglobalで設定してもバージョンは2.2.5を参照しており
pyenvを使ったPythonのバージョンを切り替えることができていません。## 対処法: シンボリックリンクの再関連付け
下記ディレクトリの中にpython-buildがあるか見る
“`:ターミナル
/usr/local/Cellar/pyenv/2.2.5/bin/
“`
もしあれば、下記コマンドで再度関連づけしてみる
“`
% brew unlink pyenv && brew link pyenv
Unlinking /us
シェルコマンドをPythonから実行して結果をリアルタイムに標準出力に出す方法
# 概要
Python の [subprocess](https://docs.python.org/ja/3.9/library/subprocess.html) を使うことでシェルコマンドを実行可能だが、実行結果をリアルタイムに標準出力へとパイプする方法(かつエラーハンドリングが正しく行われる方法)がわかりづらいのでメモしておく。
ちなみに `subprocess.run` ではリアルタイムなパイプはできなかった。
# 方法
“`py
import subprocess
import sys
import tempfiledef run_shell(cmd):
print(f’cmd: {cmd}’)
with subprocess.Popen(cmd, encoding=’UTF-8′, stdout=subprocess.PIPE, stderr=subprocess.PIPE) as p:
for line in p.stdout:
sys.stdout.write(line)
p.wa
Python で非 async な IO 処理を並列したい場合
# 概要
Python で並列処理したい場合は [asyncio](https://docs.python.org/ja/3.9/library/asyncio.html) が便利だが、EventLoop が設定しづらかったり、IO自体が async 対応してなかったり(つまりIO終わるまで制御を握ってしまう)などの場合、純粋に並列処理したい場合がある。
その場合の方法をメモしておく。# 方法
“`py
from concurrent.futures import ThreadPoolExecutordef main():
target_file_list = [
‘file1.dat’,
‘file2.dat’,
]
# 平行して呼び出し
with ThreadPoolExecutor() as executor:
threads = [
executor.submit(
lambda: hoge.some_io_process(tar
Teamsのステータスを自動で変更する
# 困っていたこと
集中力のゴールデンタイムは誰にも邪魔されたくないのに、チャットで「ちょっといいですか?」とメンションが入ると集中できない。
Teamsのステータスを**応答不可**にすれば通知に気づかなくて済むのですが、
こまめにステータスを切り替えることを**忘れがち**。#### 朝のこの時間帯だけはなんとしても守りたい。
というわけで毎日同じ時間になれば、Teamsのステータスを変えるスクリプトを作ってみた。
## 環境
Windows10
Teams
Python3.10## まずは手作業でやってみる
### 1 Teamsを起動する
Windowsキーを押してから、「teams」と打てばこんな感じになる。
![2-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/75217/8b648238-184d-6f01-2dec-880931253f41.png)
この後Enterキー叩けば起動される。(起動済みの場合は最前面にくる)
### 2 Teamsの検索に移動
ぼくのかんがえたさいきょうのGithub Actionsで複数のCloudFormationファイルをCI/CDする方法
terraformになれてたぼくがCloudFormation(CFn)で立ち上げたプロダクトにアサインされてCI/CDをしようと思った時に考えたさいきょうの方法です。
(如何せんCFn初心者なので、全然最強でない可能性ありますがご了承ください。。)### やりたかったこと
– dev(development),staging(stg),production(prd)など複数環境に手軽にデプロイ(prdはさすがに手軽すぎるのは危険なので、チェック機構は欲しい)
– 手軽にデプロイしたいが、どういう変更が入るか(`terraform`で言うところの`terraform plan`の結果)は知りたい
– 色々カスタマイズできるようにしておきたい### 実現したこと
> – 色々カスタマイズできるようにしておきたい
下記公式のactionがありましたが、リポジトリがアーカイブされており2年前を最後にメンテナンスされてないようだったので使うことを断念しました…
>AWS CloudFormation “Deploy CloudFormation Stack” Action f
GoogleColabでweb上のGIFを画像に分解して保存
# コード
GoogleColabのVM内に画像を保存する関係で、大きいサイズのファイルを扱うのは避ける。
また、インスタンスが切れてしまえば保存したデータは全てリセットされる。画像を保存するディレクトリをVM上に作成
“`python
import os
path_content = ‘/content/img/’ #VM上のディレクトリを指定
if not os.path.exists(path_content):
os.mkdir(path_content)
“`Googleの画像検索などで画像を開いたときに、”画像アドレスをコピー”したものを`url`に入れる。
“`python
import requests
from PIL import Image, ImageSequence
import io
import numpy as np
url = “” #保存したい画像の画像アドレス
fname_img = “img” #保存したい画像のファイル名
fname_imgext = “png” #保存したい画像の拡張子response = reque
簡単にWeb APIを使ってラーメン屋の情報を出そう!!
# WebAPIを使って街中のラーメン屋の情報を取得してみる。
## 環境
OS:Windows 10
言語:Python 3.10
対象WebAPl:ホットペッパーグルメリサーチAPI
### 今回使うモジュールは、
・Json,requests,random### 流れとして
1.requestsでラーメン屋の情報を取得する。
2.Jsonファイルを辞書として読み込ませる。
3.ランダムで一軒表示させる。# まず1,2をやってみる。
“`
import json
import requestsgourmet=’http://webservice.recruit.co.jp/
【Flask】 import Error DLL load failed while importing _sqlite3
Flaskのチュートリアルをやっていて、sqlite3を使用する際にタイトルのエラーが出た際に解決した方法です
# 開発環境
・Windows11
・VSCode
・conda 4.11.0
・Python 3.9.7# 解決手順
C:\Users\ユーザー名\\.conda\envs\環境名\Library\bin
を、windowsのpathに通す。
初心者がRaspberry Pi4 Bを購入後してSlackbotでカメラ撮影するまで
# 0. はじめに
大学院の学生企画でラズパイを触る機会があり、結構面白いことがやれると判明。大学内で使えるslackbotを構築したく、ラズパイを購入しました。やりたかったことは、ラズパイのカメラモジュールを使って、slack上で写真撮影してくれるbotづくり。実験室の機器や生体試料をたまに観察したいときに使う予定です。成果物はこんな感じ。特定のメッセージに反応して、撮影→slackへの投稿まで全部やってくれる。
|![名称未設定 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/269013/febe139f-7d5b-0d81-6fc1-f4bf5e541201.png)
|:-:|正直何番煎じだよっていう感じなので、該当の記事はありました。しかし多くの記事が古く、様々な方法が混在しているので最新のやり方を収集するのに苦労しました。備忘録として、そして何より「これから似たようなことやるよ!」っていう人に対して少しでも役に立たせられるよう、記事にします。
購入したラズパイは[Raspbe
DjangoでUnityを動かしたい
# 概要
Unityから吐き出したWebGLは様々な形で利用することができ、
例えばDjangoのようなフルスタックなWebアプリケーションフレームワーク内でも動かすことができます。Djangoのチュートリアルを参考に立ち上げたアプリケーションの中でWebGLを動かしてみたのでこれをメモします。
# Unityから任意のプロジェクトを吐き出す
前提としてunity内で問題なく動かせるプロジェクトを用意します。
WebGLとして出力しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609338/68ab0fe4-2fec-3cb3-770a-d69f5aa34fe6.png)# シンプルに静的なサイトとして立ち上げてみる
例えばNodejs(V8)のシンプルなサーバー`http-server`を使ってみると、
と表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaw
pyenv install xxx が失敗する(Killed: 9)
## 環境
– macOS 11.6, 12.3(arm64)
– homebrew
– pyenv 2.2.5
– gcc Apple clang version 13.1.6 (clang-1316.0.21.2)homebrewのバージョンはメモ取ってませんでした。ごめんなさい。
## 事象
`pyenv install 3.10.3`としてインストールを試みたところ、ビルドの途中で失敗した。
`/bin/sh: line 1: 24309 Killed: 9 …(略)… make: *** [sharedmods] Error 137`
ビルドの途中で強制終了されているみたい。## 解決方法
***homebrewをインストールし直す。***
pyenvリポジトリに[issue](https://github.com/pyenv/pyenv/issues/2289)が立っていて、このissueに「homebrewを入れ直したら直った」とのコメントがあった。
試したところ、なぜか分からないが本当に直った。
homebrewのインストール/アンインストールスクリプト
pandasデータフレーム特定列に対し、条件別で文字列から数値を抽出
↓コンペのデータ前処理で、処理時間のかかるコードを書いてしまったため、反省の意味を込めて共有。。
https://www.nishika.com/competitions/25/summary# 1. 対象となる処理:
DataFrameのobject型pandas DataFrameにおいて、Object型(文字列型)である特定列から、数値のみ取り出す。例: 和暦(平成20年, 令和1年)を、西暦(2008, 2019)のように変換。
# 2. 対象データのイメージ
以下です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/194473/cd864483-1e9b-18bb-3fd8-950abeda2be8.png)# 3. 解決法
以下流れのコードを書きました。
70万行のデータですが、概算2秒弱ほどで処理終了いたしました。
変更前(4.に記載)のコードは10min(600秒)ほどかかりました。1. 対象列(column)のuniqueな値をキー、
和暦と西
ABC 069 B – i18nをPython3で解く
# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。# [ABC 069 B – i18n](https://atcoder.jp/contests/abc069/tasks/abc069_b)
**【問題文】**
`internationalization` という英単語は、`i18n` と略されることがあります。 これは、先頭文字 i と末尾文字 n の間に 18 文字が挟まっていることに由来します。
長さ 3 以上の英小文字のみからなる文字列 s が与えられます。 同様の規則によって s を略してください。**【制約】**
– 3≤∣s∣≤100 (ただ
YOLOv5をGoogleColaboratoryで動かして静止画と動画の物体検出をしてみた
## 背景
会社の友人向けにハンズオンでのAI体験会を開催することになりました。画像データを扱うことが視覚的に面白いと思ったのと、環境構築で苦労したくなかったので、YOLOv5をGoogleColaboratoryで動かして、静止画と動画の物体検出にトライしてみました。## 参考サイト
以下のサイトを参考にさせていただきました。
https://laboratory.kazuuu.net/i-used-yolo-v5-with-google-colaboratory/
https://qiita.com/shoku-pan/items/31bf3c975b73db153121## 解析ファイルの準備
まず、画像と動画を準備して、それぞれtest.jpg、test.mp4として保存します。ファイル形式はソースコードを修正すれば他の形式でも問題ありませんが、今回はこのファイル形式で進めます。
なお、今回は下記手法・サイトで見つけた著作権フリーの画像で実行しています。画像:https://ferret-plus.com/337
動画:https://pixabay.com/ja/
Python: VSCode: 関数名をスネークケース(小文字と_で構成)に変換するショートカットを設定する
Pyhonの関数名とか変数名の付け方って、スネークケース(例: get_user_info)がデファクトスタンダードっぽくて、オブジェクト指向言語メインだった身には新鮮でした。あっちはキャメルケース(例: getUserInfo)メインなので。
やはりみんな混同することがあるようで、前任者から引き継いだPythonコードがキャメルケースだらけだったりします。
リファクタリングする際に変数名とかをスネークケースにしようと思うと結構ハードワークなので、VSCodeのショートカットを活用することにしました。
# VSCodeのキーボードショートカット設定画面を開きます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/553715/61fae597-f064-45c1-a983-613ee1532971.png)
# 設定キーワードに「editor.action.」と入力して検索します
![image.png](https://qiita-image-store.s3.ap-north
[Python] UserWarning: X has feature names・・・の対処法
scikit-learnでpredictを行う際に出力された警告に対し、どのように処理を行ったかを共有させていただきます。誰かのご参考になれば幸いです。
## fit と predict の引数の型を確認しましょう
結論から申し上げますと、引数の型が異なっているので警告が出ています。警告内容:UserWarning: X has feature names, but DecisionTreeClassifier was fitted without feature names
前提処理
1.訓練データとテストデータを分ける
“`Python
from sklearn.model_selection import train_test_split# 引数のx,yはデータフレーム型
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.2,random_state = 0)
“`
2.fitの引数は「データフレーム型」
“`Python
from sklearn import treemo
【一分理解】pythonでexcelを操作しよう
## pythonでexcel操作をしよう!
### こんな時に使える
・大量のExcelを管理するとき
・excelに保存したデータでpython動かしたい時#### 流れ
excelファイルを読み込む
“`python
file = openpyxl.load_workbook(“ファイルのパス”)
“`中身をいじる
●シート操作
“`python
sheet = file[‘Sheet1′]file.create_sheet() # シートを新規追加
file.create_sheet(index=0, title=’new_sheet’) # 指定の場所にシートを新規追加
file.create_sheet(index=2, title=’new2_sheet’) # 指定の場所(2番目)に名前を付けてシートを追加
del file[‘new_sheet’]
“`●セル操作
“`python
# A1セルを取得
cell_a1 = sheet[‘A1’].value# 各セルに
【NVIDIA RAPIDS】cuDFライブラリを使ってみた
# 内容
[NVIDIA RAPIDS](https://developer.nvidia.com/rapids)が提供するGPU DataFrameライブラリ [cuDF](https://docs.rapids.ai/api/cudf/stable/)を使ってみました。
[Pandas](https://pandas.pydata.org/docs/)と似たような操作でデータの前処理/加工をGPUで行うことができるみたいです。
CPUで処理するよりも早いとの事で気になったので入れて試してみました。# 実行環境
– OS
– Windows 10 Home 64bit
– WSL2 Ubuntu 20.04
– Docker 20.10.10
– CPU
– Intel Core i7-7820X
– Memory
– DDR4-3200MHz 96GB
– GPU
– NVIDIA GeForce RTX3060Ti# cuDFについて
– pipでは提供されていない
– [condaで提供](https:/
ABC 085 A – Already 2018をPython3で解く
# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。# [ABC 085 A – Already 2018](https://atcoder.jp/contests/abc085/tasks/abc085_a)
**【問題文】**
2018 年 1 月某日、高木さんは書類を書いています。書類には、その日の日付を `yyyy/mm/dd` という形式で書き込む欄があります。例えば、2018 年 1 月 23 日は `2018/01/23` となります。書類を書き終えたあと、高木さんは日付欄の先頭に誤って `2017` と書いてしまっていたことに気がつきました。高
ABC001メモ
# ABC001 メモ
## [A – 積雪深差](https://atcoder.jp/contests/abc001/tasks/abc001_1)問題文通り、答えは$H_1-H_2$。
“`python:001A.py
H_1 = int(input())
H_2 = int(input())ans = H_1 – H_2
print(ans)
“`## [B – 視程の通報](https://atcoder.jp/contests/abc001/tasks/abc001_2)
入力は単位がメートル(m)で与えられるが、判定条件は単位がkmで与えられているため、少々複雑になる。
今回は判定条件をmに統一して計算した。“`python:001B.py
m = int(input())if m < 100: VV = '00' elif m <= 5000: if len(str(m)) == 4: VV = str(m)[:2] else: VV = '0' + str(m)[0] e