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

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

Python一時間触ってみて

・Pythonはtabキーでインデントができる、便利
・inputで簡単に文字入力ができるが、複数入力の場合map(型,input.split())で行う、少し面倒
・基本的なif文やfor文は他の言語とあまり変わりはないが、for文はrangeを使うと少し複雑なものでも一行で定義できるのでここすごく好き、便利

元記事を表示

[Python3] UDP でデータを送受信する方法

# 環境
python 3.x
OS は問わない

# 送信側
“`python:udpsend.py
from socket import *

## UDP送信クラス
class udpsend():
def __init__(self):

SrcIP = “127.0.0.1” # 送信元IP
SrcPort = 11111 # 送信元ポート番号
self.SrcAddr = (SrcIP,SrcPort) # アドレスをtupleに格納

DstIP = “127.0.0.1” # 宛先IP
DstPort = 22222 # 宛先ポート番号
self.DstAddr = (DstIP,DstPort)

元記事を表示

Google Colaboratory でAPIサーバーを立てる。

機械学習を使ったサービスのプロトタイプを短期間だけ公開したい場合AWSでサーバー借りるのもめんどくさいしお金かかるとおもったらColabでもサーバー立てられることを知ったので書き残しておきます。

URL発行に必要なngrokをダウンロード

“`
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
!unzip ngrok-stable-linux-amd64.zip
“`

以下をノートブック上で動かせばURLをくれます。

“`
get_ipython().system_raw(‘./ngrok http 6006 &’)
!curl -s http://localhost:4040/api/tunnels | python3 -c \
“import sys, json; print(json.load(sys.stdin)[‘tunnels’][0][‘public_url’])”
“`

そしてFlaskを使ってアプリケーションサーバーを立てます。サンプルでindex.h

元記事を表示

Python3.8で scipy およびscikit-learnがpip installできない件

# Python3.8で特定のライブラリがインストールできない!(2019/11/5時点)

2019/11にpcを買い替えたのを機に今までpython3.7を使っていたのですが、python3.8に切り替えることにしました。それに伴いライブラリをインストールし直していたのですがいくつかのライブラリがインストールできたのに対して、インストールできなかったライブラリがありました。

**環境はmacOS Mojave 10.14.6です**

### python3.8でインストールできなかったライブラリ
* scipy
* scikit-learn
* pymc3
* matplotlib

### python3.8インストールできたライブラリ
* jupyter notebook
* numpy
* pandas

## 結論を先にいうと
python3.8をアンインストールして、新たにpython3.7をインストールすると解決しました。
なぜ最終的にこのような強硬手段に出たのか、ライブラリをインストールするために何を試したのかを書いていきます。

それでは何を試したのか書いていき

元記事を表示

RaspberryPi + Django + Arduinoで部屋の電気をIoT化

# 目的
趣味で部屋をIoT化、もとい改造しています。
その内の一つとして、部屋の電気→スイッチをスマホから操作してみたくなりました。

ところが、部屋の電気のスイッチを直接いじるには、電気工事士の資格が必要になるため、誰でもモジュールを取り付けることでIoT化できるようなものを作る縛りゲーを自らに課しました。

#使ったもの・開発環境
PC(win10)
RaspberryPi 3 Model B+(NOOBS)
Arduino Nano (廉価版)
Pycharm Professional 2019.2(学生ライセンス)
ArduinoIDE
Python3.7.4(ラズパイ内)
Django 2.2.6(ラズパイ内)
サーボモータSG90

#構想
将来さらに改造することを考えると、ラズパイ1台ですべて制御するのは限度を感じたため、今回はラズパイを親機、arduinoを子機のように使うシステムを構想。Arduino nanoの廉価版はウルトラ安い。また、djangoで作るwebアプリは家の中で動作してくれさえすればいいので、wifi経由でラズパイのipにアクセスして使う。
**ま

元記事を表示

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

# はじめに
Pythonの勉強をしようと思って触り始めたので、[Python文法詳解](https://www.amazon.co.jp/Python%E6%96%87%E6%B3%95%E8%A9%B3%E8%A7%A3-%E7%9F%B3%E6%9C%AC-%E6%95%A6%E5%A4%AB/dp/4873116880/ref=cm_cr_arp_d_pl_foot_top?ie=UTF8)を読んで「なるほどー」と思ったところをメモります。
普段はJavaをメインで書いているので、おそらくJavaと違うところ中心になると思います。

# 第1章 イントロダクション
– Pythonという名前は「Monty Python’s Flying Circus」(コメディ番組)に由来。
– サンプルコードで「foo」「bar」「baz」みたいなやつは「spam」「ham」「egg」を使う習慣になっている。(コントで使っていたらしい)
– 見慣れないワードはこれ由来だと思っとけ、とのこと。

# 第2章 Pythonの実行
“`py:_の挙動
>>> 1+1
2
>>> _ # 最後に評

