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

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

openpyxlのごく一部備忘録

# 概要
機能が多くて一覧化したほうが後々色々やりやすいってことで、列挙。
あくまでも自分で使ったもののみなのでこれで全部ではないです。
細かいところは[公式](https://openpyxl.readthedocs.io/en/stable/)を参照ください。

## 新しいブックを作る
ブックを作って1つシートも作る。
以降はこれをやってある前提。

“` python:
import openpyxl

book = openpyxl.Workbook()
sheet = book.active
“`

## シート名設定

“` python:
sheet.name = “しーと”
“`

## ブック保存

“` python:
try:
book.save(“book.xlsx”)
except exception as e:
# excelを開いているとPermission Error。他もあるかも。
finally:
book.close()
“`

## csvからエクセルを作る

“` python:
import csv

元記事を表示

GoogleのOR-Toolsで組合せ最適化問題を解く(5)デートコースを決めよう

#はじめに

本記事は、数理最適化についての参考テキスト「Pythonによる問題解決シリーズ データ分析ライブラリーを用いた最適化モデルの作り方」の練習問題を解く第五回目の記事です。

第一回目の記事は以下です。まずはこちらをご覧下さい。
>GoogleのOR-Toolsで数理最適化モデルの練習問題を解く(1)一番易しいマス埋め問題
>https://qiita.com/ttlabo/private/7e8c93f387814f99931f

#デートコースを決めよう

参考テキストに出てくる応用問題です。
以下の問題をさっそく行ってみましょう。

>:speech_balloon: 問題

“`ruby:8.4.問題
8つのアトラクションがある遊園地でデートをする(8-4図)。
200分の制限時間の中で総満足度を最大化する。
なお、デートコースは全て回る必要はない。
条件を満たすデートコースを最適化せよ。
“`

![pic001.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/399135/f9f

元記事を表示

PythonでCSVファイルを読み込んでそのままDataFrameに変換する

# はじめに
– CSVで取得したデータをPythonで分析するために読み込んでPandasのDatafarame型で保持する方法をまとめる。

#事前準備
– 分析したいCSVファイルをカレントディレクトリに用意しておく
– CSVファイルは成形済前提

#コード
“`python
import csv, os
import pandas as pd
import numpy as np

#対象のファイルのパス文字列を指定
file_path = os.path.join(“.”,”maerge_Machine11_trd.csv”)
print(“file name:” + file_path)

#CSVファイルからdfへ変換
df = pd.read_csv(file_path)

#読み込んだデータの表示
df.head()

#TODO:dfからの目的のデータの取得
#TODO:統計解析・可視化

“`

# 解説
– os.path.jpin()で環境依存せずにファイルの場所を指定する
– pd.read_csv()でファイルを開きdataframe型へ変換

元記事を表示

TouchDesignerで機械学習(ObjectDetection)動かしてみた

# はじめに

勉強ついでに適当に作ってみたモデルをTouchDesigner内で動かしてみたくなったのでやってみました。

実際やってみたらこんな感じ!(この記事で使ったモデルとは違うけれど、だいたいこんな感じです)

サンプルのリポジトリは[こちら](https://github.com/T-Sumida/ObjectDetection4TouchDesginer)!

ちなみに、今回はWindows前提で記事を書いていますがMacでも動作可能です!

# TouchDesignerのPythonについて
TouchDesignerでは、拡張機能としてPythonを使用することができます(私の環境だと内部でPython3.7.2が動作するようです)。

Dialogs > Textport and DATs からPythonのインタプリタを使うことができます。

プリインストールとして、標準ライブラリとOpenCV、numpyなんかが使えます。

![touch1.png](https:/

元記事を表示

【kaggle】前処理まとめ(統計量、欠損値処理etc)

#1.目的
2018年12月頃からプログラミング(python)の勉強を始めて、kaggleに取り組み始めたのはこの数か月です。

その中で、「これってどうやるんだろう」と思ったものがたくさんあり、色々調べながら進めていったので、今回はその「前処理」にフォーカスし、そのまとめをしておこうと思います。

#2.使用するデータと必要なもののインポート
kaggleではおなじみのタイタニックです。
https://www.kaggle.com/c/titanic

“`python
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use(‘ggplot’)
import seaborn as sns

import numpy as np
import pandas as pd
“`

データの読み込みをしていきます。

“`python
df_train = pd.read_csv(r”C:///train.csv”)
df_test = pd.read_csv(r”C:///test.csv”)

元記事を表示

【営業マンの時短術】ウォーターフォールを描け

月次、四半期など報告書のための図表作りを少しでも楽にしたい。その一念のみです。
より良い方法があればぜひご教示ください。
#課題
最近、本社上層部が入れ替わり、ウォーターフォールで売上増減要因を明確化せよ、とのお達し。
エクセルでも出来るが、ひとつひとつ作るのは邪魔くさい!
#元データ
こればっかりは自分で作らなきゃいけない。

“`data.dat
2018, 1000
Factor A, 200
Factor B, -70
Factor C, 50
Factor D, 100
Factor E, -500
Factor F, 200
2019, 980
“`

#データを読み込んで整形
とりあえず、pandasで読む。indexとか面倒なので敢えて無視。

“`python:waterfall.py前半
import matplotlib.pyplot as plt
import pandas as pd

# Read File
df = pd.read_csv(“./data.dat”, header=None)

# Data Preparation
df[2]=df[

元記事を表示

Pythonのloggingライブラリは、なぜcamelCaseなのか?

友達とPythonのコーディング規約の話をしていて、ふと「PythonのPEP8では関数名は小文字で書けと書かれているのに、なぜ一部のライブラリ( [`logging`](https://docs.python.org/ja/3/library/logging.html) など)ではcamelCaseが採用されているのか?」という話題になりました。

“`python
# loggingのコードの例。getLoggerなどのメソッド名がcamelCaseです。
import logging

logger = logging.getLogger(‘simple_example’)
logger.setLevel(logging.DEBUG)
“`

実際、[PEP8の「関数や変数の名前」](https://pep8-ja.readthedocs.io/ja/latest/#id36)には次のように書かれています。

> 関数の名前は小文字のみにすべきです。また、読みやすくするために、必要に応じて単語をアンダースコアで区切るべきです。
>
> 変数の名前についても、関数と同じ規約に従

元記事を表示

Pythonでアルゴリズム(二分探索)

#はじめに
 コロナウイルスの影響で暇になったので…(以下略)
 前回のセグ木は重かったので今回は割と簡単に実装できる二分探索を適当にまとめてみます。
#考え方
 どこかの境界で条件を満たすものと満たさないものが分かれている場合に、その境界を**O(logN)**で探索することができます。
 例えば、条件を満たさないものを**x**、満たすものを**o**として、以下のようなリストが与えられたとします。
           **xxxxxxoooooo**

 0-indexで考えると、5番目や、6番目(境界の左右どちらか)を求めたいというときに二分探索が有効です。
 探索する範囲の左を**left**、右を**right**という変数に代入します。これらを足して、2で割ったもの(切り捨て)を**mid**として、indexが**mid**の要素が条件を満たすかどうかを判定します。
 満たすなら、それよりも右には境界はないので**right**の値を**mid**に更新して右側を切り捨てます。逆に、満たさないならそれよりも左に境界はないので**left**の値を**mid**に

元記事を表示

Oracle Cloud Infrastructure Data Scienceを使って、AWS Redshiftのデータにアクセスしてみる

#本記事の狙い
2020/2に、Oracle Cloud Infrastructure Data Science(OCI-Data Science)がリリースされました。
前回、OCI-Data ScienceからAWS S3上のファイルのデータにクエリしてみたので([Qiita記事:Oracle Cloud Infrastructure Data Scienceを使って、OCI Object StorageとAWS S3のファイルデータにアクセスしてみる](https://qiita.com/maato/items/691452be9e4a5d63e4f9))、本記事では、OCI-Data Scienceから、Pythonを使ってAWS Redshift上のデータにアクセスしてデータ取得する手順を、実施してみたいと思います。

#参考文献
###実施に参考になるリンク
– [Oracle Cloud Infrastructure Data Science(OCI-Data Science)を使ってみよう](https://community.oracle.com/docs/DOC-1

元記事を表示

Python3.9の新機能(1) – 辞書型で和集合演算子が使えるようになる

## はじめに

2020年10月にリリースを予定しているPython3.9で新たに加わる変更を[Python3.9の新機能 (まとめ)](https://qiita.com/ksato9700/items/d5df9d36147796c86c77)という記事でまとめ始めました。その中で比較的分量のある項目を別記事に切り出すことにしましたが、その第一弾として辞書型で和集合オペレータを使えるようになる変更を取り上げてみたいと思います。

## 辞書型の統合

辞書型はPython組み込みの標準データ型の一つです。他の言語だとハッシュ型・マップ型・連想配列型など様々な呼ばれ方をしていますが、要は名前と値のペア (key-value pair)を格納するためのデータ型です。

この辞書型のデータ(d1, d2) が二つあり、それを混ぜ合わせて一つの辞書型データにすることを考えます。これまでも幾つかやり方がありました。

#### 1) `update`メソッドを使う

d1.update(d2)`とすれば統合された辞書型データがd1に上書き格納されます。もしd1をそのまま取っておきたい場

元記事を表示

非再帰BFSでトポソから木DPをする

# 非再帰 BFS
Python で非再帰 BFS を書きます。ついでにトポロジカルソート(トポソ)もできます。トポロジカルソートを知らない人は適当に ググって ください。

トポロジカルソートを使うと、木 DP が簡単にできます。

## 目標
木の問題は基本的にトポソすればなんとかなります (本当?) 。みんな大好き 木DP もトポソ順に処理すればその都度 BFS / DFS する必要ないのでらくちんです。この記事では BFS で木のトポソを求めて、木 DP をやるのが目標です。

### 入力
まずは入力部分。1-indexed で辺リストを `X` に格納しています。

“`test.py
N = int(input()) # 頂点数
X = [[] f

元記事を表示

Instagramの写真を全部一気に保存する方法

#概要
[Instagram](https://www.instagram.com/)の画像を全部一気にダウンロードするコードを書きました。
ログインや画面スクロールの部分は手動にすることで安定した動作が期待できます。

#デモ動画
こんな感じに動きます。

![instaimgdownload.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435380/bddaaa8c-30b8-46c7-a5f1-738fa70b65b0.gif)

⚠️Instagramの[利用規約](https://www.facebook.com/help/instagram/478745558852511)では,自動化された手段を用いて情報を取得する行為は禁止されています。
この記事の内容をもとに自動化ツールを作ることはしないでください。

#Seleniumとは
[Selenium](https://www.seleniumhq.org/) とは,Webアプリケーションのテスト自動化に特化した機能を持つツール群です

元記事を表示

Pythonで毎日AtCoder #28

### はじめに
前回
今日はABC140の問題を解きました。50分でA~Cでした。

### A問題
[問題](https://atcoder.jp/contests/abc140/tasks/abc140_a) 0diff

**考えたこと**
3桁のパスワードなので使える数字の3乗を出力すればいい。

“`python
n = int(input())
print(n**3)
“`

### B問題
[問題](https://atcoder.jp/contests/abc140/tasks/abc140_b) 58diff

**考えたこと**
for文とif文で計算するだけ。リストの要素とindexが混ざらないように気を付ければいい

“`python
n = int(input())
a = list(map(int,input().split()))
b = list(map(int,input().split()))
c = list(map(int,input().split()))

ans = 0
f = 10**9
for i in range(n)

元記事を表示

(Python)HTMLの読み取りと正規表現でつかえたところメモ

PythonにてHTMLファイルに正規表現を施す時、
エンコーディングやその他諸々の箇所でつかえてしまったので、メモとして残します。

## I. HTMLファイルの読み取り

“`codecs“` ライブラリーを使いましょう。Pythonの標準ライブラリなので(Appx. 1)、インストールいらずにimportだけで使用できます。

“`
import codecs
f = codecs.open(“hoge.html”,”r”, encoding=”utf-8″)
“`
### 注意
– codecs.open関数には必ず“`encoding“`引数を指定しよう
– Windows環境下だと、Shift-JISと明示されたファイル以外はうまく読み取れないそうです。支(つか)えていたところ先人がいました(Appx. 2)。

## II.正規表現を施す

“`re“` ライブラリを使いましょう。こちらも標準ライブラリ(Appx. 1)なのでimportのみで使えます。

“`
# (前章のつづき)
import re
str = f.read()
reg

元記事を表示

リストの結合、extendするより足し算した方が早くね?

# 簡単に速度測定

`sub_list = list(range(10000))`を空のリストに追加したときの速度を測定してみる。

## 1. `extend`の速度
“`python
In:
%%timeit

li = []
li.extend(sub_list)
“`
“`
Out:
26.7 µs ± 2.44 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)
“`

## 2. 足し算の速度
“`python
In:
%%timeit

li = []
li += sub_list
“`
“`
Out:
25.3 µs ± 281 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
“`

**足し算の方が早く、速度も安定している。`extend`って組み込み関数なのに遅くね?**

# 詳しく速度測定

この問題には、

– 元のリストの長さ
– 追加するリストの長さ

の2つの変数があるので、それをいじったときの速度を測

元記事を表示

Python&機械学習 勉強メモ⑤

#はじめに
① https://qiita.com/yohiro/items/04984927d0b455700cd1
② https://qiita.com/yohiro/items/5aab5d28aef57ccbb19c
③ https://qiita.com/yohiro/items/cc9bc2631c0306f813b5
④ https://qiita.com/yohiro/items/d376f44fe66831599d0b
の続き

– 参考教材:[Udemy みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習](https://www.udemy.com/course/learning-ai/)

#scikit-learn
今回用いる機械学習ライブラリ

#課題設定
花弁と萼それぞれの長さと幅を与えると、アヤメの品種特定をする。
0は”Setosa”を表す。
1は”Versicolor”を表す。
2は”Virsinica”を表す。

#ソースコード
##インポート

“`python
from sklearn import datasets
from

元記事を表示

Twitterに投稿された新型コロナウィルスに関するツイートを分析してみた

# 概要
Twitterでは,新型コロナウィルスに関して日夜活発に議論されています.
これらのツイートを分析することで,Twitterユーザの傾向として意義あるものが掴めないかと思ました.
そこで,本記事では,Twitterに投稿された新型コロナウィルスに関するツイートを収集し,簡単に分析をしていきます.

誤りや見づらい箇所,アドバイス等ございましたら,どうぞご気軽にご指摘ください.よろしくお願いします.

# データの詳細
本記事で用いるツイートデータは,2020年1月1日~2020年4月1日までの間に投稿された,「コロナ」「COVID-19」「感染症」のいずれかを含むツイートです.
ただし,日本語ツイートに限定し,RT数が10を越えているツイートのみを用います.
結果として,47041件のツイートからなるデータセットを構築しました.

ツイートデータは以下のような連想配列で保存しました.

“`
{
‘text’: ‘xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx’,
‘date’: datetime.datetime(2020, 1, 1, 1,

元記事を表示

(Python:OpenCV)動画をリアルタイムで二値化処理させつつ、領域間の距離を示す値を出力させてみた

#はじめに

 製造業の非IT部門で働く私でも、AI、IoT化を意識して仕事をするようになりました。製造現場に近い生産技術職寄りの仕事をしておりますが、システム化を行う上での課題の一つに工場への利益と釣り合わないことが挙げられます。
 やりたいことはあるのだけど、見積もると導入コストが高くなってしまい(人件費が高い場合が多い。。)断念する場合があります。
 そこで、スキルアップの観点からも私が作ってしまうことが良いのでは、と思い進めていることが下記の内容です。

1. 画像処理をするプログラムを作成(画像ver.)
2. **今回:画像処理をするプログラムを作成(動画ver.)**
3. Raspberry Piに環境構築+プログラムを格納
4. 撮影した画像でリアルタイムで処理できるか確認
5. 工場の改善に繋がる良い処理方法の探索
6. KPI値を改善して、成果

 製造現場で使用している撮影動画について、リアルタイムで処理(二値化、ある距離の演算・表示など)を行ってその結果表示させることを目指します。
 意外と現場の作業者にとって、ビデオ画像を簡単に処理したものでも製造しやすくな

元記事を表示

Pythonの辞書

AtCoderなどといている時によく忘れて調べることになるが、意外に綺麗にまとまっているサイトが少なかったので自分で書いた

### 宣言
よくあるやつ

“`python
d = {}
#または
d = dict()
“`

### 要素の更新
存在するキーの有無によって挙動が両者異なる

“`python
d[‘key’] = ‘value’
#指定したキーが存在しない場合、コンパイルエラー
#指定したキーが既に存在する場合、既存の値を更新

d.setdefault(‘key’, ‘value’)
#指定したキーが存在しない場合、新たに要素を追加
#指定したキーが既に存在する場合、変更なし
“`

### 辞書同士の連結
下に書く通り

“`python
d1 = {‘key1’: ‘value1’, ‘key2’: ‘value2’}
d2 = {‘key3’: ‘value3’, ‘key4’: ‘value4’}

d1.update(d2)
print(d1)
#{‘key1’: ‘value1’, ‘key2’: ‘value2’, ‘ke

元記事を表示

IQ Botのカスタムロジック:日付によくある読み癖の補正

OCRで日付を読み込んだときに、比較的よく見かけるOCRの読み癖のパターンがあります。

「YYYY年MM月DD日」の「日」の部分が
「B」(アルファベットのビー)になっているパターンと、
「0」(ゼロ)になっているパターンです。

「年」や「月」が違う読み方をされているケースはあまり見たことがないのですが、
なぜか「日」だけはいろんなパターンの帳票でBになったり0になったりしています。

IQ Botでは、そんなOCRの読み癖を補正してキレイにできるので、ここではそのやりかたを紹介します。

#日をBと読んでしまうパターンへの対応

この場合は、[こちら](https://qiita.com/IQBotter/items/b1e7a75439fede2171e6)でも紹介した単純な置換処理で対応できます。

“`python:日付項目の日をBと読んでしまうパターンへの対応(フィールド項目の場合)
field_value = field_value.replace(“B”,”日”)
“`

日付の項目で「B」が正解データに含まれることは考えにくいので、単純に置き換えて問題ないでしょ

元記事を表示

OTHERカテゴリの最新記事