Python関連のことを調べてみた2021年10月11日

Python関連のことを調べてみた2021年10月11日
目次

凝集度 (Cohesion)

#Cohesion を python で使う場合
python で計測したい時は[ここ](https://pypi.org/project/cohesion/)にインストール方法や利用方法が書いてあるので参考にしてほしい。

#Cohesion の概要
[色々な数式](https://www.aivosto.com/project/help/pm-oo-cohesion.html)で表現されるが、Cohesion はクラス設計で活躍するメトリクスなので、オブジェクト指向プログラミングがわからない!という人は是非使ってみてほしいメトリクスである。
ざっくりとした説明をすると、このメトリクスによってクラス変数がクラス関数でどの程度使われているかを数値で表現できるため、設計の指針として活用できるというものである。

#Cohesion で Why & What & How を考える

>(Why) なぜこのメトリクスを使うのか?

この数値を利用することで以下の判断を客観的に行う材料として使えるため。

>(What) 使うことで何がわかるのか?何に使えるのか?

数値を確認することで、

元記事を表示

iPadのPython(Jypyter notebook)実行環境であるJunoを使い始める

# はじめに
2021年10月10日、iPadのPython (Jupyter notebook) 実行環境である Juno を購入した。¥1840也。iPad 用のPython実行環境としては、以前からPythonista 3 を持っていたのだが、Pythonista 3 で使用可能なライブラリは、numpy と matplotlib だけであり、作成できるプログラムが限られてくるため、numpy, matplotlib, scipy, pandas, sklearn が使える Juno を購入したわけだ。同じように scipy, pandas, sklearn が使えるiPad用Python 環境として、 Pyto というものもあるが、App store で評価を見ると、『挙動が不安定でよく落ちる』というものがあり、これが気になったため、比較的安定していると思われる Juno を選択した。
なお、無料のPython環境で、Carnets-Jupiter (with scipy) というものもあり試してみたが、外付けキーボードからのリターンキーによる改行を受け付けなかった為、これは早

元記事を表示

Athenaで基礎からしっかり入門 分析SQL(Pythonコード付き) #5

今まで複雑なデータ操作・分析などはPythonでやっており、SQLは普通のアプリ開発程度のライトなものしか触って来なかったのですが、やはり分析用の長いSQLなども書けた方がやりとり等で便利・・・という印象なので、復習も兼ねて記事にしておきます。

また、SQLに加えて検算も兼ねてPythonやPandasなどを使ったコードもSQLと併記していきます(Pythonで書くとどういった記述が該当するのかの比較用として使います)。

※長くなるのでいくつかの記事に分割します。本記事は5記事目となります。

# 他のシリーズ記事

※過去の記事で既に触れたものは本記事では触れません。

`#1`:

用語の説明・SELECT、WHERE、ORDER BY、LIMIT、AS、DISTINCT、基本的な集計関係(COUNTやAVGなど)、Athenaのパーティション、型、CAST、JOIN、UNION(INTERSECTなど含む)など。

https://qiita.com/simonritchie/items/0d84646e3db940e98b14

`#2`:

GROUP BY・HAVING

元記事を表示

GCP AI Platform NotebookからCSVをDLする際にデータが途切れることを回避する方法

# 問題

GCP AI Platform Notebookでpythonを用いて計算を行った後、CSVを出力したとします。これをそのままDLしたら、テーブルの途中までしか入っていませんでした。

# 解決方法

zipに変換してからDLすることで回避できました。

“`python
import zipfile

with zipfile.ZipFile(‘./output/new_comp.zip’, ‘w’, compression=zipfile.ZIP_DEFLATED) as new_zip:
new_zip.write(‘../output/test.csv’, arcname=’test.csv’)
“`

元記事を表示

データ収集作業を自動化しよう

# はじめに
最近Lancersというアウトソージングサイトを見ていたら、データ入力や調査系の仕事が2円/件くらいでたくさんあることに気が付きました。しかも仕事依頼者は手作業で進めることを前提としており、応募している方々も皆そのように進めようとしていました。
これGoogle先生のAPI使えば無双できるんじゃね。ってのがこの記事を書いたモチベです。

Qiitaに集いしエンジニアの方々からすれば大したことないコードだと思いますが、このようなデータ収集等をいまだに手作業で進めている人類の方は多いと思いますので、そのような方でかつプログラミングに興味のある方を対象とした記事です。

デジタル庁も発足し、ITに疎いお父さんの口からもDXという言葉がもれる時代ですから、是非この機会に自動化をはじめてみませんか。

# 技術
– Python
– Google Places API

# 作るもの
今回はLancersに落ちていた、「場所+施設」で検索をかけて、その施設や店舗の名前・HPのURL・電話番号をエクセルに入力する仕事を自動化します。PythonとGoogle APIで情報を集めてC

元記事を表示

ChromebookのランチャーからJupyter Notebookを起動できるようにする方法

# はじめに
 ChromebookでLinuxモードを有効にした場合、Linux内の /usr/share/applications/ にデスクトップエントリファイル(.desktop)を保存すれば、ホスト側(ChromeOS)のランチャーにLinuxアプリを表示できるように [Garcon daemon](https://chromium.googlesource.com/chromiumos/platform2/+/HEAD/vm_tools/garcon/) が動作しています。
 ところが、Anaconda3 の jupyter-notebook のデスクトップエントリ(notebook.desktop)を登録して、ランチャーから実行するとシェルフに表示されたアイコンが永遠とローディング状態となり一度本体をシャットダウンしないと2回目の起動ができないという問題が発生しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/23691/a88d3941-fc0d-5ed6-052

元記事を表示

matplotlibのplot_surfaceで100万個ほどのデータなのにメモリエラーが出たので解決策

##matplotlibで3Dのグラフを描いてみよう

matplotlibで3次元のグラフを描くのは、とりあえず
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
などを使えば、出来るとされています

特にAxes3Dクラスのメソッドであるplot_surfaceを使えば簡単に描けるというので、
早速描いてみましょう

[[Pythonによる科学・技術計算] 3次元曲面の描画,サーフェス,ワイヤーフレーム,可視化,matplotlib](https://qiita.com/sci_Haru/items/ae54f90e53ccc959d3cb)
を真似てみて

“`python
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure() #プロット領域の作成
ax = fig.gca(projection=’3d’) #プロット中の軸

元記事を表示

ABC221 C – Swiss-System Tournament から学んだ

https://atcoder.jp/contests/abc222/tasks/abc222_c

![abc221_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/df577a1b-5859-6bff-0900-115c1cd44ec2.png)
![abc221_2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/18cc47c7-094b-666b-e366-a423304850c1.png)
![abc221_3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/737344/db570551-dcb7-690a-4e43-30fd5b63c758.png)
![abc221_4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/

元記事を表示

pythonでヒストグラムをビンまとめ(rebin)する方法

# 背景

python で既に構築されているヒストグラムを後からビンまとめしたい場合に、2つのやり方を紹介する。例えば、[root](https://root.cern) を用いて一次元ヒストグラムを生成していて、 [uproot](https://uproot.readthedocs.io/en/latest/) でヒストグラムを読んだ場合など、python でビンまとめ(俗称rebin)したい場合に便利かと思います。

googleユーザーで、コードを見ればわかる人は、[google colab のサンプルページ](https://colab.research.google.com/drive/1ZxSQ81vv4Ku_hEnSFKFzPZ10f3_9tTlu?usp=sharing) を見てください。

# 具体的な方法
## 方法1(ビンまとめしたい数で割り切れる場合)

一次元のヒストグラムで、要素数がN個で、これをkビンにまとめたい場合、N/kが割り切れる場合に限定しても構わないことが多いはず。この場合は、numpy.splitで要素数を分割して、その要素毎に平均を計算す

元記事を表示

ABC222 チャレンジ結果

ABC222結果 : ABC3完
相変わらずD問題で詰まってしまう…
以下ソースコード

A : Four Digits
パッと構文が分からないときのとりあえずfor文で回す.

“`python
N = input()
k = 4 – len(N)
for i in range(k):
print(0, end=””)

print(N)
“`

B : Failing Grade
問題文そのまま. 解説見たら内包表記使えば行数少なくできることに気づかされる.

“`python
N, P = list(map(int, input().split(” “)))
list_N = list(map(int, input().split(” “)))

num = 0
for i in range(N):
if list_N[i] < P: num += 1 print(num) ``` C : Swiss-System Tournament 勝数とindexでソートするために, 勝った場合は減算することに. 途中でindexもいると気づ

元記事を表示

Python機械学習/pickleファイルを使ったオブジェクトの保存

# Summary
Pythonで機械学習をする際のデータやモデルの保存にはpickleファイルを使用するのが非常に便利なので,その使い方についてメモを残しておく.

# データの準備
今回はScikit-learnのガンデータを使用.

“`py
from sklearn.datasets import load_breast_cancer
import pandas as pd

cancer = load_breast_cancer()
data_feature = pd.DataFrame(cancer.data, columns=cancer.feature_names)
data_target = pd.DataFrame(cancer.target)
“`

# csvファイルでデータ管理
まずは一般的なCSVファイルでのデータ読み書きについて記す.

csvファイルで保存

“`py
data_feature.to_csv(‘data_feature.csv’)
data_target.to_csv(‘data_target.csv’)
“`

csvファイルの

元記事を表示

poetryを使って外部モジュールからimportできるようにパッケージングする

– pythonモジュールをパッケージングして、pip installしたのちに別モジュールでimportして使いたい
– poetryを使うことでパッケージングは簡単にできたが、肝心な“`別モジュールでimportして使う“`ところでハマったのでやり方を残す

## やったこと
pyproject.tomlにて“`[build-system]“`を下記のように設定

“`
[build-system]
requires = [“setuptools”, “wheel”]
“`

元記事を表示

Ubuntuに最新バージョンのPythonをインストールする

ubuntu20.04に最新のPython3.10.0をインストールする

###Ubuntuのバージョン確認。
cat /etc/lsb-release

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION=”Ubuntu 20.04.3 LTS”

###アーキテクチャは64bit。
arch
x86_64

###ビルド環境の準備
sudo apt update
sudo apt install build-essential libbz2-dev libdb-dev \
libreadline-dev libffi-dev libgdbm-dev liblzma-dev \
libncursesw5-dev libsqlite3-dev libssl-dev \
zlib1g-dev uuid-dev tk-dev

###ソースコードのダウンロード
Python Japanのダウンロードページ
https://pythonlinks.python.j

元記事を表示

VGG16によるファインチューニングで胸部X線画像における肺炎の分類をする

# 概要・目的

**Kaggle で公開されているデータセットを使って
胸部 X 線画像から正常 (Normal) か肺炎 (Pneumonia) を分類する**

* 画像データ数は合計5856枚 (train: 5216, val: 16, test: 624)
* 画像サイズはデータによってまちまち
* trainデータの Normal とPneumonia の枚数の差が大きい (Normal: 1341, Pneumonia: 3875)
* テストデータでの accuracy: 95 % となった

original image

(画像出典: https://data.mendeley.com/datasets/rscbjbr9sj/2)
(Kaggle: https://www.kaggle.com

元記事を表示

ケミストリーエンジニアがMIを学ぶには?

ケミストリーエンジニアがまず、勉強始めようと思いましたら、
MIの概要、考え方を学んでみるのはいかがでしょうか。

#MIの基礎情報(プログラムなし)

【連続極座標系】円筒形座標系(Cylindrical Coordinate System)による加法群(Additive Group)と乗法群(Multiplicative Group)と商群(Quotient Group)の統合

今回も**関数の基本概念**(Function Basic Concept)そのものからの再出発となります。最近ずっとこの辺りを堂々巡りしています。よっぽど基礎が出来てなかったとしか思えません。
[【Python演算処理】冪算と乗除算の関係について。](https://qiita.com/ochimusha01/items/8a66fcab8285a146265f)

>二つの数の集合X,Yがあって、Xの要素xに対してYの要素yがただ一つ定まる時、この対応を**関数**(Function)と呼びy=f(x)などと書き表す(fはfunctionの略だが、複数の関数への言及が不可避となる状況ではそれをy=g(x),y=h(x)などと呼び分ける)。

* この時xを**独立変数**(Independent Variable)、yを**従属変数**(Dependent Variable)と呼ぶ。
* また集合Xを関数fの**定義域**(Domain)、集合Yの部分集合$(y|y=f(x),x \in X)$をこの関数の**値域**(Range)という。

>関数y=fxの変化の様子はxの値を横

元記事を表示

Python3.10 新機能!パターンマッチ構文解説

# はじめに
Python3.10.0 が2021年10月4日にリリースされました。その中でもパターンマッチ構文は大きな機能追加の一つだったため、この記事で解説したいと思います。

https://www.python.org/dev/peps/pep-0634/

私が運営しているYouTubeチャンネルの動画内でも解説しているのですが、動画をみるのが苦手、テキストで知りたい、という人向けにQiitaでも記事を投稿することにしました!

# 基本構文
パターンマッチは、あるオブジェクトに対して、どのパターンにマッチしているかを評価して処理を分岐させる構文になります。

`match`の後ろに、調べたい対象のオブジェクトを指定して、`case`の後ろにパターンを記載します。例えば、ひとつ目の`case`のパターン1に当てはまった場合は、`case`の中の処理が実施されます。パターンは色々な記載ができるため、いくつか解説していきます。

“`python3:base.py
match 対象オブジェクト:
case

元記事を表示

kivyMDチュートリアル其の参什漆 Components – NavigationRail篇

ハロー、Qiita。清秋の候、すがすがしい秋晴れの
今日この頃、いかがお過ごしでしょうか。

はいー、先週入れられてなかった時候の挨拶ですが、今週で使ってみました。
合ってますかね、使い方。

先日は地震などがありましたが、みなさんはご無事でしたでしょうか。常日頃、
備蓄などはしないといけないなと感じたくらい、身の危険を感じましたね。と、
いってもいざ事が起きたときは何も動けなかったのですが汗

というわけで、少し話は脱線しましたがKivyMDの時間は相変わらずオープン
します。今日は、NavigationRail編となります。

## NavigationRail

いざ始まるといっても、いつものリンクは飛ばすというのはありますが、今日は
少し重要なこともあるので何点か触れてみます。

2点ほどあるのですが、まずは他のナビゲーションと組み合わせてはいけないという
ことですね。他のナビゲーションとしては、先週やったNavigationDrawerともう
1つは以前やったBottomNavigationですね。これらと組み合わせると望ましくない
と書かれてあります。

もう1点は、デバイ

元記事を表示

【断言】エンジニアを辞めたい人へ。後悔する前にすべきことを経験者が解説

SEやITエンジニアに限らず、社会人は人生のほとんどの時間を仕事に費やしています。
それ故、仕事が辛いとQOLをゴリゴリと下がってしまうことは言うまでもないでしょう。
僕自身も新卒入社した一社目の会社は仕事が肌に合わず**わずか3ヶ月で退職する**という動きをブチかましたことがあります。
なので仕事が辛い人の気持ちはとてもよくわかります。

特にエンジニアは他の職業よりも技術に対する好奇心が要求されます。
その為仕事へのモチベが下がってしまうことは大問題ですよね。

そこでこの記事では、毎日の仕事が辛いエンジニアに向けて、

– **エンジニアが仕事を辛いと感じる理由**
– **後悔する前に試すべきこと**

を僕なりに書いていこうと思います。

## 【辛い】 ITエンジニア業務を辞めたくなる理由

### 上司・同僚に不満がある

エンジニアが辞めたくなる原因で一番多いのは人間関係ではないでしょうか。
(これに関しては他の職業と同じです。)

優しい人が多めだと言われるエンジニア界隈でも、単純に上司や先輩の人格が終わっているケースは普通にあります。

Python 基礎

## 目次
1. [基礎文法](#1-基礎文法)
1. [演算子](#2-演算子)
1. [制御文](#3-制御文)
1. [関数](#4-関数)
1. [モジュールとクラス](#5-モジュールとクラス)

## 1. 基礎文法

### 基本的なルール
* 文末のセミコロンは不要(つけることもできる)
* {}で処理をまとめるのではなく、インデントで処理をまとめる
* メンバアクセスはドットで行う
* 処理を複数行にまたぐ場合、改行にはバックスラッシュを使用する

### 変数
* 「変数名 = 値」で宣言できる
* 「変数名:型名 = 値」で型を明示して変数宣言できる

※ただし、実行時に指定型以外の値を入れても、実行時エラーとはならないので注意
型指定はあくまで制作側へのヒント。

“`python
# 型指定なし
val = 10

# 型指定あり
val:str = ‘あいうえお’
“`

### コメント
* 単一行は「#」
* 複数行のコメント機能はないが、3重のシングルクォートorダブルクォートで囲むことで、複数行の文字列扱いにできる

“`python
# 単