Python3関連のことを調べてみた2019年11月12日

Python3関連のことを調べてみた2019年11月12日
目次

EC-CUBE4で会員データを大量に作成する

###環境
・EC-CUBE4.0.3
・PostgreSQL10

##はじめに
EC-CUBEで会員データや商品/受注データを大量に作るときには、EC-CUBE3系の頃から[nanasessさん](https://qiita.com/nanasess)作成の Fakerを使った` GenerateDummyDataCommand ` コマンドに大変お世話になっています。
基本的に言って、` GenerateDummyDataCommand `で事足りますが、今回は別の方法で、50万件、100万件の会員データをサクッと作る方法を載せます。

###概要
50万件の会員データを作るということは、50万行のCSVファイルを作り、’ \COPY ‘コマンドを流す(PostgreSQLの場合)ということに帰着します。
今回は、数万のファイルもすぐに書けるPythonでCSVファイルを作ります。

##Google Colaboratoryでの実行
Jupyter Notebookのコードは[こちら](https://colab.research.google.com/drive/1PoTuI

元記事を表示

ボソンの生成/消滅演算子で記述される演算子による状態発展をコードに落とし込む

$$
\def\bra#1{\mathinner{\left\langle{#1}\right|}}
\def\ket#1{\mathinner{\left|{#1}\right\rangle}}
\def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}}
$$

