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

Python関連のことを調べてみた2021年01月18日
目次

pythonでスプレッドシートとSlackを連携させてBOTを作ってみる2/2(python+gspread+slackbot)

##はじめに
[前回の記事](https://qiita.com/KScookie/items/580d000d1eda58bfa8b4)では、Slack上でスプレッドシートにあらかじめ登録されている単語をBOTに送信すると、その意味を返してくれるというところまで実装しました。

今回はその続きです。

##やりたいこと
* 単語の登録

* 登録されている単語の一覧出力

* 単語の削除

* これら全てSlack上で完結させる

##コードを書いていく

コードを追加するのはmy_mention.pyだけです。

“`python:my_mention.py
@respond_to(‘登録:(.*)’)
def mention_func2(message, entry_word):
entry_list = entry_word.split()
entry_len = len(entry_list)
values_list = worksheet.col_values(1)
if entry_len == 2:
gyou = len(values_list

元記事を表示

Python Tweepyを使ってキーワードを含むツイートを取得

週末ハッカソンのWEBサイト作成で #週末ハッカソンのキーワードが含むツイートを取得したい。
Pythonのtweepyモジュールを使い取得する。

## Consumer API keys と Access token & access token secret を取得

[Twitter Developers](https://developer.twitter.com/en/apps) から アプリケーションを登録してConsumer API keys と Access token & access token secret を取得する。

## tweepy インストール

Twitter API の操作はtweepyが便利、是非使おう。

“`
$ pip install tweepy
“`

## OAuth 認証

Twitter API を操作するには OAuth認証が必要
Developerサイトで取得したAPI KEYを使い認証を行う。

“`Python
import tweepy

# 取得したAPI KEY、TOKENを入力
API_KEY = “”

元記事を表示

日本語WordNetを使用した類義語検索 / リスト化

日本語WordNetを使用して、類義語を検索してリスト化するためのコードを作成しました。
# そもそもWordNetとは
下記の記事を参考にしましょう。
[日本語WordNetを知る](https://qiita.com/hiraski/items/50fea4c489bcc4823bc4)
[日本語WordNetを使って、類義語を検索できるツールをpythonで作ってみた](https://qiita.com/pocket_kyoto/items/1e5d464b693a8b44eda5)
※2つ目のリンク記事はコード作成時にも参考にさせて頂きました

# 早速コード
環境:Google Colaboratory
日本語WordNetのHPからダウンロードした「wnjpn.db」をsqliteで加工/抽出して、pandasのDataFrameに格納、作成したDataFrameから類似語を検索する、という流れとなります。

“`python
import gzip
import shutil
import sqlite3
import pandas as pd

# 日本語wordn

元記事を表示

Anacondaを使わないpyhon環境構築(簡単起動付き)

#Anacondaを使わないpyhon環境構築(簡単起動付き)
・環境
-Windows10
###———-↓手順↓———–
####1.pythonをインストール

↓以下の記事最強↓

Pythonインストール方法とAnacondaを使わない3つの理由


Anacondaを使わない理由とかも述べてあります(商用利用禁止以外の理由)

これでpythonインストールはできたかと。

##!!ここで確認!!
「PATHを通す」にチェックをちゃんとしたか?
なんのこと?ってなったら、前の記事に戻ってもう一度確認

次から、jupyter notebook や labをどう立ち上げていくかを述べます(やり方は何通りもあるはず)

####2.コマンドプロンプトの起動
起動のショートカット → [Windows]+[R]キー → cmd と入力しEnter

####3.必要モジュール等のインストール

とりあえず、jupyter lab と juypter notebook

“`python:jupyterlab
pip in

元記事を表示

複数ファイルでのParquet・HDF5でのVaex・Daskなどのパフォーマンス比較

先日[単一のファイルでのCSV・Parquet・HDF5におけるPandas・Dask・Vaexの簡単なパフォーマンス比較](https://qiita.com/simonritchie/items/a1a18a36de3c658cf816)をしました。

ただ、普段の作業では時系列データなどでたくさんのファイルを扱ったりすることが多いため、今回は複数ファイル・且つ普通に扱うとメモリが結構きついくらいの行数も含めてざっとパフォーマンス比較をしていきます。

# TL;DR

– 今回試した時系列想定のデータでは思っていたほどVaex + 未圧縮HDF5とVaex + Snappy圧縮されたParquetで差が出ませんでした。取り回しのしやすさやファイルサイズなどを考えるとSnappy圧縮のParquetは結構良い選択に思えます。
– ※前回の単一ファイルでの比較では、1つのファイルで行数がもっとぐぐっと多い場合にはHDF5の方がParquetよりも速かったので、1つのファイルだけで大量のデータが入っているようなケースだとHDF5が輝いてきそうです。
– PandasやDaskは時系

元記事を表示

pythonでextension methodを実装してみる

# extension method(拡張メソッド)とは

– [拡張メソッド (C# プログラミング ガイド)](https://docs.microsoft.com/ja-jp/dotnet/csharp/programming-guide/classes-and-structs/extension-methods)より

> 拡張メソッドを使用すると、新規の派生型の作成、再コンパイル、または元の型の変更を行うことなく既存の型にメソッドを “追加” できます。

# 実装してみる
C#のような拡張メソッドの実現は困難なので、ここでは拡張用クラスで対象型のインスタンスをラップして、オブジェクト指向的なメソッド実行が可能、もしくは、単なる関数として実行可能であることを目指します(継承ではなく、移譲によるプログラミング)。

[公式ドキュメント](https://docs.python.org/3/howto/descriptor.html#functions-and-methods)によると、`__get__`を実装することで、関数として振る舞うか、メソッドとして振る舞うか制御可能な

元記事を表示

Cpaw Level3のWrite Upを自分なりにわかりやすくまとめてみた

こんにちは。就職してからCTFやれてなかったんでつい最近やれてなかった残りのCpawCTFの問題を全部解きました。
今回はそれらの問題に対する簡単なWriteUpをまとめてみようと思います。
とは言っても、今回の問題はLevel3ということもあり、しっかりリサーチをしないとなかなか難しい問題ばかりです。
問題に挑む際は、できる限り様々なキーワードで検索をかけてみるか、多角的な視点をもって解法することをお勧めします。

#実行環境
Windows10
前提条件はLevel1&Level2のWriteUpで記載した状態のものと同じとして行います。
[前回のWriteUp](https://qiita.com/While_Off_White/items/85df4c8ee50b3dbb5848 “Cpaw Level1&Level2のWrite Upを自分なりにわかりやすくまとめてみた”)

#この記事を見る前に
今回の問題も、是非とも自分の手でまず解いてみてください。自分で解くことにより、自分にノウハウが蓄積できますし、また違う発見ができると思いますよ。

#WriteUp

##

元記事を表示

A/Bテストの統計的仮説検定と必要データ数

# 概要
自分の復習のために、A/Bテストの効果を統計的仮説検定する方法を記述する。
また、A/Bテストに必要なデータ数を計算するための方法を示す。
検算と理解の促進のために、随所でPythonによるシミュレーションを行い、導出した式の精度を確認する。

最後に、[AdobeのSample Size Calculator](https://docs.adobe.com/content/target-microsite/testcalculator.html)を再現することで、結果の検証を行う。
# 前提
サイトX, Yの訪問者の広告のクリック率$p_1, p_2$に有意差があるかどうか検証したい。
訪問者が広告をクリックしたときに1, しなかったときに0を取る数列を$\{x_i\}, \{y_i\}$とする。
それぞれの平均$\bar{x}, \bar{y}$は、データ数が増えれば増えるほど$p_1, p_2$に近づくため、差分$|\bar{x}-\bar{y}|$が大きければクリック率$p_1, p_2$の間に有意差があるといえるが、それを統計的に確かめたい。

今、

帰無仮説

元記事を表示

ディスクリプタを使うことで、@property メソッドの振る舞いを再利用する【16/100】

# はじめに

Twitterで一時期流行していた 100 Days Of Code なるものを先日知りました。本記事は、初学者である私が100日の学習を通してどの程度成長できるか記録を残すこと、アウトプットすることを目的とします。誤っている点、読みにくい点多々あると思います。ご指摘いただけると幸いです!

# 今回学習する教材

– [Effective Python](https://www.amazon.co.jp/Effective-Python-%E2%80%95Python%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%82%92%E6%94%B9%E8%89%AF%E3%81%99%E3%82%8B59%E9%A0%85%E7%9B%AE-Brett-Slatkin/dp/4873117569/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=Effective+python&qid=1609408832&sr=8-3)

元記事を表示

マインクラフトの音ブロック演奏を自動で生成するWebアプリを作ったお話

#{タイトル}とは何?
https://mc-note-functioner.herokuapp.com/
「コマンド一つでマイクラ内で音楽を演奏できるデータパック」
を作るwebアプリです。
#note block studioとの差別化点
tickごとの管理ができるため、[通常のマインクラフトで表現できない連符](https://www.youtube.com/watch?v=PYhc8vX1DuA&t=195)を再現でき、
データパックなので手軽に実行することができる。
データパックなのでコマンドブロック等で管理すれば、BGMなどにも簡単に使える。
note block studioではmidiファイルの編集ができるが、
midiの編集をするのであればそれ専用のソフトを使うのがほとんどであると思う。
#Midiファイルを解析する
Pythonのpretty-midiを使用しました。

“`py
import pretty_midi
import numpy as np
PITCH = {0:0.66, 1:0.70, 2:0.74, 3:0.78, 4:0.84, 5:0.89

元記事を表示

pythonからgoogle cloud platformのinstanceを動かすまで

最初に認証キー作ってからでないとだめ
[サービス アカウントとして認証する  |  Google Cloud](https://cloud.google.com/docs/authentication/production)

[Python 用の Cloud クライアント ライブラリの使用  |  Compute Engine ドキュメント  |  Google Cloud](https://cloud.google.com/compute/docs/tutorials/python-guide)

> python3 -m pip install –upgrade google-api-python-client

[python-docs-samples/create_instance.py at master · GoogleCloudPlatform/python-docs-samples](https://github.com/GoogleCloudPlatform/python-docs-samples/blob/master/compute/api/create

元記事を表示

高ランクティーモの勝率の良いアイテムの買い方を調べる

League of Legendsのゲームはキャラクターやアイテムが多く、初心者はとっつきにくい。
opggというサイトで勝率の良いキャラや、アイテムの買い方を調べることができる。

参考:topティーモの勝率の良いアイテムの買い方、ベスト3
https://jp.op.gg/champion/teemo/statistics/top
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/168530/e073a1c4-1cc6-3b92-8ae4-2925f9850bde.png)

今回は高ランクプレイヤーがtopティーモを使った時の、勝率の良いアイテムの買い方を調べる。

初回は使用するAPIの紹介。

– バージョンリスト取得
https://ddragon.leagueoflegends.com/api/versions.json
-> 先頭の要素が最新バージョンを表す

– 言語リスト (鯖?) 取得
https://ddragon.leagueoflegends.com/cd

元記事を表示

ゼロから作るDeep Learning❷で素人がつまずいたことメモ:7章

# はじめに
ふと思い立って勉強を始めた[「ゼロから作るDeep Learning❷ーー自然言語処理編」](https://www.oreilly.co.jp/books/9784873118369/)の7章で私がつまずいたことのメモです。

実行環境はmacOS Catalina + Anaconda 2019.10、Pythonのバージョンは3.7.4です。詳細は[このメモの1章](https://qiita.com/segavvy/items/91be1d4fc66f7e322f25)をご参照ください。

(このメモの他の章へ:[1章](https://qiita.com/segavvy/items/91be1d4fc66f7e322f25) / [2章](https://qiita.com/segavvy/items/52feabbf7867020e117d) / [3章](https://qiita.com/segavvy/items/1510d8c264edd291e0ef) / [4章](https://qiita.com/segavvy/items/a286143dbc

元記事を表示

# Pythonの再帰関数の変数の取り扱いについてのメモ

# Pythonの再帰関数の値

再帰関数を組んでいる際に、pythonでは関数外の値が関数内でどのように書き換わるのかわからなくなったため検証しました。

## 前提知識

関数内で関数外で定義された変数がどう取り扱われるかを確認します。

“`python
a=10
def replace1():
a=15
replace1()
print(a)

>10
“`
この場合、関数内でのみaが変化します。

“`python
al=[10]
def replace3():
al=[15]
replace3()
print(al)

>[10]
“`
この場合も、関数内でのみalが変化しています。

“`python
al=[10]
def replace2():
al[0]=15
replace2()
print(al)

>[15]
“`
この場合は、関数内で変更された値が関数外でも変化しています。
これはリストがミュータブルなオブジェクトのためです。

## 再帰関数にて変数の取り扱いの検証

ここからは再帰関数にて変数の取り扱いを試していきま

元記事を表示

pythonでスプレッドシートとSlackを連携させてBOTを作ってみる1/2(python+gspread+slackbot)

わざわざ検索をするまでもないけど気になった事とかってありますよね。

最近はpythonの学習を始めていて、どうせなら普段使いしているSlackと連携させてBOTを作って、自分があらかじめスプレッドシートに書いた単語をSlack上で入力したらその意味を返してくれるようにしようと考えました。

##やりたいこと

* pythonをスプレッドシート(データベースとして用いる)と連携させて、まずは単体で動作させる

* その後、Slackbotライブラリを導入し、BOTに向かって送信した単語に対応する意味を返してもらう

* Slack上で単語の登録、一覧の出力、削除を可能にする(次の記事で書きます)

##準備

[こちらのページ](https://tanuhack.com/operate-spreadsheet/#i-5)を大いに参考にして、pythonのプログラム上からスプレッドシートを開くところまで実装します。

“`python:test.py
import gspread
import json

from oauth2client.service_account impor

元記事を表示

OAuth認証してアクセストークンを取得する

PythonでOAuth認証を突破して、アクセストークンを取得するスクリプトを書きました。
解説などはあとで書き加えたいと思います。

https://qiita.com/kai_kou/items/d03abd6012f32071c1aa を参考にしました。

“`python:oauth_authenticator
from http.server import HTTPServer
import ssl

from webbrowser import open_new
import random
import string
import urllib.parse

from access_token_request_handler import AccessTokenRequestHandler

class OAuthAuthenticator:

def __init__(self, client_credential, client_info, authorize_url):
# クレデンシャル読み込み
self._client_

元記事を表示

VBAユーザがPython・Rを使ってみた:行列

# はじめに

機械学習の勉強を始めたVBAユーザです。
備忘録としてPython・Rの文法をVBAと比較しながらまとめていきたいと思います。

**目次**

– [行列](#行列)
– [行列の作成](#行列の作成)
– [mxn行列](#mxn行列)
– [単位行列](#単位行列)
– [ゼロ行列](#ゼロ行列)
– [対角行列](#対角行列)
– [その他](#その他)
– [行列の属性](#行列の属性)
– [行列の要素の取得](#行列の要素の取得)
– [行列の計算](#行列の計算)
– [線形代数の計算](#線形代数の計算)
– [要素ごとの演算](#要素ごとの演算)
– [まとめ](#まとめ)
– [一覧](#一覧)
– [プログラム全体](#プログラム全体)

# 行列
今回は、機械学習には不可欠な行列の計算についてです。

## 行列の作成

### mxn行列
“`math
A = \begin{pmatrix}
1 & 2 & 3 & 4 \\
5 & 6 & 7

元記事を表示

[Blender] Modeling tips まとめ Mesh Modeling編

#目次

30.複数のオブジェクトを同時に編集する
31.頂点間に辺を挿入する
32.辺をスライドさせる
33.頂点をマージする
34.距離が近い頂点を自動でマージする
35.辺を融解する
36.カーソルの位置まで面を押し出す
37.編集モードでミラーを使う
38.オブジェクトを変形させずに辺の角度をかえる
39.面に垂直な向きに動かす
40.面を規則的に埋める

#30.複数のオブジェクトを同時に編集する

[SHIFT]を押しながら複数のオブジェクトを選択し、[TAB]キーを押して編集モードにする。

#31.頂点間に辺を挿入する

頂点などを2つ選択して、[J]キーを押す

![ezgif.com-gif-maker (65).gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/654004/7c9dc99a-a95d-3c69-e83a-44184918e034.gif)

#32.辺をスライドさせる

①スライドさせたい辺を選択
②[G]をダブルタップ

#33.頂点をマージする

複数頂

元記事を表示

Docker-compose + Django + MySQL + Nginx + uwsgi を使った環境の初期設定

## 概要
* 表題を利用した環境を作る必要があったので、メモします。
* 合わせて日本語化など

## 環境
* Docker + Docker-compose が利用できること。
* Python3.6
* Django3.1(最新)

## 手順
### ディレクトリの構成
* 下記構成でディレクトリとファイルを作成します。

“`
./WORKDIR
|— docker-compose.yml # Docker-compose本体
|—.gitignore # git対象外用(今回は作るだ、gitを使うときに利用する)
|—nginx
|—nginx.conf # nginxの設定ファイル
|—uwsgi_params # uwsgi用パラメータ
|—django
|—Dockerfile # Dockerfile
|—requirements.txt # pipでインストールするリス

元記事を表示

【pytorch-lightning入門】torchvision.transformsの使い方と自前datasetの自由な作り方♬

いろいろなデータを使いたいということで、自前datasetの作り方をいろいろ試してみたので、まとめておきます。
denoising, coloring, ドメイン変換などをやるためには、必須な技術です。

今回は、二つの要素をまとめます。
一つは、torchvision.transformsの各種クラスの使い方と自前クラスの作り方、もう一つはそれらを利用した自前datasetの作り方です。
後半は、以下の参考がありますが、試行錯誤を随分したので、その結果を載せることとします。

【参考】
①[pyTorchのtransforms,Datasets,Dataloaderの説明と自作Datasetの作成と使用](https://qiita.com/mathlive/items/2a512831878b8018db02#5-2-3-dataloader%E3%81%AB%E3%82%88%E3%82%8B%E4%BD%BF%E7%94%A8)
②[PyTorchでDatasetの読み込みを実装してみた](https://qiita.com/kumonk/items/0f3cad018cc9a

元記事を表示

OTHERカテゴリの最新記事