元記事を表示

Pythonによるコレクションの前処理: 組み合わせ

“`py
tests = [‘A,B,C’, ‘D,E’, ‘A,C,E’]
“`

のようなデータがあったとき
これを要素別に
`’A,B,C’` -> `(‘A’,’B’),(‘A’,’C’),(‘B’,’C’)`
`’D,E’` -> `(‘D’,’E’)`
`’A,C,E’` -> `(‘A’,’C’),(‘A’,’E’),(‘C’,’E’)`
にしたい。

つまり以下のようにしたい。

“`py
[(‘A’, ‘B’),
(‘A’, ‘C’),
(‘B’, ‘C’),
(‘D’, ‘E’),
(‘A’, ‘C’),
(‘A’, ‘E’),
(‘C’, ‘E’)]
“`

要求を整理すると、`tests`の変数において、

1. 各要素を配列にする
2. 2つの組み合わせにする

をする方法をまとめる。

一行で書くと以下のようになる

“`py
list(itertools.chain.from_iterable([tuple(itertools.combinations(tuple(i.split(“,”)), 2)) for i in tests

元記事を表示

argparseのhelpに “%” を含めると死ぬ

下のようなPythonスクリプトを作ったとする。

“`python
import argparse

parser = argparse.ArgumentParser(description=”)
parser.add_argument(‘–zoom’,
action=’store’,
type=float,
default=1.0,
help=”拡大率(%)”)
args = parser.parse_args()

print(“zoom is {}”.format(args.zoom))
“`

これは普通に実行できるが、

“`
$ python hoge.py –zoom 2.0
zoom is 2.0
“`

ヘルプを表示しようとするとValueErrorが出てしまう。

“`
$ python hoge.py -h
Traceback (most recent call last):
File “hoge.py”, line 9, in
args = parser.parse_args()

元記事を表示

PythonでGoogle画像検索をして画像をフォルダに保存する

こんにちは。

Pythonを使ってGoogle画像検索にアクセスして画像を取得してみました。
適当に書いて動かしているのでガバガバです。

###最初に

まあ適当にデスクトップに “`image“`的なファイルを作成してターミナルを開きましょう。

“`
cd desktop/image
“`
して

“`
vim image.py
“`
とでもしてプロジェクトを作成してください。
エディタがvimなのは僕の趣味です。

言い忘れていましたが、これにはPython3と多少のモジュールが必要になるのでインストールしてください。

“`
pip3 install モジュール名
“`
すればインストールできるのでモジュールエラーがでたらやってみてください。

####てことでコード書きます。

写経するなりコピペするなりしてください。

