- 1. 添字付きファイルの並び替え(ソート)が出来ないときの対処方法
- 2. 中学校の委員分け(NetworkX版)
- 3. 【Python】importするモジュールと同名のファイルを作るとAttributeErrorを引き起こす
- 4. 5-1、イテレータ
- 5. 3-3、Pythonの文字列と文字コード
- 6. VPSにDjangoを公開した時のメモ
- 7. 100円ショップで買い物するプログラム(軽減税率対応)
- 8. 3、Winpython 64bit のQt Designerを動かす
- 9. 「エンジニアと英語」自分の経験から思うこと
- 10. PyCharmで環境変数を.envファイルから読み込む方法(Macの場合)
- 11. PyCaretでできる前処理について調べてみた
- 12. 【PyTorchチュートリアル④】TRAINING A CLASSIFIER
- 13. session not created: This version of ChromeDriver only supports Chrome version 76
- 14. 新型コロナウィルスの影響で閉店数は増えたのか?
- 15. Python Basic – Pandas, Numpy –
- 16. [Python] multiprocessで起動した子プロセスを別プロセスから簡単に落とす方法
- 17. pythonからsql
- 18. Python + Djangoのプロジェクト作成
- 19. Titanicデータを前処理ライブラリDataLinerで処理してみる(Drop編)
- 20. Pythonで毎日AtCoder #50
添字付きファイルの並び替え(ソート)が出来ないときの対処方法
こんにちはしろです
![](https://paper-attachments.dropbox.com/s_7A02063475B1E58340D437464951C3C914E9522DA76E8D548C8FEF0161F495B7_1588126690289_image.png)
こういうファイルをソートしようと思ったときファイル内ではうまく並び替えれるのにPython などで処理をしようと思ったら。
![](https://paper-attachments.dropbox.com/s_7A02063475B1E58340D437464951C3C914E9522DA76E8D548C8FEF0161F495B7_1588126743258_image.png)
このように予想した並びと違う順序になることがあります。。。
これに詰まったので自分用のメモとして書き残しておきます。
##対処法
添字の前に余分に0000をおくことです。これにより問題は解決できます。
しかし、名前すべて手作業で書き換えるのは面倒なのですべてPythonに任せてしまいましょう。
中学校の委員分け(NetworkX版)
## 問題
生徒の希望を元に「クラスの委員を割り当てる問題」をマッチング問題として解きます。
## 参考
– 元記事「[中学校の委員分けを最小費用流で最適化してみた話](https://qiita.com/defineprogram/items/b8eb70bb92101241703b)」:[最小費用流問題](https://qiita.com/SaitoTsutomu/items/41d625df63f1946c7216)として求解
– 前記事「[中学校の委員分け](https://qiita.com/SaitoTsutomu/items/9075a3f9b76e1abf4866)」:混合整数最適化として求解## 方針
今回は、マッチング問題として解きます。
そのためには、委員の必要数がn人のときに、その委員のノードをn個に増やす必要があります。
また、[最大重み最大マッチング問題](https://qiita.com/SaitoTsutomu/items/bbebc69ebc2549b0d5d2)にするので、重みwを「40 – w」に変換します。## 解いてみよう
【Python】importするモジュールと同名のファイルを作るとAttributeErrorを引き起こす
ライブラリの動作確認をしようと思っただけなのに思わぬところでハマりました。
例えばjsonモジュールを試すために`json.py`というファイルを作ったとします。
“`python:json.py
import jsonobj = {
“id” : 1,
“name” : “hoge”,
}str = json.dumps(obj)
print(str)
“`
問題なさそうなコードですが…。これは、実行するとエラーになります。
“`bash
$ python3 json.py
…
AttributeError: module ‘json’ has no attribute ‘dumps’
“`jsonモジュールにdumpsがないって言われてます。
これは自身がjsonというファイル名なので標準モジュールより優先されて読み込まれてしまったためです。
よって、リネームしてやれば解決です。
“`
$ mv json.py json_test.py
$ python3 json_test.py
{“id”: 1, “name”: “ho
5-1、イテレータ
#イタレーション
イタレーションは、リスト、辞書、文字列、タプルなどの要素にアクセスするため、よく使われる機能の1つです。
イテレーションは、最初の要素から最後の要素までを順にアクセスする。(逆走はできない)
イタレーションには2つの基本的な関数がある:iter()とnext()。“`python
>>> list=[“a”,”b”,”c”,”d”]
>>> it = iter(list)
>>> print (next(it))
1
>>> print (next(it))
2
>>>
“`
##使い方
普通はfor文を使います。“`python
list=[“a”,”b”,”c”,”d”]
it = iter(list)
for x in it:
print (x)
“`
もちろん、next()関数も使えます。“`python
import sys
list=[“a”,”b”,”c”,”d”]
it = iter(list)
while True:
try:
print (next(it))
except St
3-3、Pythonの文字列と文字コード
##文字コード
文字列は[文字コード](https://ja.wikipedia.org/wiki/%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89)の関係で特殊なデータ型となる。コンピュータは数字しか処理できないため、テキスト形式の文字等は数字に変換しないといけない。最初にコンピュータを設計された時に、1バイト(byte)は8ビット(bit)となり。1バイトで表示できる最大の整数は255(2進数の11111111は10進数の255)となり、もっと大きな整数を表示する為、たくさんバイトが必要となる。例えば、2バイトで表示できる最大整数は65535、4バイトは4294967295である。
コンピュータ開発は、米国を中心に進められ、最初に規格された文字コードは128個しかない。この文字コードは[ASCII](https://ja.wikipedia.org/wiki/ASCII)と言い、英語で使われる英数字、記号、スペース、改行等の対応が全部できる。例:`A`の文字コードは`65`、`z`の文字コードは`122`となる。
日本語
VPSにDjangoを公開した時のメモ
##この記事について
動くものを制作できる自分であり続けたい。
VPSを契約し、Djangoで制作したものを公開した時のメモを残す。##VPS契約
AWS、GCP、Azureを基盤とする業務に携わった者としては個人で何かするにはそこまでのものは不要と思い、VPSを契約。さくらVPSでメモリ、SSDとも最小を選択。##CentOS7 x86_64をインストール
業務で触れる機会の多かったOSを選択。
接続許可ポートはこのタイミングで選択できるので、
SSH(22)
Web(80/443)
メール(25/110/143/465/587/993/995)
を選択。##ssh接続
契約時のIPアドレスに対し、クライアントで使用していたTeratermから接続確認。
この時点での最低限のセキュリティを考えrootでのログインを禁止しておきたい。##rootによる接続を拒否する設定
100円ショップで買い物するプログラム(軽減税率対応)
#目的
###・商品選択から購入・支払いまでの一連の流れを再現する
###・軽減税率に対応するために必要なプログラムを知る
##### 初めての作品であるため、全商品同一価格の100円ショップというシンプルな設定です。#環境
– Visual Studio Code
– Python#書いたプログラム
#####すべてひとつのファイル(100shop.py)に書きました。###①商品一覧
– foodリストに食料品
– thingsリストに食料品以外
– 空のbasket(買い物かご)リストを用意“`python:100shop.py
food = [“コーラ”, “ラムネ”, “チョコレート”] #食料品
things = [“はさみ”, “洗剤”, “靴下”] #食料品以外
com = food + things #すべての商品
basket = [] #空の買い物かご
“`###②購入
3、Winpython 64bit のQt Designerを動かす
なぜか64bit WinpythonのQt Designerが動かない。
ネットに書いた対策をためしたが、Qt Designer.exeは起動しませんでした。
結局**pyqt5-toolsをインストール後、下記フォルダーにあるdesigner.exeを実行できたので、ショットカートをつくて置けば、とりあえず使えるようになった**。wpy-3662_200114\python-3.6.6.amd64\Lib\site-packages\pyqt5_tools
試し1:WinPython Control Panel.exeでインストール。
参考:https://qiita.com/NoTASK/items/1644e0197c84856f607a
試し2:pip install pyqt5-toolsでインストール
参考:https://portal-sight.com/wp1/?p=57
そのほかの試し:
・python -mを付けて再度コマンドを実行してインストール。
・python -m pip install –upgrade pipでpipのバージョンを更新。
「エンジニアと英語」自分の経験から思うこと
#対象読者
エンジニアにとってIT従事者にとって**英語はとても大切**だからこれからも勉強していきたいと思っている人#自分と英語
エンジニアとしてIT従事者として日本で英語を使ってきた#ポエム#2 「エンジニアと英語」
英語について個人的な経験から思うこと#英語がわかるメリット
『英語がわかるとより多くの情報を得られる』『活躍できる場所やチャンスが増える』
などの一般論は意味がないので書きません##その1 「動画でIT技術の勉強」
『Youtubeをはじめとする動画コンテンツで技術を学べる』「は?何それ単純w」と思うかもしれませんが、このメリットは個人的にはすごく大きい。また「言語は関係ない、日本語でよいのでは?」と思われるでしょうが、日本語のコンテンツはほとんどないと思います。
**自分にとって新しい技術だったり、分野外の技術について短時間で効率的に理解できる**点で最高です。
Qiitaでもたくさんの技術系動画サイトが紹介されていますね。個人的には内容ベースで見ることがほとんどですが、Traversy Media や Tech Dummies が好きです。また
PyCharmで環境変数を.envファイルから読み込む方法(Macの場合)
はじめに
========
Pythonで [pipenv](https://github.com/pypa/pipenv) や [dotenv](https://github.com/theskumar/python-dotenv) などを使うと project dir の `.env` ファイルを読み込んで環境変数を設定することができます。よくあるのは、`.env` ファイルを `.gitignore` に書いておいて commit しないようにしておくことで、環境別の動作を制御することができます。
私は [PyCharm](https://www.jetbrains.com/ja-jp/pycharm/) を愛用していますが、IDEからの実行時にこの `.env` を読み込ませる方法がわからなかったのですが、ようやく先日見つけたので書いておきます。Version
———-
– MacOS 10.15.4
– PyCharm Professional 2020.1 (Community Edition でもたぶん大丈夫だと思われます)設定方法
=========
PyCaretでできる前処理について調べてみた
適宜修正や追記を行いながら、勉強した内容を共有していきたいと思います。
※現状、主に回帰タスクにフォーカスして書いています。
他のタスクにおいては、仕様が異なる箇所があるかもしれませんので留意ください。
(ざっと確認している範囲では、タスク間で概ね仕様は共通な様です。)# 本ドキュメントについて
PyCaretの**前処理**にフォーカスしています。
基本的に、モデリングやチューニングなどの部分には触れておりません。実際に動かしつつ、本家ソースコードを読んだりもしながら記述しております。
https://github.com/pycaret/pycaret※誤ってる箇所もあるかもしれませんが、あらかじめご了承ください。
# 実装上の前提
次のように各種ライブラリはimportしているものとします。“`python
import pandas as pd
import numpy as np
“`# PyCaretとは
データの前処理および機械学習モデルのトレーニングを自動化し、ローコード環境でデプロイ可能なライブラリです。
https://pycaret.
【PyTorchチュートリアル④】TRAINING A CLASSIFIER
# はじめに
[前回](https://qiita.com/sudominoru/items/b6159c635315fa33933c)に引き続き、PyTorch [公式チュートリアル](https://pytorch.org/tutorials/) の第4弾です。
今回は [TRAINING A CLASSIFIER](https://pytorch.org/tutorials/beginner/blitz/cifar10_tutorial.html) を進めます。# クラス分類の学習
[前回](https://qiita.com/sudominoru/items/b6159c635315fa33933c)は、ニューラルネットワークを定義して損失を計算し、ネットワークの重みを更新する方法を見ました。
今回は画像データを利用して、分類問題について見ていきます。
PyTorch には 画像データを扱うためのライブラリ torchvision が用意されています。
torchvision には Imagenet、CIFAR-10、MNISTなどの基本的な画像データセットもあらかじめ用
session not created: This version of ChromeDriver only supports Chrome version 76
“`
$ pip install –upgrade pip
$ brew tap homebrew/cask
$ pip install selenium -U
$ brew cask reinstall chromedriver
“`で解決。
chromedriverのアップデートはChromeのメジャーバージョンアップがあるたびに発生するらしいので、自動化するのが良さそう(時間ある時に)参考:
[Selenium環境用 ChromeDriverのインストールとアップデート方法](https://dot-blog.jp/news/selenium-chromedriver-install-how-to/)
[PythonでChromeWebDriverを自動更新するselenium運用](http://blog.sbfm.jp/archives/182)
新型コロナウィルスの影響で閉店数は増えたのか?
ここ最近は新型コロナウィルスにより店舗の売上が低迷、閉店の危機。。。とかのニュース記事を多く目にするため、実際はどうなのか調べてみました!
やってみた系記事なので、細かいガバには目を瞑ってください。。。概要はこんな感じです。
– データの取得元:https://kaiten-heiten.com/
– 手法:データにタグ付をし、タグごとの閉店数等をプロットして見てみる
– 見るもの:例月と比べ2020年4月の閉店数はどうか
– 評価期間:2019年1月1日から2020年4月28日
– わかったこと
①2020年4月のレンタカー、ホテル閉店数が例月と比べ多い
②飲食店や小売店は例月閉店数が多く、2020年4月は特別多いわけではない
③開店数は全体的に減っている# データの整理
## データ取得
データの取得は開店閉店.com (https://kaiten-heiten.com/) から行いました。## タグ付け
タグは以下の4種類のタグを付けます。– 業種 (例えば飲食店、小売店など)
– 小業種 (飲食店なら焼き肉、ジンギスカンなど)
– 地域 (北海道、東北など)
Python Basic – Pandas, Numpy –
# 0. Introduction of Numpy
NumPy is a Python package. It stands for ‘Numerical Python’, and Numpy is a linear algebra library to work with dimensional arrays, which contains useful linear algebra routines and random number capabilities.# 1. Numpy arrange() method
The **arange()** method in the Numpy module in Python is used to **generate linear sequence of numbers**.
If does it on the basis of the pre-provide starting and ending points along with a constant step size.## Syntax
“`python
im
[Python] multiprocessで起動した子プロセスを別プロセスから簡単に落とす方法
デーモンとして走るプログラムのテストを書いていたときに、一定時間後に強制終了する必要が出てきました。
## 用件
“`
main process
|
|— subprocess1
|— subprocess2
|— subprocess3
“`サブプロセスたちは下記のように起動しています。
“`python
# main.py
from multiprocessing import Processps = [
Process(target=hogehoge1),
Process(target=hogehoge2),
Process(target=hogehoge3),
]
for i in ps:
i.start()
“`**やりたいこと**
別プロセスからなんらかの方法でサブプロセスたちごと消す。
## まず SIGINT (ctrl + c)
ターミナルで動かしてるときはこいつで全消しできるのでやってみる。
“`python
# other.py
import sub
pythonからsql
w3schoolsのチュートリアルを最初からやったほうがいいかもしれない。
https://www.w3schools.com/python/python_mysql_getstarted.aspループで変数をinsertするときに%sするのを忘れていた
https://www.w3schools.com/python/python_mysql_insert.asp
”’
import mysql.connectormydb = mysql.connector.connect(
host=”localhost”,
user=”yourusername”,
passwd=”yourpassword”,
database=”mydatabase”
)mycursor = mydb.cursor()
sql = “INSERT INTO customers (name, address) VALUES (%s, %s)”
val = (“John”, “Highway 21”)
mycursor.execute(sql, val)mydb.commit()
Python + Djangoのプロジェクト作成
# Djangoのプロジェクト作成とアプリケーションの追加を整理します。
※ 2020.04.29 リニューアル## projectを作成する
「mysite」というプロジェクトを作成するものとします。
“`shell:
$ django-admin startproject mysite
$ cd mysite
“`
動かしてみる。“`shell:
$ python manage.py runserver
“`[http://127.0.0.1:8000](http://127.0.0.1:8000)にアクセスするとロケットが飛び立ちます。
Django3ではasgiで動かすこともできます
“`shell:
$ pip install gunicorn uvicorn
$ gunicorn -k uvicorn.workers.UvicornWorker mysite.asgi:application
“`## first step
プロジェクト作成すると、以下のディレクトリ/ファイルが作成されています。
“`text:
mysite
│
Titanicデータを前処理ライブラリDataLinerで処理してみる(Drop編)
# はじめに
データ前処理を簡単に行えるライブラリDataLinerを、Kaggleでも有名なTitanicデータで色々試してみたいと思います。(データ:https://www.kaggle.com/c/titanic/data)
ちなみに、KaggleのTitanicデータではいくつか特徴量が削除されており、ここのデータを見ると他にもいくつか特徴量があるようです。(データ:https://www.openml.org/d/40945)それでは、早速やっていきましょう。今回はDropXX系の紹介になります。最後にPipelineを使っての処理も紹介します。
# インストール
“`
! pip install -U dataliner
“`# Titanicのデータ
まずはtrain.csvを読み込みます。“`python
import pandas as pd
import dataliner as dldf = pd.read_csv(‘train.csv’)
target_col = ‘Survived’X = df.drop(target_col, a
Pythonで毎日AtCoder #50
### はじめに
[前回](https://qiita.com/taxfree_python/items/a6e6c027bd2107919cbb)
今日で#50。はやい。ABC164-Dを書く予定でしたが疑問が解決できてないので保留### #50
[問題](https://atcoder.jp/contests/abc145/tasks/abc145_d)**考えたこと**
一回の移動で(x,y)座標の合計は3増えるので(x+y)の合計が3の倍数でないなら到着できません。(i+1,j+2)の移動をs回、(i+2,j+1)の移動をt回とします。$s+2t=x,2s+t=y$の連立方程式を解くと、$s+t=x+y$となります。$s,t$が計算できたら、あとは$s$をどこで行うかを計算するだけです。しかし、愚直に$_{s+t} C _s$を計算すると数が大きすぎて計算できません。そこで、逆元を用いた計算を使います。[詳しい計算の記事](https://drken1215.hatenablog.com/entry/2018/06/08/210000)“`python
x, y