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

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

だから僕はpandasを辞めた【データサイエンス100本ノック(構造化データ加工編)篇 #5】

# だから僕はpandasを辞めた【データサイエンス100本ノック(構造化データ加工編)篇 #5】

[データサイエンス100本ノック(構造化データ加工編)](https://github.com/The-Japan-DataScientist-Society/100knocks-preprocess)のPythonの問題を解いていきます。この問題群は、模範解答ではpandasを使ってデータ加工を行っていますが、私達は勉強がてらにNumPyを用いて処理していきます。

[:arrow_up:初回記事(#1)](https://qiita.com/nkay/items/6778bb6a6400ed985aa0)
[:arrow_backward:前回記事(#4)](https://qiita.com/nkay/items/b2b1075b20ddc690bcb3)
:arrow_forward:次回記事(#6)

## はじめに

NumPyの勉強として、[データサイエンス100本ノック(構造化データ加工編)](https://github.com/The-Japan-DataScien

元記事を表示

pythonのclassを使って、自給農家の生産・消費行動を超ざっくり簡単にシミュレーションしてみる② コードと結果を見る

じゃあ、かったるいおさらいは省いてさっそくコードと結果を見てみましょう。
条件設定の説明は[①](https://qiita.com/kuru_kirino/items/8ef0ce1e5e2d2bde2ed5)をご確認ください。

##コード
“`python
“””
subsistance.pyプログラム
自給的農家が生産をする
自給的農家はランダムに生産計画を繰り返し練り、効用が最大化される計画を実行する
自給的農家は自家労働力と自家資本を生産に用いる
1~10期:初期価格で効用最大化を行う
11~20期:Bの価格が1度上昇して、その価格のまま効用最大化を行う
21~30期:oの価格が1度低下して、その価格のまま効用最大化を行う
31~40期:Bの価格が1度上昇し、尚且つoが1度低下して、その価格のまま効用最大化を行う
“””

# モジュールのインポート
import random
import numpy as np
import matplotlib.pyplot as plt

# グローバル変数
alpha = 0.3 # 生産物Aの生産にかかわるパラメータ
be

元記事を表示

pythonのclassを使って、自給農家の生産・消費行動を超ざっくり簡単にシミュレーションしてみる① 条件設定

今回は自給的農家のシミュレーションを作ってみました。
①では設定の説明をし、次回の[②](https://qiita.com/kuru_kirino/items/79537e674ad309a9ca96)でコードを説明します。
農家行動の理論的な説明は今回省きました(本当は書きましたが、読むのがかったるいから消しました泣)。

##今回やりたいこと
前回は、1農家と1消費者が存在して、市場を介して2者が農産物の生産と消費を行うシミュレーションを行いました。価格の変動を表すために、前期消費量の多い作物の価格が約1.01倍上昇し、前期消費量の少ない作物の価格が約0.99倍低下することにしました。
しかし、①次期価格を算出する際に均衡価格を計算しなかった点、②生産消費行動の影響を受けて価格が変動→生産消費行動の変化→価格が変動…というループが起こり、価格や生産・消費量が安定しなかった点
で問題が生じたので、今回は価格変動を単純化しました。
また、新しい要素として、今回は「自給農家行動」をシミュレートしてみます。

以上の状況を反映させるために、以下のステップを踏みました。
①class「A

元記事を表示

ベイヤー FITS ファイルをデモザイクしてカラー TIFF に変換する

macOS や Linux には FITS ファイルを変換する手軽なツールがありません。
Python を利用してベイヤー FITS ファイルをデモザイクし、Photoshop などで編集できる TIFF 形式に変換する方法を紹介します。

## 撮影環境

– カメラ
– ZWO ASI 294MC
– 制御ソフト
– KStars + Ekos

ZWO ASI 294MC のベイヤーパターンは RGGB です。

## 環境構築

FITS ファイルの読み込みに [Astropy](https://www.astropy.org/)、画像処理に OpenCV を利用します。
執筆時のパッケージバージョンは下記の通りです。

– anaconda3-2020.02
– opencv (4.1.0)
– astropy (4.0.1.post1)

## 処理

望遠鏡で撮影した月面の画像 (`moon.fits`) を処理してみます。

### 1. FITS ファイルオープン

“`py
from astropy.io import fits

hdul = f

元記事を表示

AtCoder Beginner Contest 173 復習

#今回の成績

スクリーンショット 2020-07-06 7.52.52.png

#今回の感想

今回は色々あり集中もないまま考察もちゃんとしないまま解いていたので、過去最低順位を更新し2020年最低パフォを取ってしまいました。
E問題はまともな頭の使い方をしていればできたと思いますし、Dも考察不足だったと感じます。(途中でメンタルが崩壊してしまったので…)
しかし、正直なところ、何を変えればレートが伸びるのかよくわからないですね…。とりあえずはいろいろな問題解いて典型パターンを身体に染み込ませるしかないのかなとは思います…。

#[A問題](https://atcoder.jp/contests/abc173/tasks/abc173_a)

焦ってたので、この時点から頭の悪い解き方をしていて恥ずかしいで

元記事を表示

【Python】dict in listやinstance in listをsortする方法

listのソートはよくありますが、ここではdict in listやinstance in listをsortする方法を書き留めます。
sortは全て昇順とします。
sortで使用するのは組み込み関数の`sorted`です。

## 動作確認済みのPythonバージョン

– 3.7
– 3.8

標準ライブラリdataclassesを使用しなければ3.6とかでも動くはずです

# dict in list

dict in listの場合はsorted関数のkey引数を指定してあげる必要があります。
keyを指定する時にlambda使って無名関数で`lambda x: x[‘a’]`でもいいですが、公式によると標準ライブラリoperatorのitemgetterを使用した方が高速らしいです(検証していないのでなんとも言えませんが)。

https://docs.python.org/ja/3/howto/sorting.html#operator-module-functions
> Python は高速で扱いやすいアクセサ関数を提供しています。 operator モジュールには i

元記事を表示

Chrome画面のスクリーンショットを取る方法(途中で切れるのを防ぐ)

# 背景
Seleniumを使って自動でスクリーンショットを取ろうとしたのですが、いくら大きいサイズを指定しても、画面サイズで切れてしまってスクロールの下の方が取れずに苦労したので、その備忘録です。

# 使用したもの
chromedriver(使用しているchromeのバージョンにあったもの)
selenium
python

# 対応法
optionsでheadless付ければOKでした。

“`screenshot.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

if __name__ == “__main__”:

# 切れないスクリーンショットのために必要な設定
options = Options()
options.add_argument(‘–headless’)
driver = webdriver.Chrome(options=options)

# サイズを広めに指定しておく
drive

元記事を表示

ioストリーム

“`py
import io

with open(‘/tmp/a.txt’, ‘w’) as f:
f.write(‘text text’)

with open(‘/tmp/a.txt’, ‘r’) as f:
print(f.read())

f = io.StringIO()
f.write(‘string io test’)
f.seek(0)
print(f.read())
“`
実行結果:

“`txt
text text
string io test
“`

元記事を表示

初心者が絶対分かるRequestsでスクレイピングする基本まとめ【Python】

## Requestsの基本
### import
“`
import requests
“`
必ずこのインポートが必要になります。

### Webサイトからソースを取得する
– GETメソッドで取得する
– POSTメソッドで取得する

この2つを覚えておけば良いでしょう。
#### GETメソッドで取得する(requests.get)
“`
import requests

url = ‘https://www.yahoo.co.jp/’
response = requests.get(url)
print(response) # →

html = response.text
print(html) # →HTMLソースの文字列
“`
requests.get(url)の返り値はHTTPのステータスコードです。
成功していれば、200が返ってきます。

response.textで求めているHTMLソースの文字列を取得することができます。

#### POSTメソッドで取得する(requests.post)
POSTメソッドでないと求めて

元記事を表示

atCoder 173 Python

# 総括
A,B,Dは解けましたがCは解法が分かったところで時間切れです。
初の4完達成ならず。

#問題
https://atcoder.jp/contests/abc173/tasks/abc173_a

# A. Payment
##### 回答
“`python

import math
N = int(input())

m = math.ceil(N / 1000)
answer = m * 1000 – N
print(answer)
“`
書くだけ。

# B. Judge Status Summary
##### 回答
“`python

results = {‘AC’: 0, ‘WA’: 0, ‘TLE’: 0, ‘RE’: 0}
N = int(input())
for _ in range(N):
result = input()
results[result] += 1

for k, v in results.items():
print(k, ‘x’, v)
“`
これも書くだけ。

# C. H and V
##### 回

元記事を表示

pytube3を使って、youtubeの動画をダウンロードする方法

## 環境
OS: mac os x 10.15.5
python: 3.8.0
pythonバージョン管理: pyenv

## pytube3とは
[pytube](https://github.com/nficano/pytube)はyoutubeの動画をインストールするpythonライブラリです。
googleさんは[youtube Data API](https://developers.google.com/youtube/v3/getting-started?hl=ja)を公開しておりますので、ビジネスなどでyoutubeの動画のダウンロード機能を使う場合は、pytubeは使わないことをおすすめします。

pytubeはあくまで、私的で非営利な活動で、過度なリクエストを送らない程度にお使いください。

## pytube3をインストール
python3 をお使いの場合は、pytube3をインストールしてください。

“`
pip install pytube3
“`

python2 をお使いの場合は、pytubeをインストールしてください。

“`bash

p

元記事を表示

説明できるAI ~Explainable k-Means and k-Medians Clustering~

この記事は,最近読んだ論文(ICML 2020採択)の紹介記事です.

タイトルは”Explainable k-Means and k-Medians Clustering”で,arxivは[こちら](https://arxiv.org/pdf/2002.12538.pdf)からどうぞ.

本論文は,クラスタリングの手法であるk-meansまたはk-mediansに対して,**決定木を用いてクラスタリングのルールを得る**というアプローチを提案しています.決定木で説明可能なクラスタリングを得るというのは,先行研究としてはいくつか既にあるのですが,この論文の貢献は,初めて**理論的保証付きのk-means/k-mediansを近似するアルゴリズムを提案**し,その上界と下界を示しています.この論文の(この記事よりかは)詳しいまとめに関して興味がある方は,是非以下のリンクから概要だけでも読んでみてください.
[論文のまとめ](https://drive.google.com/file/d/1gEPmBCM6pXQIYvIgVYICOguZELGDjYVK/view?usp=sharing

元記事を表示

様々なおみくじゲーム

# はじめに
pythonを用いるとrandomやif,else,乱数など様々な方法でおみくじを作ることができる。今回は最終制作物ということでいろいろな方法でおみくじを作ることにした。

#一番シンプルなおみくじ

“`omikuzi.py
import random

destiny = [‘大吉’,’中吉’,’小吉’,’吉’,’凶’,’大凶’]

print(random.choice(destiny))
“`

これはランダムを用いておみくじを作った。ランダムを使うことで、リストの中からランダムに選択してくれるプログラムを組むことができる。
**デメリットとしては、大吉や大凶などのレア度を再現することができない。
簡単に大吉が出てしまい、面白くない**

#確率を操作できるおみくじ
“`omikuzi.py
print(“1~60までの数字を入力してね”)

number = input()

if 0 <= int(number) <= 3: print("大吉") elif 4 <= int(number) <= 10: print("中吉") e

元記事を表示

Pythonでの引数渡し便利技(タプル、辞書型)

#Pythonで関数に引数を渡すときの便利技
仮に文字列を送るとして、関数に引数を送る際に
変数、タプル型、辞書型で受けとらせる方法が以下の通り。

“`Python:function.py
# ****************
# * 2020.07.08
# * ProOJI
# ****************

def menu(food, *args, **kwargs):
print(food)
# タプル
print(args)
print(‘args[0] = ‘ + args[0])
print(‘args[1] = ‘ + args[1])
# 辞書型
print(kwargs)
# KeyとValueを分けて出力も可能
for k,v in kwargs.items():
print(‘Key is ‘+k+’. Value is ‘+v+ ‘.’)

menu(‘Apple’, ‘Banana’, ‘Orange’, entree=’Beef’, drink=’B

元記事を表示

jupyter notebook でコマンドを実行する方法

jupyter notebookでコマンドを実行するには先頭に`!`をつけることでできます。

“`
!ls

!pwd
“`

google の[colab](https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja)でも同じように実行できるので、画像の転送し、画像の有無など`!ls`で確認できます。

元記事を表示

Mac OSにpyenvをHomebrewを使ってインストールしたけど、pythonのバージョンが切り替わらないときの対処法

## 問題
mac osでHomebrew(パッケージ管理ツール)を使って、pyenvをインストールし、pythonのバージョンをglobalに設定してみたけど、pythonのバージョンが切り替わらない。

“`shell

$ brew install pyenv # pyenvのインストール
$ pyenv install 3.8.0 # pythonのバージョンのインストール
$ pyenv global 3.8.0 # pythonのバージョンをglobalに設定
$ python -V # バージョンを確認
2.7.7 # デフォルトのバージョンと変わらない問題

“`

## 解決法
ホームディレクトリの`.bash_profile`または`.zshrc`にeval “$(pyenv init -)”を加え、`source`コマンドで適応させる

“`
$ vim .zshrc
$ source .zshrc
“`

元記事を表示

mysqlclientをpip installできないときの対処法

## 環境
“`
macOS Catalina 10.15.5
pipenv 2020.6.2
Homebrew 2.4.3
“`

## エラー
mysqlclientをインストールしようとすると、長い長いエラーメッセージが出てきてインストールできませんでした。
※ pipenv でインストールしていますが、pipでバージョン指定ナシでも同様の現象があるようでした。
※ Catalinaにアップグレードしたら起こったという情報もありました。

“`
$ pipenv install mysqlclient==1.4.6

.
.
.
ERROR: Couldn’t install package: mysqlclient
“`

## こうしたらいけた

mysql-connector-cをインストール

“`sh
$ brew install mysql-connector-c
“`

opensslのパッケージ情報を表示

“`sh
$ brew info openssl

openssl@1.1: stable 1.1.1g (bottled) [keg-on

元記事を表示

七沢みあさんの画像で癒されたい そんなときはTwitter APIを叩こう♪

#はじめに
今回はWebAPIの中の**Twiiter API**を扱っていきます。
Twiiter APIを利用すると以下の2点作業が自動でできるようになります。

①特定の条件を満たす投稿を取得
②自分のアカウントで自動的に投稿

今回は①を実行してみます。

AV女優として活躍され、自分が一番お世話になっている**七沢みあさん**のTweetの中から、投稿された画像を自動で取得していきます。

#TwitterのKeys&Tokensを取得
“`py
consumer_key = “???”
consumer_secret = “???”
access_token = “???”
access_token_secret = “???”
#各々取得して???に代入してください。
“`

#七沢みあさんのTwitterアカウント&フォロワー数を取得

下記のコードの詳細は
https://kurozumi.github.io/tweepy/getting_started.html#hello-tweepy
に書かれています。

“`py
def show_user_profi

元記事を表示

Stack Overflow Developer Survey 2020の要点整理

# この記事の目的
世界のディベロッパーのトレンドを追う上で、非常に重要な資料であるStack Overflow Developer Surveyの最新版である2020年版の要点を整理すること。自分の理解のためだけでなく、毎年出されているにもかかわらず、日本語での情報共有が少ない本調査の要点を日本語で整理することで、多くの日本人の開発者が世界のトレンドを理解することを期待する。

原文
https://insights.stackoverflow.com/survey/2020

# 調査概要
・2020年2月に世界中の65,000人以上のディベロッパーにアンケートを実施(注:回答者はアメリカ、インド、ヨーロッパに集中)。
・コロナウイルスが流行る前に調査が実施されたため、仕事や賃金のデータは現時点での情報と異なる可能性があることに注意。

# キーポイント
(1)最も愛された言語はRust, Typescript, Pythonの順番。Rustは五年連続で一位。
(2)回答者の8割がDevOpsが重要だと考えている。
(3)回答者の9割が、プログラミングで壁に当たった時、Stack

元記事を表示

pyenvでPython 2系をインストールする際にOpenSSLのエラーとなる場合の対処方法

pyenvでPython 2系をインストールしようとしたところ、OpenSSLに関するエラーとなりインストールできない事象に遭遇しました。
その際に私がとった対応方法を記しておきます。

## この記事の前提

– macOSを使用している
– homebrewでOpenSSLをインストールしている

## エラー

pyenvでPython2系をインストールしたところ、以下のようなエラーが発生しました。

“`
$ pyenv install 2.7.10
python-build: use openssl from homebrew
python-build: use readline from homebrew

…省略…

ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

Please consult to the Wiki page to fix the problem.
https://github.com/pyenv/pyenv/wiki/Common-buil

元記事を表示

OTHERカテゴリの最新記事