“`image.py
import requests
import random
import shutil
import bs4
import ssl
ssl._create_default_https_context = ssl._

元記事を表示

【PyQt】Qt Designerで作った画面にQMLを埋め込み、valueをセット

# はじめに
 普段ちょっとしたGUIを作るときに[PyQt](https://ja.wikipedia.org/wiki/PyQt)を使っているのですが、[QML](https://ja.wikipedia.org/wiki/QML)の表示やプロパティの変更に手こずったので、その備忘録です。
 画面作成にはQtDesignerを使っています。QtDesignerの使い方は[こちら](https://qiita.com/grinpeaceman/items/54b439bfa52640c444e1)を参考に。

# 環境
+ Windows 10
+ Qt Designer 5.11.1
+ Python 3.7.3
+ PyQt5 5.13.1

# 作成したサンプル
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404447/5b728ea7-59c3-4e94-4211-14e55678fa3c.png)

+ボタンを押すとゲージの値が増え、-ボタンを押すと減るというものです。

元記事を表示

OpenCVの画像をPygameで描画する方法

PythonでOpenCVを動かし、解析・加工した結果を表示したい場合、`cv2.imshow()`メソッドを使うのが一番簡単です。
しかし、ただ表示するだけ以上のことをしたい場合、OpenCVのウィンドウでは機能不足です。
このような問題を解決する方法の一つとして、PythonのGUIフレームワークであるPygameを使うやり方[^Pygameの選択理由]があります。
この投稿では、OpenCVの画像をPygame向けの画像に変換するやり方について書きます。

[^Pygameの選択理由]: なぜPygameなのかといえば、Raspbian Liteでも描画できるからです(超重要)。ほとんどのGUIフレームワーク(OpenCVのウィンドウ機能を含む)はX Window Systemに依存しており、GUIが組み込まれていないRaspbian Liteでは表示できません。しかし、PygameにはSDLを使用して描画する機能も存在するため、Raspbian Liteでも動作します。

## 環境

ハードウェア

競馬サイトをクローリング&スクレイピングしてみた その2

###はじめに
「Pythonクローリング&スクレイピング[増補改訂版]―データ収集・解析のための実践開発ガイドー」第3章までの知識を用いてオリジナルプログラムを作成する。

今回はnetkeibaの競走馬検索機能の検索結果から個別ページのURLを取得し、そのURLにアクセスして各馬の情報を取得し、データベースに保存する、というプログラムを作成した。

###検索結果ページの構造
検索窓は基本netkeiba内の最上部にあるので割愛。
詳細検索機能では血統、毛色、表示順などいろいろな検索条件が指定できるが、
今回は検索窓を使用せず、[ディープインパクトの詳細ページ](https://db.netkeiba.com/horse/2002100816/)の繁殖成績欄から検索結果ページに飛んだ(この辺、のちに記述するJavaScript絡みと関係あり)
重複確認

set型は重複を削除してくれることを利用する。
下記の例だとtest1-5の変数にそれぞれ何らかの値が入っている想定。
例えばtest1とtest4が全く同じ値の時とかに重複判定される。

“`python:test.py
a = {test1, test2, test3, test4, test5}
b = [test1, test2, test3, test4, test5]
if len(a) != len(b):
print(‘重複あり’)
else:
print(‘重複無し’)
“`

Python で flatten

# 環境
関数等は特に使わないのでなんでもよい.

“`python3
import sys
print(sys.version)
# 3.6.4 |Anaconda custom (64-bit)| (default, Jan 16 2018, 18:10:19)
# [GCC 7.2.0]
“`

# Code
“`python3
nested = [[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]

flatten = []
for inner in nested:
flatten += inner

flatten
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
“`

元記事を表示

価格あたりのカロリーが高い「マクドナルド(マック)」のハンバーガーランキングをpythonで集計してみた

[この記事](https://saltiga.hatenablog.com/entry/2019/11/04/151859)も参考にしてください。
## 目次
* [マクドナルド(マック)で一番「得」な商品の定義](#section1)
* [調査方法](#section2)
* [結果(値段あたりのカロリーランキング)](#section3)
* [結局、コスパ上位のハンバーガーは?](#section4)
* [まとめ](#section5)

# マクドナルド(マック)で一番「得」な商品の定義

昼飯にとって最も重要なのは「コスパ」=「値段あたりのカロリー」です。

本当は小麦粉からすいとん等を作るのが一番ですが、外食を余儀なくされる機会も多いと思います。

代表的な良コスパ外食チェーン、「マクドナルド」でコスパの高い商品を調査してみました。

### 参考

* 価格あたりのカ

元記事を表示

複数フォルダより複数枚の写真をグラフに描写する

##まぁ、タイトル通りなんですが…
写真AとBを比較しようと思ったら「あ、フォルダ分けしちゃった」に気づいた。
一つのフォルダから地道に写真見てフォルダ分けしたのに…
ってことがきっかけでやってみました。
ついでに画像加工した際に罠にかかったのでそれも一緒にいきます。

##全然難しくなかったw
「コードの雰囲気的にココ増やせばよくね?」
的な感じで進めていったら出来てしまった。
相変わらず勉強しない男である。

“`dog_and_cat.py

# Jupyter Notebookセルを全結合してみました

import os
import glob
import matplotlib.pyplot as plt
from PIL import Image
from google.colab import drive

# GoogleDrive_Mount
drive.mount(‘/content/drive’)

# データ格納フォルダを指定
input_dir=”/content/drive/My Drive/Colab Notebooks/test/Photos”
di

元記事を表示

質問です/LambdaとTwitterApiを使ってBotを作ったのものの、30分毎のイベント発火がうまく作動しない

初心者です。

LambdaとTwitterApiを使って、Twitterにステイーブジョブスの名言を、30分毎にツイートする自動BOTと作成しました。
![001.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29856/5de884a5-e6ff-648b-fcf3-3c15dfe830e6.jpeg)

動作して、ちゃんとツイートもしたのですが、時間の間隔が常に30分毎ではなく、1時間間隔の時や、時には2時間おきの場合もあります。
![002.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/29856/bacff4d1-6dcd-d27b-f44f-cc0544141102.jpeg)

Lamda側では、30分毎にイベントが発火しているようなのですが、何が原因かご教示いただきたいです。
![003.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazona

元記事を表示

pythonのレスポンス指標ー時間操作編

# この記事では.
ひよっこは、データを加工するときにどれが一番早く処理できるかが想像できない。。:frowning2:
初心者プログラマあるあるのとりあえず動くコード書いて終わるのと違い、レスポンスだけを指標にすれば(コードの可読性は無視、コメントで回避する)正解を探れるだけ良いので今回は時系列の操作を簡単にまとめます。

# 検証方法
1年分の時系列データを準備して、datetimeをdateに変換する。(型は一時無視)
方法は以下の5通り(並びは私が早いと思う順)

1. pandasの標準dtオブジェクト経由
2. pandasのapply経由
3. 文字列にして固定長で取り出す方法
4. loop処理経由

pythonはインタプリタ言語でコンパイル言語より遅いからライブラリを経由しているのに、
わざわざloop処理を使うのは論外に遅いはず。
ライブラリを使っても型があるのを無視して固定長で取り出す方法も遅い、少なくとも型を守るものよりも遅いはず。
applyは汎用関数なので、元のdtオブジェクトを経由できる方法よりは遅い。という感じに考えています。:scales:

# 検

元記事を表示

機械学習モデルの予測値を返すAPIをDockerで作ってみた

# はじめに

Yellowbrickで精度を確認しつつ作った機械学習モデル[^1]を予測APIサーバのような形で活用してみたいと思い、Dockerで作ってみた。
Flaskについてはこちら[^2]、Dockerについてはこちら[^3]を参考にして、APIサーバーから応答が返ってくるところまでを目標にする。

# 環境

環境は以下の通り。

“`
$sw_vers
ProductName: Mac OS X
ProductVersion: 10.13.6
BuildVersion: 17G8037
“`

Dockerのインストールについては[^4]を参考にした。
ログが結構長かったので、一部省略。

“`
$docker version
Client: Docker Engine – Community
Version: 19.03.4
API version: 1.40
Go version: go1.12.10
(省略)
Server: Docker Engine – Community
Engine:
Vers

元記事を表示

pythonでLinuxコマンド文字列を整形する汎用的なプログラム

# 背景
Linuxコマンドを用いて例えばCPU温度などを定期的にDBに追加しています。
この時にコードをなるべく少なくしようとコマンドだけで色々と調べたのですがなかなか難易度が高かったので作成しました。

# 仕様
汎用的に利用できるようにしたいのでpythonのFormatのような動きを実現させたい。

# コード
こうなりました。

“`python
import sys;
print(sys.argv[1].format(*sys.argv[2].split(” “)) )
“`
* 第一引数:Formatの指定文字列
* 第二引数:空白で区切られたFormatに入れる文字列

## 利用方法

“`sh
mosquitto_sub -t “#” -v |xargs -I@ python3 /home/hashito/command/text2format.py “insert into mqtt.msg (t,m,tm)values(\'{}\’,\'{}\’,UNIX_TIMESTAMP(NOW()))” @ | xargs -I@ mysql -e “@”
`

元記事を表示

OTHERカテゴリの最新記事