Python関連のことを調べてみた2020年07月25日

Python関連のことを調べてみた2020年07月25日

Pythonのunittest.Mockでスタブを作って単体テストする

# 概要
– 自作クラスに対して、`unittest.mock.MagicMock`を使ってモックを作成してテストする。

# サンプルコード(挨拶を返すプログラムとテストコード)

## (テストしたいファイル。ランダムで挨拶の語を選んで、挨拶文を返す)

“`
# greeting.py
import random

class Greeting():
def greeting_phrase(self, name):
grt = self.greeting_word()
result = f'{grt}! {name}.’
print(result)
return result

def greeting_word(self):
grt = [‘Hello’, ‘Bonjour’, ‘Konnichiwa’]
i = random.randint(0, len(grt) – 1)
return grt[i]

if __name__ == ‘__mai

元記事を表示

【高等学校学習指導要領 情報Ⅱ】教員研修用教材:重回帰分析とモデルの決定(python)

# はじめに
今回は文部科学省のページで公開されている情報Ⅰの教員研修用教材の「第3章 情報とデータサイエンス 前半」内の「重回帰分析とモデルの決定」についてみていきたいと思います。
「重回帰分析とモデルの決定」の前章ではExcelとPythonを使用して、データの整形・前処理・操作・欠損値と異常値の取扱いなどについて扱っていますが、この章からは「重回帰分析とモデルの決定」を行っていきます。
しかしRでの実装例しか書いていないので、pythonでの実装について考えていきたいと思います。

# 教材
[高等学校情報科「情報Ⅱ」教員研修用教材(本編):文部科学省](https://www.mext.go.jp/a_menu/shotou/zyouhou/detail/mext_00742.html “高等学校情報科「情報Ⅱ」教員研修用教材(本編):文部科学省”)
[第3章 情報とデータサイエンス 前半 (PDF:8.9MB) PDF](https://www.mext.go.jp/content/20200702-mxt_jogai01-000007843_004.pdf “第3章 情報と

元記事を表示

初心者のためのpandas基礎⑥Group by

#pandasとは
Pythonにて、構造化データ(テーブル型のデータ)を扱うためのライブラリです。ファイルの読み込みやその後の加工・抽出処理などを簡単に行うことができ(SQL的な感覚で行うことができ)、機械学習などのデータの前処理で必須となるライブラリです。
他項目への目次は[こちら](https://qiita.com/Yanagawa_Yoshihisa/items/e1d7d0e939f58e7301ea)になります。

#はじめに
本記事では、Group byテーブルについて記載します。基本的なSQLの知識がある前提での記載になります。

サンプルはタイタニックのデータで試してみます。タイタニックがわからない人は「kaggle タイタニック」で調べて下さい。

“`python:
dataframe = pd.read_csv(‘train.csv’)
“`

#使い方
まずはライブラリをインポートします。pandasにpdという名前をつけてimportします。

“`python:
import pandas as pd
“`
基本的なサンプル構文を下記に示します。

元記事を表示

Fusion 360 を Pythonで動かそう その6 スケッチポイントを描く

#はじめに
Fusion360 のAPIの理解を深めるために公式ドキュメント内のサンプルコード [**Sketch Point API Sample (スケッチポイント APIサンプル)**](http://help.autodesk.com/view/fusion360/ENU/?guid=GUID-79d9183a-a9e7-11e5-83a9-f8b156d7cd97) の内容からドキュメントを読み込んでみたメモ書きです

#スクリプトの内容を確認する

##最初と最後のおまじないとスケッチの作成まで
最初と最後のこの辺りはFusion360 APIのお決まりのパターンです。[**その5**](https://qiita.com/reisyu/items/c5544f877238b70730ce)で触れたので説明を省略します。

“`Python
def run(context):
ui = None
try:
app = adsk.core.Application.get()
ui = app.userInterface

元記事を表示

[Python学習その1]リスト内包表記の書き方と使い方について

