- 1. ABC 069 B – i18nをPython3で解く
- 2. YOLOv5をGoogleColaboratoryで動かして静止画と動画の物体検出をしてみた
- 3. Python: VSCode: 関数名をスネークケース(小文字と_で構成)に変換するショートカットを設定する
- 4. [Python] UserWarning: X has feature names・・・の対処法
- 5. 【一分理解】pythonでexcelを操作しよう
- 6. 【NVIDIA RAPIDS】cuDFライブラリを使ってみた
- 7. ABC 085 A – Already 2018をPython3で解く
- 8. ABC001メモ
- 9. python3 gzipファイルを読み込みforで回してListに格納する
- 10. Python 複数スレッドから同時アクセスされたときに前回のアクセス時間よりも2秒以上経過していなければ待機して、経過後にアクセス時間を記録して、この値をreturnする処理
- 11. 【一分理解】スクレイピンングしてみよう
- 12. Python 複数スレッドをEvent制御してるときCtrl+Cが効かなくなった時のテクニック
- 13. 気象データでシェアサイクルの利用者数・平均利用時間を予測してみた。
- 14. Python: コール可能なオブジェクト(関数とか)かチェックする
- 15. MySQL with Python connector
- 16. circleci/pythonからcimg/pythonへ更新する
- 17. 【AtCoder解説】PythonでABC244のA,B,C,D,E問題を制する!
- 18. ABC 095 A – Something on ItをPython3で解く
- 19. ModuleNotFoundError でつまづいた話
- 20. 具象クラスのインスタンスを返す抽象メソッドの型ヒント
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
python3 gzipファイルを読み込みforで回してListに格納する
* 読み込むファイル
gzip -dc sample.txt.gz
111
222
333“` sample.py
import gziplistaddress = []
with gzip.open(“sample.txt.gz”, “rt”) as f:
for line in f:
listaddress.append(line.replace(“\n”, “”))
print(listaddress)
[‘111’, ‘222’, ‘333’] #結果
Python 複数スレッドから同時アクセスされたときに前回のアクセス時間よりも2秒以上経過していなければ待機して、経過後にアクセス時間を記録して、この値をreturnする処理
以下は、複数スレッドから同時アクセスされたときに前回のアクセス時間よりも2秒以上経過していなければ待機して、経過後にアクセス時間を記録して、この値をreturnする処理
“`python
import time
import threadinglock = threading.Lock()
access_time = time.time()
def task():
while True:
print(concurrent_access())
passdef concurrent_access():
“””複数スレッドに同時にアクセスされるかもしれない処理”””
# 前回のアクセス時間より2秒以上経過して “いる”
# access_timeを現在時刻にしてから
# access_timeをreturn
# 前回のアクセス時間より2秒以上経過して ‘いない”
# 2秒経過するまで待機
# 2病経過したら上と同じ処理
global access_ti
【一分理解】スクレイピンングしてみよう
## スクレイピングってなに?
スクレイピングとは、ウェブサイトから情報を抽出することです。
サイト上のデータ(商品、価格、天気などのデータ)を取ってくることが多いです。## pythonで書いてみよう
#### 必要なもの(pip)
・requests
・BeautifulSoup
・調べたいサイトのURL#### 流れ
requestsで取得
“`python
res = requests.get(“URL”)
“`BeautifulSoupでサイトデータを抽出
“`python
soup = BeautifulSoup(res.text, “html.parser”)
“`欲しい部分を決定
ex)クラス名:product_lists aaa の ul の中の liを取得
※商品一覧などの構造はだいたいこんな感じ
“`python
found_part = soup.find_all(“ul”, class_=’product_lists aaa’)
for ul_tag in found_part:
for li in ul_tag.fi
Python 複数スレッドをEvent制御してるときCtrl+Cが効かなくなった時のテクニック
すべてのスレッドでevent.waitしている場合、各スレッドがロックされるためctrl+cが受け取れない。
そのため、event.waitを使わないスレッドを必ず1つ用意しておく。このスレッドでctrl+cを受け取り終了フラグをTrueにして子スレッドの条件に終了フラグを配置していおけばループから抜けることができる。“`python
import time
import threadinge_task1 = threading.Event()
e_task2 = threading.Event()f_sys_exit = False
# ===============================
# 制御不可能なchildスレッドの処理
# ===============================
def can_not_control_task1():
while True:
print(threading.current_thread().name, ‘ is waitting.’)
e_task1.wait(
気象データでシェアサイクルの利用者数・平均利用時間を予測してみた。
# 目次
[1. 背景](#1.-背景)
[2. 目的](#2.-目的)
[3. 手法](#3.-手法)
[4. データの確認・前処理](#4.-データ確認・前処理)
[5. 時系列解析](#5.-時系列解析)
[6. 結論](#6.-結論)
[7. 感想](#7.-感想)# 1. 背景
化学工学に関する研究で博士号取得後、化学メーカーで技術職をやっています。
学生時代から現在に至るまで、化学プロセスの数値シミュレーションを専門としており、プログラミング(C++, VB)や数値計算に関する知識・経験はありますが、統計学・ビックデータ解析・AI技術(機械学習・ディープラーニング等)といった最新技術に関する知識が不足していることを日々の業務の中で強く感じていました。
そんな中で[アイデミー](https://aidemy.net/)のオンライン講座の存在を知り、Aidemy Premium Planのデータ分析講座(3ヶ月)を受講するに至りました。
今回の記事では、3ヶ月の学習成果として、Facebook Prophetを使った時系列解析に挑戦した結果を紹介します。# 2. 目的
Python: コール可能なオブジェクト(関数とか)かチェックする
“`python
def f():
passasync def af():
passclass C:
@staticmethod
def s():
pass@classmethod
def c(cls):
passdef i(self):
passif __name__ == “__main__”:
print(callable(“x”)) # False
print(callable(None)) # False
print(callable(lambda x: x + 1)) # True
print(callable(f)) # True
print(callable(af)) # True
print(callable(C.s)) # True
print(callable(C.c)) # True
print(callable(C.__init__)) # True
pri
MySQL with Python connector
#### MySQL
##### 記事の背景
MySQLに関する記事は多いのですが、途中まで躓いているものも多い。
本記事は、Windowsに限定してインストール、初期設定、データベース作成
そしてPythonからデータベースへのアクセスまで網羅します。#### 1.install
MySQLダウンロードサイト
https://dev.mysql.com/downloads/installer/
ログインについては、スキップする
画面左下の「No thanks, just start my download.」からダウンロードする。#### 2.インストール設定
Custom
☑MySQL Server
☑MySQL Shell
☑Connector/Pythonを選ぶType & networking
☑Development Computerを選択
☑TCP/IP Port:3306
☑X Protocol Port:33060☑Open Windows Firewall port for network access
認証設定
☑Use strong
circleci/pythonからcimg/pythonへ更新する
# やりたいこと
– `circleci/` ownerのdocker imageがdeprecatedになるようなので、新しい `cimg/`に更新したい
– seleniumでなんやかんやする目的で利用していたので
`circleci/python-3.8.3-browsers` -> `cimg/python-3.9.10-browsers`
あたりに更新したい公式アナウンス
– https://discuss.circleci.com/t/legacy-convenience-image-deprecation/41034
– https://circleci.com/blog/announcing-our-next-generation-convenience-images-smaller-faster-more-deterministic# やったこと
## dockerfile先頭のimage指定を差し替える
“`dockerfile
FROM circleci/python:3.8.3-browsers
“`
↓
“`dockerfile
FRO
【AtCoder解説】PythonでABC244のA,B,C,D,E問題を制する!
**ABC244**の**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**
ABC 095 A – Something on ItをPython3で解く
# 初めに
「[AtCoder に登録したら次にやること ~ これだけ解けば十分闘える!過去問精選 10 問 ~](https://qiita.com/drken/items/fd4e5e3630d0f5859067)」の各問題の類題をPythonで解きます。
(解法に詰まって調べたとき、C++の解法が多くPythonしか分からない私では参考にできなかったため。)
*競プロ & Python初心者のため、解法やコードの改善例、別解等アドバイス頂けますと大変ありがたいです。# [ABC 095 A – Something on It](https://atcoder.jp/contests/abc095/tasks/abc095_a)
**【問題文】**
ラーメン店「高橋屋」のラーメンの値段は 1 杯 700 円ですが、トッピング(味玉、チャーシュー、ねぎ)を乗せた場合は 1 種類につき 100 円が加算されます。ある客がラーメンを一杯注文し、店員にトッピングの希望を伝えました。店員は注文の内容をメモ帳に文字列 S として記録しました。S の長さは 3 文字で、S の 1 文字
ModuleNotFoundError でつまづいた話
# ModuleNotFoundErrorでつまづいた話
## ModuleNotFoundError
python3のパッケージ,pytrendsをimportして使用したところModuleNotFoundErrorが発生して動けなくなった。
最終的に問題は解決したが、単純にpytrends.pyという名前のファイルで実行していたため、参照先がおかしくなってるだけだった。
pythonのパッケージと同じ名前のファイルをつけるのはやめた方が良い。
“`python
from pytrends.request import TrendReq
“`エラーメッセージ
“`shell
Traceback (most recent call last):
File “[WORKDIR]/pytrends.py”, line 1, in
from pytrends.request import TrendReq
File “[WORKDIR]/pytrends.py”, line 1, in
from pytrends.
具象クラスのインスタンスを返す抽象メソッドの型ヒント
### 概要
抽象クラスのメソッドが具象クラスのインスタンスを返す場合、その抽象基底クラスはジェネリック型にする必要がある。また、その型変数は抽象規定クラスを上界に指定する必要がある。### 具体例
足し算と符号反転を定義すれば、引き算を自動で定義してくれる抽象クラスを考える。“`py
from abc import ABC, abstractmethodclass AdditiveGroup(ABC):
@abstractmethod
def __add__(self, _):
passdef __sub__(self, other):
return self.__add__(other.__neg__())@abstractmethod
def __neg__(self):
pass
“`これを使って、整数を3で割った余りで分類する次のようなクラスを定義するとmod 3の世界で足し算、引き算、符号の反転が行える。
“`py
class FG3(Addi