- 0.0.1. asyncio、コルーチン、async/await
- 0.0.2. JPXのデータを用いてデータ分析をしていく【データ読み込みからデータの中身理解】(Kaggleコンペ)
- 0.0.3. boto3を使って、さくらのオブジェクトストレージにファイルをアップしてみる
- 0.0.4. データフレームのある列をインデックスに設定する df.set_index()
- 0.0.5. FastAPI: SQLAlchemy で MariaDB を使う (その 3)
- 0.0.6. FastAPI: SQLAlchemy で MariaDB を使う (その 2)
- 0.0.7. 超初心者が適当に選んだC問題を解きまくってみた【Python】
- 1. 116 Grand Garden
- 1.0.1. 【AtCoder参加記】PythonでABC249のA, B, C, Dを解く
- 1.0.2. 【AtCoder解説】PythonでABC249のA,B,C,D,E,F問題を制する!
- 1.0.3. Pillowで図形を描く
- 1.0.4. FastAPI: SQLAlchemy で MariaDB を使う
- 1.0.5. 【Python + OpenCV】簡易寸法測定(画像に寸法描写)
- 1.0.6. 【Python OpenCV】画像 から 横線 のみ検出する(おまけで縦線も)
- 1.0.7. にゃんこスイーパー
- 1.0.8. 『Python1年生』で勉強中(その3)
- 1.0.9. Loguruでライブラリのログを出力する
- 1.0.10. MacのPython環境構築で3系にならないときの解決方法
- 1.0.11. 【Python】csv.DictReaderで数値(int型のデータ)を読み込む
- 1.0.12. 【Python】クラスオブジェクトの中身を確認する2つの方法
- 1.0.13. 【mypy】リストに複数の型のデータを入れてはいけない【Python】
asyncio、コルーチン、async/await
# asyncio
>async/await 構文を使い 並行処理の コードを書くためのライブラリです
https://docs.python.org/ja/3/library/asyncio.htmlでは、`async/await`とは?
# async/await
* 非同期で実装する際に使用する
“`sample.py
async def edit():
results = await get()
return results
“`次の様にawaitを使わない場合、
“`sample.py
async def edit():
print(get())
# > RuntimeWarning: coroutine ‘SampleController.get’ was never awaited
“`「コルーチンがawaitされていない」と。
**コルーチンを単に呼び出しただけでは実行出来ず、コルーチンオブジェクトが返るため**コルーチンとは?
# コルーチン
async/await 構文で宣言された関数はコルーチンと呼ば
JPXのデータを用いてデータ分析をしていく【データ読み込みからデータの中身理解】(Kaggleコンペ)
みなさんこんにちは。
現在、Pythonを勉強している社会人3年目の転職希望者です。
プログラミングスクールに通い、様々な分析手法を学びました。これからは、更に実践で活躍できるようになる為、自らデータを探し、データの分析のみならず基礎から学んでいこうと考えています。
このブログが様々な人の役に立てれば光栄に思います。さて、本題ですが今回使用するデータセットは下記のとおりです
https://www.kaggle.com/competitions/jpx-tokyo-stock-exchange-prediction
JPXが主催のコンペディションになっています。ここで、JPXとは何か簡単に説明していきます。
日本取引所グループ(JPX)は、世界最大級の証券取引所である東京証券取引所(TSE)と、デリバティブ取引所である大阪取引所(OSE)および東京商品取引所(TOCOM)を運営する持株会社です。
今回はこのコンペディションのデータを用いて、データの読み込みからデータ手法まで幅広く学んでいきたいと思います。
1.データの読み込み
与えられたデータがかなり多いですが、まずは一
boto3を使って、さくらのオブジェクトストレージにファイルをアップしてみる
# はじめに
最近になって、さくらのクラウドを触り始めた初心者(筆者)が四苦八苦しながら
オブジェクトストレージにファイルをアップロードしてみたのが前回の内容。https://qiita.com/nkmr_RL/items/9b15c2eaddb97a830887
上記のアップロードができるようになったら
**「なんかPythonから操作できる気がしてきたわ…」**
と思い立ったので、Pythonから操作してみるのが今回の内容。あと、先に言っておきますが、**AWS公式ライブラリboto3を使った方法**になるので
**さくらインターネットの公式サポート対象外のやり方**です。(多分)だから、1年後には使えなくなっているかもしれない。(バナージ…悲しいね)
# 予想される検索ワード
以下、この記事を求めているであろう方が入力しそうな
(というか実際に私が必死で検索した)検索ワードです。さくらのクラウド, オブジェクトストレージ, アップロード方法, Python, boto3
# 実行環境
– ubuntu 18.04(Dockerで構築)
– Pytho
データフレームのある列をインデックスに設定する df.set_index()
ある列をインデックスに設定したい!
そんな時に、用いるのが`set_index()`です
df = df.set_index(“インデックスに設定したいカラム名”)例えば、3列目くらいに`age`というカラムがあったとします。
年齢ごとにデータをまとめたいとき、一番左の列(インデックス列)にあればとてもデータとして
見やすいですよね。
是非使ってみてください!
FastAPI: SQLAlchemy で MariaDB を使う (その 3)
こちらのプログラムを改造しました。
[FastAPI: SQLAlchemy で MariaDB を使う (その 2)](https://qiita.com/ekzemplaro/items/e4a89757858c4c85e271)
>データベースとテーブルを変更
>API に delete を追加## プログラム ##
フォルダー構造は同じです。“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`“`py:crud.py
from sqlalchemy.orm import Sessionfrom . import models, schemas
#
def get_city(db: Session, city_id: str):
return db.query(models.City).filter(models.City.id == city_id).first()
#
def get_cities(d
FastAPI: SQLAlchemy で MariaDB を使う (その 2)
こちらのプログラムを改造しました。
[FastAPI: SQLAlchemy で MariaDB を使う](https://qiita.com/ekzemplaro/items/9f84596fba2c532d45a9)
変更点
id を string に
age を追加## プログラム ##
フォルダー構造は同じです。
“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`“`py:crud.py
from sqlalchemy.orm import Sessionfrom . import models, schemas
def get_user(db: Session, user_id: str):
return db.query(models.User).filter(models.User.id == user_id).first()def get_user_by_email(db: S
超初心者が適当に選んだC問題を解きまくってみた【Python】
解き方を忘れないためにまとめてるだけなのでコードはめちゃくちゃ不細工です、ここもっと良くできるよって場所あったら教えていただけるとありがたいです!!
116 Grand Garden
https://atcoder.jp/contests/abc116/tasks/abc116_c
“`python:practice.py
def judge(hlist):
if len(hlist)==0:
return 0
mini = min(hlist)
idx = hlist.index(mini)
hlist = [h-mini for h in hlist]
return mini + judge(hlist[:idx]) + judge(hlist[idx+1:])n = int(input())
hlist = list(map(int, input().split()))
print(judge(hlist))
“`この問題で必要な考え方は、最初に一番背の低い花の必要な数だけ全体に水を与えて
【AtCoder参加記】PythonでABC249のA, B, C, Dを解く
自分がコンテストでやった考察と実装を書いてみます.
* [A問題 『Jogging』](https://qiita.com/yassu/items/95f53238774e0d34489b#a%E5%95%8F%E9%A1%8C-jogging)
* [B問題 『Perfect String』](https://qiita.com/yassu/items/95f53238774e0d34489b#b%E5%95%8F%E9%A1%8C-perfect-string)
* [C問題 『Just K』](https://qiita.com/yassu/items/95f53238774e0d34489b#c%E5%95%8F%E9%A1%8C-just-k)
* [D問題 『Index Trio』](https://qiita.com/yassu/items/95f53238774e0d34489b#d%E5%95%8F%E9%A1%8C-index-trio)## A問題 『Jogging』
問題ページ: [A – Jogging](https://atcoder.jp/cont
【AtCoder解説】PythonでABC249のA,B,C,D,E,F問題を制する!
**ABC249**の**A,B,C,D,E,F問題**を、**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
Pillowで図形を描く
# インストール
“`
$ pip install Pillow
“`# 使い方
## 1. インポート
“`python
from PIL import Image
“`## 2. 画像ファイルを開く
### 画像ファイルを読み込み
“`python
im = Image.open(fp, mode=’r’, formats=None)
“`
* __fp__ – ファイルのパス### 新しく生成
“`python
im = Image.new(mode, size, color=0)
“`
* __mode__ – モードを選択
* __size__ – タプル`(width, height)`をピクセルで指定
* __color__ – 画像の色 デフォルトでは`’black’`## 3. 図形を描く
### インポートとdrawオブジェクトの生成
“`python
import ImageDraw
draw = ImageDraw.Draw(im, mode=None)
“`### 直線,折れ線
“`python
draw.l
FastAPI: SQLAlchemy で MariaDB を使う
次のページを参考にしました。
[SQL (Relational) Databases](https://fastapi.tiangolo.com/ja/tutorial/sql-databases/)Ubuntu でのライブラリーのインストール
“`bash
sudo pip3 instal mysqlclient
“`MariaDB に次のデータベースを作成します。
“`text
host =’localhost’
data_base = ‘db_test’
user =’scott’
password = ‘tiger123’
“`## プログラム ##
“`text
$ tree
.
├── __init__.py
├── crud.py
├── database.py
├── main.py
├── models.py
└── schemas.py
“`“`py:crud.py
from sqlalchemy.orm import Sessionfrom . import models, schemas
def get_user(db
【Python + OpenCV】簡易寸法測定(画像に寸法描写)
## はじめに
画像を用いた寸法測定ツール作成は、カメラからの遠近によるサイズミスマッチや精度の問題があって敬遠しておりました。https://qiita.com/okm_6880/items/0f964484d570208d715d
しかし先日、面白そうな記事を見つけました。
https://protopedia.net/prototype/2928
https://github.com/esc122/opencv_draw_binarize
## ちょっとした改良
2か月前に 1 commitされているのみで、開発が進んでいるのか止まっているのかわかりません。ひとまずfork / git clone し自分でも使ってみて、必要に思った機能を追加しました。詳しい操作方法などはREADME.mdをご覧ください。二値化して面積求めたりする機能もあるようですが、私には必要なさそうなので説明を省略しています(元リポジトリには一切の説明がありません)。https://github.com/youichi-io/opencv_draw_binarize
#### メイン画面
w
【Python OpenCV】画像 から 横線 のみ検出する(おまけで縦線も)
## はじめに
OCRするうえで「枠線」は避けて通れません。文書のOCRを進めていると、表の枠線が検出の邪魔をすることがあります。一方で、OCRをする領域を絞り込むために枠線の位置情報を必要とすることもあります。今回は、そんな枠線の情報を取得することを目指します。
## 対象者
この記事は下記のような人を対象にしています。
– OCRのために枠線の情報を取得したい人## 参考元
参考にしたサイト様を以下に示します。書かれている通り、微調整が重要でした。この記事ではその微調整した部分をまとめ
にゃんこスイーパー
Python+Cursesで、にゃんこスイーパーを書いてみました。
Ubuntuのターミナルで動きます。
ファイルに、chmod +x nyankosweeper.pyとして、実行権を付けて動かして下さい。$./nyankosweeper.py [number of cats]として、動かします。
[number of cats]は、省略できます。省略すると、猫の数は58個となります。スペースキーで、開き、’z’キーで、マークを付けます。カーソルは矢印キーで動かします。
’q’キーで抜け出せられます。pyinstallerで、コンパイルできます。コンパイルしなくとも、そもそも速度はあんまり問題ないですが。
“`nyankosweeper.py
#!/usr/bin/python3import curses
import random
import locale
import select
import sysxsize = 40
ysize = 23
vvram = [[0 for i in range(ysize)] for j in range(xsize
『Python1年生』で勉強中(その3)
## この記事について
『Python1年生』(以下、書籍)でPythonを学習する超初心者の記録です。
後述の「やったこと」にも書いていますが、ようやく書籍を最後まで進めました。
その1, その2に引き続き、超初心者の学習記録ですので、今回も大したことは書いていないと思います。■ バックナンバー
・[『Python1年生』で勉強中(その1)](https://qiita.com/megrim_q/items/c1417f507e96c1fb7015)
・[『Python1年生』で勉強中(その2)](https://qiita.com/megrim_q/items/333be033e5b4637d0eed)## 実行環境
| OS・MW | バージョンなど |
|:-:|:-:|
| OS | Windows 10 Pro 21H2 19044.1645 |
| Python | 3.10.4 |
|IDLE |3.10.4|## やったこと
前回(「その2」)の続きから書籍の最後まで、サンプルプログラムを試しながら読み進めました。
具体的には「第4章 アプリを
Loguruでライブラリのログを出力する
[Pythonのライブラリが出力するログを活用しよう](https://www.rhoboro.com/2020/12/29/logging-and-debug.html)
をloguruでやる方法# logging版
“`py:a.py
import requests
import logginglogger = logging.getLogger()
logger.setLevel(logging.DEBUG)
logger.addHandler(logging.StreamHandler())try:
requests.get(“https://expired-rsa-dv.ssl.com/”)
except requests.exceptions.SSLError:
logger.info(“SSLError”)
“`“`
$ python3 a.py
Starting new HTTPS connection (1): expired-rsa-dv.ssl.com:443
SSLError
“`# loguru版
[Wan
MacのPython環境構築で3系にならないときの解決方法
先日、ふとAIをやってみたいと思い立ち、Pythonの環境構築を行ったのだが、手順通りにやったはずなのに、Pythonのバージョンが変わらない。
__Python2.7.16__ から __Python3.10.2__ にしたいのに、なんでか変更されない。。。。。。## 環境
PC:Mac
Version:BigSur
shell:bash
→bashかzshでインストール方法が若干変わるみたい。私はbashだったので、ここではbashの場合の解決方法## やりたいこと
Macには初期でPythonがインストールされているが、
__Python2.7.16__ であるため、最新の __Python3.10.2__ をインストール、メインバージョンとしたい## インストール手順
インストールは以下サイトを参考に実施した
参照:[Pythonの開発環境を用意しよう!(Mac)](https://prog-8.com/docs/python-env)## 現状
インストールを手順通りに実施した後に、適用バージョンを確認したところ、
期待値としては“`
$ pytho
【Python】csv.DictReaderで数値(int型のデータ)を読み込む
# はじめに
プログラミング初学者です.CSVファイルをPythonのcsv.DictReaderで読み込む際に起きたエラーとその解決法を共有します.
# 環境
– Python 3.9.4
“`sh:ターミナル
$ python3 –version
Python 3.9.4
“`# エラー発生時のコード
– 読み込み対象のファイル
“`csv:food_calories.csv
food,calorie
ramen,443
coffee,7
cheesecake,281
hamburger,300
chickencurry,690
“`– 先のCSVファイルを読み込むコード
“`python:add_calories.py
import csvsum_of_calories = 0
with open(“food_calories.csv”) as file:
data = csv.DictReader(file)
for row in data:
name = row[“food”]
【Python】クラスオブジェクトの中身を確認する2つの方法
# はじめに
プログラミング初学者です.Pythonでクラスオブジェクトをそのまま出力しても中身が確認できないことを知りこの記事を執筆するに至りました.
# 環境
– Python 3.9.4
“`sh:ターミナル
$ python3 –version
Python 3.9.4
“`# クラスオブジェクトをそのまま出力するとどうなるか
こちらのプログラムを動かしてみます.
“`python:weather.py
class Weather:
def __init__(self, name, weather, temperature):
self._name = name
self._weather = weather
self._temperature = temperaturetokyo = Weather(‘東京’, ‘晴れ’, 25)
print(tokyo)
“`するとこのようになります.
“`sh:ターミナル
$ python3 weather.py
<__main_
【mypy】リストに複数の型のデータを入れてはいけない【Python】
# はじめに
プログラミング初学者です.Pythonで書いたコードをmypyでチェックした際に起きたエラーとその解決方法を共有します.
# 環境
– Python 3.9.4
– mypy 0.940“`sh:ターミナル
$ python3 –version
Python 3.9.4$ mypy –version
mypy 0.940
“`# mypyエラー発生時のコード
キャラクターの名前と身長を格納したリストを身長順に並び替えるというプログラムです.
“`python:sort.py
kimetsu_height: list[list[str, float]] = [
[‘tanjiro’, 165],
[‘nezuko’, 153],
[‘zenitsu’, 164.5],
[‘rengoku’, 177],
[‘inosuke’, 164]
]sorted_kimetsu_height = sorted(kimetsu_height, key=lambda x: x[1])
print(sor