## 前置き
いつもとタイトルの雰囲気を変えてますが、今回も光量子計算の話題です。
光の量子状態に演算子(量子ゲート)を作用させる計算について、[こちらの記事](https://qiita.com/ryuNagai/items/b830a4433d317362b9fd)ではガウス状態間の変換に限りガウス分布の平均、分散に対する比較的単純な計算で書けることを紹介しました。

今回はガウス状態に限定されない、より一般的な形式の実装を試みます。

## 演算子の記述

一般的に、光量子における演算子は生成・消滅演算子を使って記述します。
今回は簡単な例としてDisplacement operatorを扱います。

$D(\alpha) = \exp(\a

元記事を表示

DiscordとGoogleSpreadSheetのファイル送受信

# はじめに
DiscordとGoogleSpreadSheet(以下GSS)を連携して書き込んだり読み込んだりしたい!という考えから作成したもの

結果できたものは
1. Discordで送信したメッセージや、ファイルのURLをGSSに書き込み
2. GoogleAppsScript(以下GAS)で送信したメッセージやファイルをDiscordに書き込み
3. 送信したファイルのURLをGSSに書き込み

使用言語は以下
– python3.6.4
– HTML5
– JavaScript
– Vue.js
– GAS

ちなみにVue.jsを使ってるのは筆者の趣味。使わなくても問題ないはず(試してないけど)

# Discordから送信

## 全体ソースコード
“`python:DiscordBot.py
import discord
import gspread
import json

client = discord.Client()

#ServiceAccountCredentials:Googleの各サービスへアクセスできるservice変数を生成します。
from

元記事を表示

Django: 文字列からクラスをImportする

# Django 文字列からクラスをImportする。
サンプルの[Repositoryはこちら](https://github.com/Saknowman/django_setting_sample_project/)です。
Repositoryは[APPごとのSetting](#)と兼ねているのでご了承ください。

Djangoで文字列からクラスをImportしたいときありますよねー。
そういう時は、**django.utils.module_loadingのimport_string**を使います。

“`python
from django.utils.module_loading import import_string

cl = import_string(‘rest_framework.permissions.IsAdminUser’)
“`

## 使い道
自分はPermissionを文字列の配列でsettings.pyに設定し、RestFrameWorkのViewsetで使いたかったときに使用しました。

“`python:project/se

元記事を表示

Django: 再利用可能なAPPの設定をDjangoRestFrameWorkにならって実装

# Django: 再利用可能なAPPの設定をDjangoRestFrameWorkにならって実装

Djangoで開発しはじめて、再利用可能なAPPを作り別のProjectでInstallしたときに、APPで設定しているデフォルトの設定が変更できない….
となったのでアプリケーションごとの設定を**project/settings.py**から変更できる方法を探していました。
**Django Rest Framework** にいいコードがあったので、参考にやってみました。

簡単な **Todo Task Api** を例にやってみます。

動くサンプルの[Repositoryはこちらから](https://github.com/Saknowman/django_setting_sample_project/)

## Django Rest Framework での例

“`python:project/settings.py

REST_FRAMEWORK = {
‘DEFAULT_FILTER_BACKENDS’: [‘django_filters

元記事を表示

【機械学習】不均衡なデータへの対応めも

# はじめに

普段の業務の傍ら趣味程度に機械学習やら統計学やらいじっているのだけど、ちょっと前に所謂不均衡なデータの分類問題に触れることがあったので、その対応方法についてメモします。

# 対象読者

本記事は初歩的なことしか書いていないけど、以下のような人には読む価値あるかも。

* 機械学習初心者
* 不均衡でないデータの分類問題はやったことあるけど、不均衡なデータはよくわからない人

# 不均衡なデータとは
そもそも「不均衡なデータとは何か」について

学習データの内、片方のクラスのデータの数がもう片方のクラスのデータの数より極端に多いデータのことです。

例えば以下のように、陽性のデータの数が陰性のデータの数の100分の1のようなデータですね。
病気の検査や異常値の検出などがイメージしやすいかと思います。

| クラス | データ数 |
|——-|———–|
| 陽性 | 100 |
| 陰性 | 10000 |

## 不均衡だと何が問題なの?

工夫せず普通のデータと同じようにモデルに

元記事を表示

Python の http サーバー

サーバープログラム
>> Nginx + fcgiwrap という環境で作動します。
>> Get と Post の両方に対応します。
>> aa と bb を与えて、和と差を計算して返します。

“`py:test_aa.py
#! /usr/bin/python
# -*- coding: utf-8 -*-
#
# text_aa.py
#
# Oct/11/2019
#
# ———————————————————————
import sys
import json
import cgi
#
# ———————————————————————
ff=cgi.FieldStorage()
#
str_aa = ff.getfirst(“aa”,””)
str_bb = ff.getfirs

元記事を表示

Pythonで並列処理をするなら知っておくべきGILをできる限り詳しく調べてみた

最近Pythonでオーケストレーション層(BFF)のアプリケーションを書く機会がありました。

Python3.4からはasyncioが導入され、I/Oバウンドな処理はシングルスレッドでも効率的に捌けるようになったものの、依然としてCPUバウンドな処理はGILが存在することで、シングルプロセス下では並列処理が制限されます。

このことから言語特性として、CPUバウンドよりもI/Oバウンドな処理を複数捌くことに適していると見ることができます。言語選択の意思決定をする際に重要なファクターとなりますが、そのためにはGILの仕組みを改めて知る必要があると思い、調べてみました。

## GIL(グローバルインタプリタロック)とは

そもそもGILとは何のことでしょうか。

正式にはGlobal Interpreter Lock(グローバルインタプリタロック)といい、PythonやRuby等の言語に見られる排他ロックの仕組みです。この2つの言語だけを見ると動的型付け言語に特徴的と思われるかもしれませんが、そうではなく、むしろC言語との協調に関わっています。

### PythonはC言語で実装され

元記事を表示

Pythonを実行しようとしたらMicrosoftStoreに飛ばされた件

##対象読者

– PowerShellでPythonを実行したらMicrosoftStoreに飛ばされるようになった人
– PowerShellでPythonスクリプトを実行しても何も起らなくなった人
– パスは設定済みで元々Pythonが実行できていた人

##環境

– Windows10 Home
– Anaconda3

##結論
~~原因は不明ですが~~下記パスが参照されていると思われます。環境変数の順位を変更するなどしましょう。
Windows 10 May 2019 Update が原因のようです(@Miyukiumooさんありがとうございます)
https://forest.watch.impress.co.jp/docs/serial/yajiuma/1188376.html

“`console:諸悪の根源
C:\Users\user\AppData\Local\Microsoft\WindowsApps\python.exe
“`

##経緯

###Pythonが実行できない
いつも通りPowerShellでPythonスクリプトを実行しようと思ったら、何

元記事を表示

Pythonのデータ構造と操作(Python学習メモ③)

今回はPythonで扱うオブジェクトのデータ構造についての学習メモです

## リストで使えるメソッド

### list.append(x)
リストの末尾にアイテムを1つ追加する
a[list(a):] = [x]と等価

### list.extend(L)
リスト末尾に、与えられたリストLの全アイテムを追加することでリストを伸長する
a[len(a):] = Lと等価

### list.insert(i, x)
指定された位置にアイテムを挿入する。第1引数は要素のインデックス。挿入はこの要素の前に行われる。
a.insert(0, x)とするとリストの先頭に挿入される
a.insert(len(a), x)はa.append(x)と等価

### list.remove(x)
値がxである最初のアイテムを削除する
存在しなければエラー

### list.pop([i])
指定された位置のアイテムをリストから削除し、このアイテムを返す
インデックスが指定されていない場合は最後のアイテムを返し、リストから削除する
※`[]`はオプションの意。実際`[]`を記述するわけではない

元記事を表示

pythonでCGIアプリケーション(2)

#はじめに
pythonでcgiを動かすということで、少し実務的な内容のことを試してみた。
別にそんな大したもんではないです。
pythonのサーバの起動方法は前回の記事を参照してください。

#作っていく
前回作ったものを応用して、htmlに名前と年齢を入力するとテーブルに名前と年齢を格納するアプリケーションを作ってみた。
まずは以下のスクリプトを作成。pythonファイルはcgi-binの下に保存。

“`html:test7.html



count:0 age_average:0

name age
name
age
元記事を表示

第一回日本最強プログラマー学生選手権-予選- E – Card Collector(閉路判定付きUnion Find)

# 第一回日本最強プログラマー学生選手権-予選- E – Card Collector(閉路判定付きUnion Find)

やや特殊なUnion Find。閉路を追加、閉路の数を判定できる機能付き。

“`python

from collections import defaultdict, deque, Counter
from heapq import heappush, heappop, heapify
import math
import bisect
import random
from itertools import permutations, accumulate, combinations, product
import sys
import string
from bisect import bisect_left, bisect_right
from math import factorial, ceil, floor
from operator import mul
from functools import reduce

sys.setrecursi

元記事を表示

【Python】嵐の歌詞をWordCloudで可視化して、結成20年でファンに伝えたかったことを紐解いてみた

#きっかけ
嵐の活動休止まで残り一年ですね。スケスケ衣装の登場からなんともう20年。マルチで活躍する国民的アイドルは結成20年でファンに何を伝えたかったのか?直接お会いして伺いたいとこだが、そんな訳には。なので「歌詞を可視化」して、ファンに伝えたいメッセージを~~6人目のメンバーである~~私が嵐ファンに伝えることにしました。

#環境
・Python 3.7.3
・windows10

#参考資料
[・Uta-Net](https://www.uta-net.com)
[・米津玄師の歌詞をWordCloudで可視化してみた。](https://qiita.com/Senple/items/1ad08b1a7ac9560bef62)

#大まかな流れ
1. 歌詞の収集(スクレイピング)
2. 歌詞を単語にする(形態素解析)
3. 可視化(WordCloud)

#1. 歌詞の収集(スクレイピング)

“`python:scraping.py
import requests
from bs4 import BeautifulSoup
import pandas as pd

list_d

元記事を表示

PythonでDI+モックを使いながら、Clean Architectureでアプリケーションを構築する

業務でPythonを使ってウェブアプリケーションを実装する際、レイヤー毎に関心の分離を行いながら開発するために、Clean Architectureを導入することになりました。

チームメンバーへのナレッジ共有を兼ねて、漸進的型付けとDependency Injectionを用いながら、テスタビリティの伴ったアプリケーションを開発するためのプラクティスをまとめました。

## Clean Architecture

今回はPythonを用いたサンプルを目的としているため、Clean Architectureの解説は簡易に済ませます。

![CleanArchitecture (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17370/e7aa4890-0251-ccc8-26e9-3ede166b3aa3.jpeg)
([The Clean Architecture](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-archit

元記事を表示

【Python】Qiita投稿記事の総閲覧数をAPI使って自動集計

##自分のQiita記事の総閲覧数を知りたい!!
Qiitaの投稿記事の閲覧数は投稿者のみ記事ごとに確認できます。
なので、**自分の投稿の総閲覧数を知るには全ての記事に移動して、電卓で計算すればOK**です!

  
  
  
以上です。


  
  
  
  
  
と1年前の私ならその通りに計算したことでしょう。

しかし、エンジニアになってもう1年も経ってしまったので
そんな原始人みたいなやり方は許されません。

APIを使えば取得できるというのは知っていたので調べてやってみました。

たくさんの記事が出てきましたが、
総閲覧数に関する記事は1つも見つけられませんでした。

最終的には、下記リンクのように
GASを使って定期的に自動集計し、オレオレアナリティクスを完成させたいです。

[【Qiita API】いいね!閲覧数の自動集計](https://qiita.com/Naoto9282/items/252c4b386aeafc0052ba) ←すごい記事
##コード

“`python
import requests
import json
import m

元記事を表示

Advantage Actor Critic : A2C-CartPole Improved version from GitHub

Advantage Actor Critic

The codes bellow doesn’t work at all.
[3_A2C-nstep-TUTORIAL.ipynb](https://github.com/rgilman33/simple-A2C/blob/master/3_A2C-nstep-TUTORIAL.ipynb)

So I improved them myself.
[Google Colaboratory](https://drive.google.com/file/d/1Gtri9p-08-ZVqrCqxVUFDrw_cltIZUSD/view?usp=sharing)

“`python:a2c.py
import gym
import os
import numpy as np
import matplotlib.pyplot as plt

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
import

元記事を表示

mapbox の Map Maching API を使ってGPS誤差を補正しよう!

#マップマッチングとは

自動車の走行データ、自転車の走行データなどのGPSデータは、プローブデータと呼ばれます。
これらは往々にして、GPSの誤差により少しずれた位置にプロットされてしまうことがあります。

それを正しく道路の上にプロットされるように修正する作業を、「マップマッチング」と呼びます。

##mapbox の Map Matching API を使ってみる!

今回は、mapboxという地図サービスのAPIを利用してマップマッチングを行います。
日本ではソフトバンクのビジョンファンドが投資したことでも話題になりました。

公式Webサイト
[Mapbox : Python SDK Map Matching](https://mapbox-mapbox.readthedocs-hosted.com/en/latest/mapmatching.html)

##ライブラリのインストール
準備としてpip を使って、mapmatchingのライブラリをインストールします。

`pip3 install mapmatching`

##sampleコードを実行してみよう。

s

元記事を表示

dockerで動く mecab + python3 の環境を作る

世間ですなる機械学習をといふものを、我もしてみむとてすることにしたなり。

機械学習といえば画像の解析とかの例が多くあるも、CUIに慣れ親しんでいるせいなるか画像系はいまいちテンションがあがらずして、文章系から手をつけてみることにしたなり。

– 機械学習といえばやっぱPythonだよね
– 機械学習の文章関連はmecab使って色々やってるひとが多いみたい。mecab前からさわってみたかったしちょうどいいな
– 個別のPCの環境管理するの最近すっかり面倒くさいから、もちろんdocker上でやろう

というそれはそれは軽い気持ちで環境作り始めたらえらいこと苦労したので、同じ苦労をする人がいないよう書き記すなり。

大変でした…

# これがmecab + pythonが動いた環境です

“`txt:ファイル構成
.
├── docker-compose.yml
└── app
├── Dockerfile
└── requirements.txt
“`

“`docker:docker-compose.yml
version: ‘3’
services:

元記事を表示

Python初心者が「Python文法詳解」を読んだメモ #4

# バックナンバー
– [Python初心者が「Python文法詳解」を読んだメモ #1](https://qiita.com/usayomo/items/7024c619c5f72462cb10)
– [Python初心者が「Python文法詳解」を読んだメモ #2](https://qiita.com/usayomo/items/9c1537678bdde813a273)
– [Python初心者が「Python文法詳解」を読んだメモ #3](https://qiita.com/usayomo/items/57e6156c95e60b3223ca)

“`py:is
# 同じオブジェクトなら真を返す
>>> a = b = [1, 2, 3]
>>> a is b
True

# この場合は別のオブジェクトなのでisの結果は偽になる
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b
False
>>> a == b
True

# isの結果は、オブジェクトのidで判断されている
>>> id(a)
4353816328
>>> id

元記事を表示

3D二値化画像データの部分fillやってみた(TDDもあるよ)

注意:著者は初心者なので間違ってることがあるので注意してください。

今回は友人の研究に使う3次元fillプログラムを作ったのでまとめてみます。
ついでにテスト駆動開発の練習も兼ねたので、それもまとめたいと思います。

## 環境
*利用しているライブラリについて記載していなかったので追記しておきます。
|python|3.7.4|
|:–:|:–:|
|pytest|5.2.2|

`pip install pytest`

## 仕様
画像データは3次元配列の0または1の二値データとします。
fillしたい部分の一点を指定すると、その周囲の同じ値のデータが2に書き換えられたデータが出力されます。
テストで使った3次元の配列を以下に書いておきます。

“` ruby:利用データ
[
[
[0,1,0,1,0],
[0,0,1,0,0],
[0,1,1,1,0],
[0,0,1,0,0],
[0,1,0,1,0

元記事を表示

OTHERカテゴリの最新記事