参考記事:[リスト内包表記を使ったリストの作成](https://www.javadrive.jp/python/list/index16.html)

##リスト内包表記の使い方
###基本形
[式 for 変数 in イテラブルオブジェクト]

リストを効率的に書くための方法らしい。

###実際に使ってみる
“`python:
[tweet.user.name for tweet in tweepy.Cursor(api.search, q=’スマブラ’).items(10) if list(tweet.text)[:2] != [‘R’, ‘T’]]
“`

いったん終わる

元記事を表示

初心者のためのpandas基礎⑤Pivotテーブル(Excel対比付き)

#pandasとは
Pythonにて、構造化データ(テーブル型のデータ)を扱うためのライブラリです。ファイルの読み込みやその後の加工・抽出処理などを簡単に行うことができ(SQL的な感覚で行うことができ)、機械学習などのデータの前処理で必須となるライブラリです。
他項目への目次は[こちら](https://qiita.com/Yanagawa_Yoshihisa/items/e1d7d0e939f58e7301ea)になります。

#はじめに
本記事では、Pivotテーブルについて記載します。Pivotとは何か等は省略します。基本的にはExcelではここの設定がpandas構文ではこうなりますという記載とします。

サンプルはタイタニックのデータで試してみます。タイタニックがわからない人は「kaggle タイタニック」で調べて下さい。

“`python:
dataframe = pd.read_csv(‘train.csv’)
“`

#使い方
まずはライブラリをインポートします。pandasにpdという名前をつけてimportします。

“`python:
import pan

元記事を表示

OpenCV を使ってお絵かきアプリを作る方法

#0.最初に
今回作るものがどういう感じで動くのか見てみたい方は、[こちら](https://youtu.be/RH7_kFyjqTM)(youtubeの動画)からどうぞ。
#1.実装
“`opencv.py
import cv2
import numpy as np

drawing = False
color = (255,255,255)
ix,iy = 0,0

def nothing(x):
pass

def draw_circle(event,x,y,flags,param):
global ix,iy,drawing,color

b = cv2.getTrackbarPos(‘B’,’image’)
g = cv2.getTrackbarPos(‘G’,’image’)
r = cv2.getTrackbarPos(‘R’,’image’)
s = cv2.getTrackbarPos(‘Size’,’image’)
i = cv2.getTrackbarPos(switch,’image’)

if

元記事を表示

「データサイエンス100本ノック(構造化データ加工編)」 Python-012 解説

##Youtube
[動画解説](https://youtu.be/fZJdGwEu-qQ)もしています。

##問題
P-012: 店舗データフレーム(df_store)から横浜市の店舗だけ全項目表示せよ。

##解答
“`:コード
df_store.query(“address.str.contains(‘横浜市’)”, engine=’python’)
“`

“`:出力
store_cd store_name prefecture_cd prefecture address address_kana tel_no longitude latitude floor_area
2 S14010 菊名店 14 神奈川県 神奈川県横浜市港北区菊名一丁目 カナガワケンヨコハマシコウホククキクナイッチョウメ 045-123-4032 139.6326 35.50049 1732.0
3 S14033 阿久和店 14 神奈川県 神奈川県横浜市瀬谷区阿久和西一丁目 カナガワケンヨコハマシセヤクアクワニシイッチョウメ 045-123-4043 139.4961 35.45918 1495

元記事を表示

yamlで保存してあるconda仮想環境をDocker上で構築

Docker上でPython環境を作るときに`pip`や`Pipenv`なども使うのだが、使うライブラリやパッケージの関係で`conda`環境を使えると便利なことがある。
思った通りのconda環境をDocker上で作るための方法の自分用メモ。

## 1. 動機

Pythonの開発やデータ分析などでMinicondaやAnacondaを使うことがある。
(依存ライブラリも割と一緒にインストールしてくれるので自分で入れなくて良いなど環境構築が楽だったり、バイナリ互換性の問題でcondaの特定チャンネルからのインストールを推奨されるパッケージがあったりする)
その際、やっている作業毎にパッケージやバージョンを変えたかったり、環境を後で再現しやすくするなどの目的で基本はconda仮想環境を使うようにしている。
が、Python以外のところから環境設定・構築が必要になることがあったり、仮想環境と言えどもPCの環境を汚して他と干渉したりの問題が起きるなどで、結局Dockerで対応することが多いため。(で、そのDockerへの移植時に結構苦戦したため)

#### yamlファイルを使う理由

元記事を表示

pythonでyoutubeのライブチャットを取得してテキストファイルに保存する

目的

youtubeの切り抜き動画を作成するために、
チャットのデータがテキストファイルとして手元にあったら便利だと思ったので作成しました。
需要があるかわかりませんが、いろいろ躓いた箇所があったので残しておきます。

こちらの記事をもとに作成しました。
勝手にリンクはってるので、怒られたら消します。


https://teratail.com/questions/276731?link=qa_related_pc
https://teratail.com/questions/263421?link=qa_related_pc

必要環境

python 3

・pip でインストールするやつ
BeautifulSoup
requests
lxml

コード

“`rb
from bs4 import BeautifulSoup
import json
i

元記事を表示

[Python]オブジェクトの属性にアクセスしたときの挙動

Pythonの属性にアクセスしたときの挙動が[この記事](https://www.lifewithpython.com/2018/09/python-attribute-access-internal-flow.html)にまとめられていたのですが、忘れそうなのでコードの形式で整理しておきます。

“`python
class MyGetDescriptor:
def __init__(self, msg):
self.__msg = msg
def __set_name__(self, owner, name):
self.__name = name
def __get__(self, instance, owner):
return self.__name + ” ” + self.__msg
def __set__(self, instance, value): # これは必要
pass
class ClassA:
get1 = MyGetDescriptor(“A Desc

元記事を表示

PulumiでAWSにWEBアプリの最小構成を構築する

# はじめに
Pulumiはプログラミング言語(現在サポートされているのは、JavaScript、TypeScript、python、go、C#)によりインフラをコード管理するためのツールです。

Pulumiを使ってpythonでAWSにWEBアプリを動かすための基本的な構成を構築してみて気づいたことなどを書いてみます。

pulumi環境構築事などについては下記のチュートリアルを参考にしてください
https://www.pulumi.com/docs/get-started/aws/

# 実行環境
python: 3.7.7
pulumi: 2.7.1
aws-cli: 1.18.102

# 構成について
### 構成図
スクリーンショット 2020-07-24 19.32.59.png

### 今回作

元記事を表示

Ren’Pyで2D RPGを作る(1)

# 概要
こんにちは、しがないエロゲーマー蟹丸です。今回は[**Ren’Py**](https://www.renpy.org/)というオープンソースのビジュアルノベル制作エンジンを使って2D RPGを作っていきたいと思います。
まだRen’Pyでどこまでできるのかがわかっていないので途中で挫折する可能性はありますが、失敗のメモも大事なので残しておこうと思います。

**本記事の範囲**
Ren’Pyを選んだ理由、Ren’Py導入、RPG用Cookbookを試すところまで

# 背景:なぜRen’Py?
introductionで述べたようにRen’Pyはビジュアルノベル制作エンジンです。じゃあなんでRPGを作るのにこれを選んだの?という話をします。端的に言えば「**Pythonで書けるの神では?**」に尽きるので、読み飛ばしてもらっていいです。

まずゲーム制作といえば有名なものがいくつかあります。

– [ツクール](https://tkool.jp/products/index.html)
– [WOLF RPGエディター(ウディタ)](https://www.silversec

元記事を表示

pythonテクニック データの読み込み read_csv/sas7bdat/connect

# pythonによるcsv/excel/sasデータの読み込みとデータベースの接続方法

csvの読み込みならread_csv
excelの読み込みならread_excel
SASデータセットの読み込みならsas7bdatやpandasのread_sas
DBへの接続ならsqlite3.connectなど

# 準備
import pandas as pd
import dask
import dask.dataframe as dd
from dask.delayed import delayed
import sqlite3
from sas7bdat import SAS7BDAT

# csvの読み込み read_csv

Data = pd.read_csv( “パス/ファイル名.csv” )
Data = dd.read_csv( “パス/ファイル名.csv” ).compute()

Daskの方が処理速度はやいので、大容量データの場合はDaskの方がいいかも

列名や型を指定する場合(データの1行目に列名あるならheader = 0で1行目無視)
FilePass

元記事を表示

【Python (PyTorch)】勾配降下法で多変数関数の最小値を求める

検索しても意外とイイ感じのがヒットしなかったので、Python(PyTorch)を使って「**多変数関数の最小値と最小値を実現する点の座標を勾配降下法を用いて求める方法**」についてまとめておきます。

## 実行環境
OS : Windows10
環境 : Anaconda(エディタ:Jupyter Notebook)
言語 : Python3
使用ライブラリ : PyTorch,numpy
※Anaconda,PyTorchのインストールについては下記を参考にしてください。

## 勾配降下法とは
実装の前に簡単に勾配降下法について簡単に説明します。

勾配ベクトルは、以下の性質を持ちます。
『 関数の勾配ベクトルの方向は「**その点から少し動いたときに(近傍のうち)関数の値を最大にする方向**」となる 』
つまり、勾配ベクトルにマイナスをかけた方向は「**その点から少し動いたときに(近傍のうち)関数の値を最小にする方向**」になります。この性質を利用して、点を勾配方向に動かしていくことで関数の最小値を求める方法を「勾配降下法」と言います。
詳しくは[こちら](https:/

元記事を表示

aibo Events API を使って aibo に音声コマンドを実行してもらう

先週、先々週と仮面ライダーゼロワンに
天津垓の相棒である AI 犬型ロボットさうざー役として出演していた aibo。

元記事を表示

Google翻訳APIをPythonで実行する

#概要
論文を翻訳して読むのに、ブラウザ上でちまちまGoogle翻訳にコピペしていたのだが、いい加減面倒になった。そこでテキストファイルに書かれた英文を読みとり、翻訳結果を出力するPythonスクリプトを書いてみようと思った。

翻訳はGoogleAPIを使おうと思って事例を調べた所、[Google翻訳APIを無料で作る方法](https://qiita.com/satto_sann/items/be4177360a0bc3691fdf)という記事があったので、試してみた時のメモ

#元記事からのAPI変更点
元記事はGetでAPIを叩いていたが、大量の文章を投げる場合の文字列制限が気になったので、以下の通りPostでもアクセスできるようにした。

“`javascript
function doGet(e) {
return doPost(e);
}

function doPost(e) {
// リクエストパラメータを取得する
var p = e.parameter;
// LanguageAppクラスを用いて翻訳を実行
var trans

元記事を表示

BluetoothゲームコントローラーをIoTボタンとして使う。

出退勤で打刻するためにAmazon Dash Buttonを使っていたのですが、電池交換に失敗して壊してしまったので、代替として、[MOCUTE-039](https://www.amazon.co.jp/dp/B07KSC2DFV)という手のひらサイズのBluetoothゲームコントローラーを使うことにしました。ちなみにDash Buttonは2個持っていたのですが、どちらも電池交換に失敗して壊しました。つらい。

連携先にRaspberry Pi 3を使います。私が使っているのはRaspberry Pi 3 Model B Rev 1.2で、OSはRaspbian Busterです。

## Bluetoothペアリング

### 事前作業
ペアリングには`bluetoothctl`を使いますが、`bluetoothctl` でスキャンするとどのMACアドレスがMOCUTE-039なのかわからないため、適当なスマホ端末でペアリングしてMACアドレスを調べてから作業を実施しました。

“`
[NEW] Device 16:01:xx… 16-01-xxx… # デバイス名が

元記事を表示

【Python】numpyの基本的な使い方

##numpyについて
numpyを利用することで、行列等の数値計算を簡単に計算することが可能です。

###行列の生成

以下のようにnp.arrayにリストを引数にすることで配列を生成できます。

“`
import numpy as np

array = np.array([1,2,3,4])

array
“`

“`実行結果.
array([1, 2, 3, 4])
“`

リストのリストを引数にすることで、行列(2行4列)を作成することができます。

“`
array2 = np.array([[1,2,3,4],[11,22,33,44]])
array2
“`

“`実行結果.
array([[ 1, 2, 3, 4],
[11, 22, 33, 44]])
“`

何行何列の行列であるかを調べるためにshapeメソッドを使用することで調べることができます。

“`
array2.shape
“`

“`実行結果.
(2, 4)
“`

arangeメソッドを使用することで引数の値分の配列を生成することができます。

“`

元記事を表示

はじめてのPython3 ~はじめての変数編~

# はじめに
注意点などは[前回](https://qiita.com/kashun0410/items/4113051964d5a1cd0bb5)を参照してください。

## 変数に文字列を入れる
“`
# 3つの文章

print(“勇者は、荒野を歩いていた”)
print(“勇者は、モンスターと戦った”)
print(“勇者は、モンスターをたおした”)

“`
↓実行結果
—–
勇者は、荒野を歩いていた
勇者は、モンスターと戦った
勇者は、モンスターをたおした
—–

もし、「勇者」を「賢者」に修正する時にprint内の「勇者」を1つ1つ変えるのは手間がかかることがある。
そこで使うのが変数
変数を使うと変更する箇所が1つに纏められるといったメリットがある。

※変数にデータを入れることを代入という。

“`
player = “賢者” # 文字データを登録する場合はダブルクォーテーションで囲む

# 文字データが入った変数を表示、連結させるには以下のように記述する

print(player + “は、荒野を歩いていた”)
print(pl

元記事を表示

OTHERカテゴリの最新記事