Python関連のことを調べてみた2021年08月17日

Python関連のことを調べてみた2021年08月17日

Athenaで基礎からしっかり入門 分析SQL(Python・Pandasコード付き) #3

今まで複雑なデータ操作・分析などはPythonでやっており、SQLは普通のアプリ開発程度のライトなものしか触って来なかったのですが、やはり分析用の長いSQLなども書けた方がやりとり等で便利・・・という印象なので、復習も兼ねて記事にしておきます。

また、SQLに加えて検算も兼ねてPythonやPandasなどを使ったコードもSQLと併記していきます(Pythonで書くとどういった記述が該当するのかの比較用として使います)。

※長くなるのでいくつかの記事に分割します。本記事は3記事目となります。

# 他のシリーズ記事

※過去の記事で既に触れたものは本記事では触れません。

`#1`:

用語の説明・SELECT、WHERE、ORDER BY、LIMIT、AS、DISTINCT、基本的な集計関係(COUNTやAVGなど)、Athenaのパーティション、型、CAST、JOIN、UNION(INTERSECTなど含む)など。

https://qiita.com/simonritchie/items/0d84646e3db940e98b14

`#2`:

GROUP BY・HAVING

元記事を表示

東京駅周辺における気象予報値をCSVに保存し、Webサイトで閲覧できるようにしたので、これをPandasで読み込んで可視化してみる。

# はじめに

先日、島根県松江市の気象予報値をCSVで取得できるようにしたという以下のような記事を書いたら、東京のデータを見てみたいという要望があったので、同じように東京の気象予報値も取得できるようにしてみた。

https://qiita.com/mix_dvd/items/133310a3ac669b304b43

CSVを直接ダウンロードしたい方は以下のリンクをご利用下さい。

[tokyo.csv](https://blueomega.jp/20210812_gRfm/tokyo.csv)

# 可視化

詳細は前述の記事を参照して頂くこととして、早速以下のようなスクリプトを作成して実行してみる。

“`py:
import pandas as pd
import matplotlib.pyplot as plt

df = pd.read_csv(“https://blueomega.jp/20210812_gRfm/tokyo.csv”)
df.index = pd.to_datetime(df.pop(“datetime”))

df.TMP.plot(figsize

元記事を表示

pytest で ModuleNotFoundError: No module named ‘xxx’ になる

python で簡単なアプリケーションを作成して test コードを書こうとおもって “pytest“ を使用したのですが、コンソールから “pytest“ を実行すると “ModuleNotFoundError: No module named ‘xxx’ “ でエラーが発生。いろいろ調べて 2 つの方法でエラーを解消することができたので書き残しておきます。

## 準備

下記のアプリケーションに対してテストコードを書きました。

https://qiita.com/kiyo27/items/d928f65b215d914f1979

テストコードの中身:

“`python:tests/test_todo.py
import os
import pytest
from dao.todo import TodoDAO

@pytest.fixture
def todo_instance():
return TodoDAO()

class TestTodoClass:
def test_create(self, todo_instance):

元記事を表示

pytorchの線形回帰を練習

ここ数日、PyTorch for Deep Learning – Full Course / Tutorialという動画を見ています。
この動画を見終えると、GANで画像を生成する技術が身につくそうです。

PyTorch for Deep Learning – Full Course / Tutorial: https://youtu.be/GIsg-ZUy0MY
GANでの画像生成のすごいやつ:
 GANを使って簡単に架空アイドル画像を自動生成(Progressive Growing of GANs)https://www.mahirokazuko.com/entry/2018/12/15/201501

この9時間のコースの第2章、”Linear Regression”の内容が頭にまだ入りきっていないので、qiitaの記事を書くことで定着を図ろうとしています。

#目標
以下で行っていることを、pytorchを使って表現できるようになることです。
できれば、サンプル数を900000などに設定しなくても、うまくいってほしいです。

“`py

import random

# a

元記事を表示

AidemyでのAI学習記録

# 初めに
これから様々な仕事がAIにとって代わるであろう時代で
使うだけの側から作る側でいたいという思いから学習を始めました。

# アイデミーで学習した内容
Python入門
ライブラリ「NumPy」基礎(数値計算)
ライブラリ「Pandas」基礎(表計算)
ライブラリ「Matplotlib」基礎(可視化)
データクレンジング
データハンドリング
機械学習概論
教師あり学習(回帰)
教師あり学習(分類)
教師なし学習
自然言語処理基礎
ディープラーニング基礎
ネガ・ポジ分析
日本語テキストのトピック抽出
自然言語処理を用いた質問応答

# 学習の流れ
大体1コース20~30程度のコンテンツがあり、
コンテンツごとに演習問題に挑むことになります。

カリキュラムごとにある添削問題では「Google Colaboratory」を利用してプログラミングを行いんす。
今までAIを学習するにはハイスペックパソコンを用意して様々なソフトをインストールするなど、
環境構築を行うだけでもハードルが高いイメージがあったのですが、
研究開発をするだけなら気軽に環境が整えられる点には驚かされました。

元記事を表示

ラズパイとAzureのFaceAPIで赤ちゃんの表情を読み取ってみた

# はじめに
先日、我が家に子供が生まれたので、見守るためのベビーカメラをラズパイで作ってみようと思いました。
ただ見守るだけではなく、AzureのFaceAPIを使って赤ちゃんの表情を読み取ることができれば、話すことができない赤ちゃんの気持ちが読み取れるのではないかと考えて、FaceAPIの結果から赤ちゃんの気持ちをLINE通知する装置を作ってみました。

最終的には、倒れて赤ちゃんにぶつかったら危ないしベビーカメラを置くほど家は広くなかったので片づけましたが、せっかくなので紹介だけしたいと思います。

# 装置の概要
### 全体構成
自宅で使う装置なので通信はwifiを使用しています。
定期的に写真を撮影して、FaceAPIの結果と温湿度に応じたLINE通知をしてくれます。
また、いい表情が取れたらGoogledriveに画

元記事を表示

【強化学習】【基本編】3.モンテカルロ法 TD法

この記事は[【強化学習】【基本編】2.方策反復法と価値反復法](https://qiita.com/____kankan____/items/c2b4b945c97c53b6bfe4#%E7%9B%AE%E6%AC%A1)の続きです。
分かりやすさを重視したかったので文がくどくなりましたがお手やわやわにお願いします。
##目次
[1.モデルフリーな場合の強化学習](#1-モデルフリーな場合の強化学習)
[2.モンテカルロ法](#2-モンテカルロ法)
[3.TD法](#3-TD法)
[4.おわりに](4-おわりに)

##1.モデルフリーな場合の強化学習
[前回の記事](https://qiita.com/____kankan____/items/c2b4b945c97c53b6bfe4#%E7%9B%AE%E6%AC%A1)ではある状態$s$ある行動$a$を選んだ時に次の状態$s’$への遷移確率$p(s’|s,a)$が完全にわかっている場合に最適な行動を求める方法を解説しました。
このように遷移確率$p(s’|s,a)$が完全にわかっている場合の手法を__モデルベース__な手法といい

元記事を表示

pythonによるランレングス圧縮

## 概要
pythonでランレングス圧縮がしたくなった時に、パッと確認するための備忘録です。

## ランレングス圧縮について
ランレングス圧縮とは、データを圧縮するためのアルゴリズムの一つで、連続して現れる文字を、繰り返した回数で置き換える方法です。
例えば、”AAAABBBBBCC”のような文字列があった際に、”A4B5C2″のように、Aが4回、Bが5回、Cが2回出現したといった形で置き換えを行います。

## 実装について
自分は[こちら](https://atcoder.jp/contests/typical90/tasks/typical90_cf)の問題で利用したため、端から文字列を順にたどっていき、配列に格納する流れで実装しました。
以下の実装では、文字列の長さ分の計算量となっています。

※もっと高速にできる、メモリの消費を抑えるために、こうした方が良いなどあれば、是非コメントお願いします。

“`python

def rle(s):
bef = s[0]
cnt = 1
arr = []
for i in range(1, len(s)):

元記事を表示

SimSiamで自己教師あり表現学習と可視化【Pytorch】

# 結論
まじで、すごい

まずは結果から見てみる。
先んじて言っておくが、データのラベルは使っていない。かなり似たような画像が集まっていることがわかる
![CIFAR10_imgplot.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404462/56fa12b2-e72b-0444-1069-a4f3c5458b15.jpeg)

同様のものをラベルでも見てみる。ラベル単位でみるとあまり被ってない笑
背景が同じような色のものをまとめている感じになっているが、そうはいっても「似た画像は近くに行く」ということは学習できている
![CIFAR10_labelplot.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404462/8714ef3c-6c85-d65e-5ea5-1ef4b9d156f1.jpeg)

ついでに言うと、この手法、なんと実装が簡単!
プラスワンポイン

# 簡単に手法紹介

![image.pn

元記事を表示

【競プロ典型90問】004の解説(python)

## 概要
[競プロ典型90問](https://atcoder.jp/contests/typical90)の解説記事です。
解説の画像を見ても分からない(~~理解力が足りない~~)ことが多々あったので、後で解き直した際に確認できるようまとめました。

※順次、全ての問題の解説記事を挙げていく予定です。
※★5以上の問題は難易度的に後回しにしているため、投稿時期が遅くなる可能性があります。(~~代わりに丁寧に解説してくれる方いたらぜひお願いします~~)

## [問題004-Cross Sum](https://atcoder.jp/contests/typical90/tasks/typical90_d)

### 問題概要
マス(i, j)と同じ行、同じ列にあるマスの合計値を全てのマスで求める。

### 制約

“`math

2 <= H, W <= 2000 \\ 1 <= Ai <= 99 \\ ``` ・入力は全て整数。 ### 解き方 まず初めに、全てのマスにおいて、順番に合計値を求めていく方法が考えられるかと思います。 この考えでは、マスの総数が$HW ≒

元記事を表示

GCPのCloud ShellのPython2.7.16をPython3.7.3に移行する

##GCPでPython3が使いたい!
LINEBOTかLINE NotifyをGCPでPythonを定期で動かして作ろうとしていました。
そこでGCPのCloud Shellを使うことになりました。
###Cloud ShellのPythonのバージョン確認
Cloud ShellのPythonのバージョンを確認してみると…

“`shell:cloud_shell
$ python -V

********************************************************************************
Python 2 is deprecated. Upgrade to Python 3 as soon as possible.
See https://cloud.google.com/python/docs/python2-sunset

To suppress this warning, create an empty ~/.cloudshell/no-python-warning file.
The command wil

元記事を表示

データサイエンス100本ノック(構造化データ加工編)をやってみた part9(P-079~P-088)

 この記事はデータサイエンスを勉強しながら、データサイエンス協会が提供する__データサイエンス100本ノック(構造化データ加工編)__を解く過程を自分用にまとめたものです。

| チャプター | リンク | チャプター | リンク |
|:——:|:—-:|:——:|:—:|
| P-001~P-016 | [part1](https://qiita.com/pyon/items/c208e585e0cdfabc58bd) | P-052~P-062 | [part6](https://qiita.com/pyon/items/5c5926241b8e6da978f3) |
| P-017~P-022 | [part2](https://qiita.com/pyon/items/73bf9e8fe75f807aeea8) | P-063~P-068 | [part7](https://qiita.com/pyon/items/ac8c7fb9110dbba061f5) |
| P-023~P-031 | [part3](https://qiita.com/pyo

元記事を表示

Pythonでいろんな形の日時データをdatetime型に変換する

#作業環境
Jupyter Notebook(6.1.4)を用いて作業を進めた。
各versionは`pandas`(1.1.3), `mojimoji`(0.0.11)である。

#やりたいこと
データ分析の学習の中で「2021/8/16」のような日時のデータを取り扱った。分析のためにまず`int`や`str`になっているデータ型を`datetime`型へ変換してから差分を計算するなどを行ったので、その変換方法をまとめておく。

#取り扱うデータ

まずはExcelで下のようなデータを準備してみた。

![スクリーンショット (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1851062/2359b13e-e321-fcc8-2745-e5759e505e33.png)

この時点で素直に表示設定を日付にしてから保存するのが間違いなく楽だが、今回はPythonを使って加工する方法を考えたいのでこのまま`date.csv`として保存した。Jupyter Notebookを開いてファイルを読み込み表

元記事を表示

Pythonを用いた植物のらせん型パターンのシミュレーション

##はじめに

植物が形作るパターンのひとつにらせん型のもの(parastichy)があります。例えば、ひまわりの種の配置、松ぼっくりを上から見たときの傘の位置、多肉植物の葉の位置などがあります。これらのパターンの特徴はよく「フィボナッチ数列」や「黄金比」と関連させて語られます。しかしながら「どのようにそのようなパターンが形成されうるか」ということにはあまり触れられません。この記事では、Douady and Couder[1]の論文をもとに動力学的な視点から提案されたパターン形成メカニズムを紹介します。

Sunflowers yellow~ Union-Find ~ チートシート

#目次
[Union-Findとは](#Union-Findとは)
**[実装](#実装)**
[工夫](#工夫)

#はじめに

チートシートの扱いついては[ここ](https://qiita.com/ysys_Ba/items/d27282b888abbd1f43e7#%E3%83%81%E3%83%BC%E3%83%88%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を読んでください

#Union-Findとは

要素同士の結合から、グループの数や要素数などを求めるためのデータ構造
要素全体を森、同じ木に属する要素を同じグループとして扱う

Union-Find木を使う手順
①すべての要素を独立した木とし、自身を根とする
②2つの要素の結合が与えられそれぞれが異なる木の場合、2つの木を結合し1つの木とする
③根が同じ要素は同じ木に属することを利用し、要素同士が同一のグループかを判定する

詳しくは[こちらのページのスライド](https://atcoder.jp/contests/atc001/ta

元記事を表示

[QGIS]別ファイルからの複数レイヤの読み込み

# [QGIS]別ファイルからの複数レイヤの読み込み
起動時にプロジェクトファイルを読み込む形ですと、レイヤ数・ラスタレイヤが多い場合にQGISの起動が遅くなってしまうための対応策として、別タイミングでの複数レイヤでの読み込みを試していきます。

– 環境
– QGIS 3.16

## 別ファイル

QGISが定義するファイルで複数レイヤが定義されているのは下記のファイルになります。
pythonを使用しての下記のファイルでの追加方法について記載していきます。

– project.qgz, project.qgs
– プロジェクトファイル
– layers.qlr
– レイヤ定義ファイル

## プロジェクトファイルからのレイヤ追加

`QgsProject.createEmbeddedGroup`でプロジェクトファイル内のグループ名とプロジェクトファイル・非表示にするレイヤリストを指定することで、GroupNodeを作成します。
その後、追加したいGroupに対して`.addChildNode`で追加することが可能です。
オプションでプロジェクトの読み

元記事を表示

python実戦データ分析100本ノックのメモ

pythonで機械学習のコードを書いているときに、pandasやmatplotlibの使い方やデータの加工の流れがよく分からず、どうせなら実践的なデータを用いてデータ分析の流れを理解したいと思い、本書を手に取った。

## 一章で学んだこと
1. データの全体像を把握する
– 顧客の目的は何か
– そもそもどんなデータがあるか
– 最も粒度の大きなデータファイルはどれか
– 欠損値はあるか
– 各データファイルで共通するデータ列はあるか
2. 使用するデータを作成する
– 何を主軸にデータ同士を結合させるか
– 結合後に集計ミスは無いか→検算
3. 各種統計量(平均、中央値など)を把握する
– 更に詳しくデータの全体像を把握する
4. 目的に沿って、必要なデータを集計する
– グラフ化して解決策をデータから読み取る

“`python

“`

“`python
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
`

元記事を表示

CoeFont CLOUDでオーディオブックを作成する

# はじめに
[CoeFont CLOUD](https://coefont.cloud/ “CoeFont LP”)というAI音声合成サービス作っています.
今回はそのAPIを利用してオーディオブックを作成します.
[CoeFont APIドキュメント](https://coefont.cloud/webapi)

# CoeFont CLOUDとは
ざっくり言うと**色々な人の声で音声合成できるサービス**です.
あと自分の声でCoeFontも作れます.今回は使わないのでこちらについては説明しません.

>「CoeFont CLOUD」(https://coefont.cloud )はAI音声合成プラットフォームです。CoeFontとは、「声」を、手軽かつ表現力豊かな、「フォント」のようにする、というコンセプトの音声合成です。
従来では、50万円・10時間以上の収録を必要としていました。ですが、本サービスでは、500円・15分の収録で、それよりもかなり自然な発声のできる、CoeFont(AI音声合成)を作成できます。作成したCoeFontは、クラウド上で公開することができます。他の

元記事を表示

[メモ] Django の DurationField を使って有効期間切れ判定をする

# はじめに

ある model のメンバに有効期間(有効時間)を持たせておき、
その後、一定周期の監視の際に有効期限切れであるか否かを判定する実装例.

具体的には以下である.
>ユーザが 1月1日 00:00:00 に有効期間「90分間」と入力すれば、
有効期限は 1月1日 01:30:00 となる

一見簡単に思えたが、Django では苦戦したので書き残しておく.

何か泥臭い方法で他に良い方法がありそうな気もするが…

#### models.py

“`python
class XXXX(models.Model):
# ユーザに有効期間を「HH:MM:SS」形式で入力させる.
# ユーザによる時間入力が無ければ、90分間とする.
duration = models.DurationField(verbose_name=’有効期間’,
default=timedelta(minutes=90),
null=True,

元記事を表示

poetryでsetup.pyを自動生成する

[Poetry](https://python-poetry.org/) ってパッケージ管理だけじゃなくて、ビルドとかインストールもやってくれるから、Poetry 使っているとsetup.py (setuptools) って要らなくなるんだけど、やっぱまだなんか怖いし、Pythonコマンド(CLIアプリ)作って [pipx](https://github.com/pypa/pipx) で動かしたい、なんて時には、まだやっぱり setup.py が必要な訳で。

# 余談
余談なんだけど、[pyenv](https://github.com/pyenv/pyenv) 特に [pyenv-virtualenv](https://github.com/pyenv/pyenv-virtualenv) を使ってて、プロジェクトの数が多くなってしまったとする。ふと整理しようとして、どのプロジェクトがどの virtualenv 使ってたかな、って調べようとすると、これが意外と面倒くさい。

* .python-version のファイルを find を使って調べる
* `find . -na

元記事を表示

OTHERカテゴリの最新記事