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

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

Zennのタグ情報を分析してみた

# 概要
QiitaとZennってどんな特徴があるの?
前回Zennのスクレイピングを投稿したのですが、
そちらで取得した情報をPythonを用いて時系列順に分析してみました。

# 目次
[1.タグ情報の時系列グラフ](#1タグ情報の時系列グラフ)
[2.実行環境](#2実行環境)
[3.コード概要](#3コード概要)
[4.感想](#4感想)
[5.最後に](#最後に)

# 1.タグ情報の時系列グラフ
結果はこのようなグラフが得られました。
タグ情報の全体に占める割合の移動平均をとったグラフになります。
![ratio_m_ave_half_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2532908/f8d5d5f8-f96f-cccf-6dae-9e9a34777ae9.png)

# 2.実行環境
今回、Google Colaboratoryで実施しました。

# 3.コード概要
前回のスクレイピングで作成したcsvファイルを読み込みます。
まずはgoogle driveとの連携を作

元記事を表示

PythonでYoutubeの動画を検索して、自動で再生リストに追加するプログラムを作ってみた。

## はじめに
毎週複数の同じ検索ワードで検索しては、再生リストに追加してYoutube動画を見ていました。
それが面倒になり、自動化できないかプログラミングしてみました。

## 環境
– python 3.9.7
– vscode
– youtube api v3
– windows 10
## 仕様
– 7日以内にアップロードされた動画を対象とする
– 各検索ワードに対して、関連度が高い1つの動画を再生リストに追加する
– すでに再生リストに含まれる動画は重複しないようにする
– APIの認証の通し方はhttps://dev.classmethod.jp/articles/oauth2-youtube-data-api/ を参考にした

## 流れ
1. youtubeの認証を通す
1. 7日前の日付を取得する
1. 検索ワードで検索結果を取得する
1. すでに再生リストに含まれるかチェックする
1. 検索された動画を再生リストに追加する
## つまづいたところ
– oauth2clientが非推奨のためか、利用できなかった
– https://dev.classmeth

元記事を表示

CentOS7でpythonをdaemon化してみた

最近某ドラマでdaemonという言葉を知った。
名前からして興味が湧いたため(小並感)CentOSでやってみることにした

◆そもそもdaemonとは?
UNIX系のOSでバックグラウンドで常駐し動作している(動作できるように待機している)プログラム。
内容にもよりますが、自動化させたいシステムがあればdaemon化すると何かと便利かもしれません。

今回は3秒事に現在時刻を取得し、それをtextに保存するpythonをdaemon化してみます。

[環境]
CentOS7(virtualBOX)
rootユーザー(daemon作成できればそれでいいや!と思いrootで操作します?
(一般ユーザーの場合はところどころroot権限が必要な点があるのでsudo等活用ください)

やってみる!

◆python環境構築
python3をインストール
`# yum install python3`

install後、pythonがinstallされていることを-Vオプションにて確認。
`# python3 -V`
-> Python 3.6.8

◆作業場所確保
今回/workPlaceとい

元記事を表示

Python,Ruby,PHP,Java,JavaScript,Perlの繰り返し構文の比較

Python,Ruby,PHP,Java,JavaScript,Perlの繰り返し構文の比較

# Python

https://qiita.com/atsui-ocha/items/5b8e4f973b36e78fdaf1

# Ruby

https://qiita.com/beanzou/items/6231d3d0a926765ddbb4

# PHP

https://qiita.com/rana_kualu/items/0abd2b6f69527b0b4b92

# Java

https://qiita.com/morioheisei/items/e686e33b60c6a60e87f0

# JavaScript

https://qiita.com/tetsuyakojima/items/fd63f91a4e34d6bad28b

# Perl

https://perlzemi.com/blog/20170521149524.html

元記事を表示

Zennのタグ情報をスクレイピング【備忘録】

# 概要
QiitaとZennってどんな特徴があるの?
気になったけれどZennの情報はまとまっていなかったのでスクレイピングで調べてみました。
その時の困りごと等々忘れない様、備忘録代わりに書いてみました。
初投稿なので拙い部分多々あるかと思いますが、よろしくお願いいたします。

# 目次
[1.タグ情報のランキング](#1タグ情報のランキング)
[2.実行環境](#2実行環境)
[3.利用規約確認](#3利用規約確認)
[4.サイトURLスクレイピング](#4サイトurlスクレイピング)
[5.タグ情報スクレイピング](#5タグ情報スクレイピング)
[6.最後に](#6最後に)
# 1.タグ情報のランキング
2021年のタグ情報をまとめてみました。
個人的には初心者タグの順位差が大きく異なるのが特徴かなと思いました。
|順位|Zenn |Zenn件数|Qiita |Qiita件数|Zenn-Qiita順位差|
|—|— |— |— |— |— |
|1 |JavaScript|1261

元記事を表示

#StableDiffusion #python #pytorch をNVIDIA GeForce GTX 750 Ti(VRAM:2GB)で動かす方法 #ai #人工知能

本内容を利用した場合の一切の責任を私は負いません。

はじめに。
自分は描かせることが目的ではないので、出力画像のサイズを犠牲にしてます。

# バージョン
– OS
OS 名: Microsoft Windows 10 Home
OS バージョン: 10.0.19043 N/A ビルド 19043
システムの種類: x64-based PC
– グラボドライバー
30.0.15.1295
– Stable Diffusion(フォーク版 https://github.com/basujindal/stable-diffusion )
commit 487a0f46f6d4b82a7a7d9704e6800ccdde02cd3e
– Stable Diffusion(非フォーク版 https://github.com/CompVis/stable-diffusion )
commit 69ae4b35e0a0f6ee1af8bb9a5d0016ccb27e36dc
– モデル( https://huggin

元記事を表示

【Python】DFSで無向グラフの閉路検出

**DFS**(深さ優先探索)で連結な単純無向グラフの閉路を検出する方法メモ

“`python
# 頂点数:n
# edge[i]:頂点iと辺で結ばれる頂点の集合

# 遷移元の頂点
parent=[-1]*n
# 閉路に含まれる辺の集合
loop =set()
# 既に探索した頂点か
come=[False]*n

def dfs(x,last=-1):
if last!=-1:
parent[x]=last
come[x]=True
for i in edge[x]:
if i ==last:continue
if come[i]:
now=x
loop.add((now,i))
loop.add((i,now))
while now!=i:
loop.add((now,parent[now]))
loop.add((parent[now],now)

元記事を表示

re.subを使って複数の空白文字を任意のセパレータ文字に変換

## 文字列の中の複数の空白文字(スペース)を、正規表現を使ってコンマ(,)に変換する

### ユースケース
+ コマンド結果を文字列として取り込み、それを加工して使用する
+ 例:ネットワークコマンドの実行結果など

“`bash
~$ ss -tu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp ESTAB 0 0 127.0.0.1:59976 127.0.0.1:39839
tcp ESTAB 0 0 127.0.0.1:59978 127.0.0.1:39839
tcp ESTAB 0 0

元記事を表示

pyenv installを覗いてみる

# 概要
pyenvのパスの理解の仕方とインストールの手順が気になったので調べてみた。
前回は[こちら](https://qiita.com/yo314159265/items/45d945aaf9ec1cc79f91)

# 内容
ややはやりぎだが、早めに辿り着く。

## `/usr/local/opt/pyenv/libexec/pyenv-install`
は、ない。
## `/usr/local/opt/pyenv/bin/pyenv-install`
少しずつ見ていく。
“`bash
set -e
[ -n “$PYENV_DEBUG” ] && set -x
“`
決まり文句。
“`bash
# Add `share/python-build/` directory from each pyenv plugin to the list of
# paths where build definitions are looked up.
shopt -s nullglob
for plugin_path in “$PYENV_ROOT”/plugins/*/share/

元記事を表示

【OpenCV】Dense Optical Flowを矢印や色空間で表示する方法

# 概要
OpenCVで提供されているオプティカルフローは2種類あり、本記事ではDense Optical Flowについて実装方法と矢印や色空間で表示する方法を紹介する。Optical Flowの説明については、

https://qiita.com/icoxfog417/items/357e6e495b7a40da14d8

を参照されたい。

# 実装
Google Colabで作成した本記事のコードは、[こちら](https://colab.research.google.com/drive/101FyisVYFAj-TvXnwlb6GNRg5yMASEuO?usp=sharing)にあります。
## 各種インポート
“`Python:各種インポート
import cv2
import matplotlib.pyplot as plt
import numpy as np
“`
実行時の各種バージョン

| Name | Version |
|:-:|:-:|
| opencv-python | 4.6.0.66 |
| matplotlib | 3.2.2 |
| num

元記事を表示

HerokuにヘッドレスブラウザSplashをDockerデプロイする

# はじめに
[Splash](https://splash.readthedocs.io/en/stable/index.html)はPython製の、JavaScriptを使ったページのレンダリングが可能なヘッドレスブラウザです。
ローカル環境では公式のDockerイメージで起動できますが、Heroku上で動かそうと試したのでその手順をまとめます。

# 前提
– Herokuアカウント作成済み
– Heroku CLI インストール済み
– Docker インストール済み

# 対応方法
Heroku Container Registry を使用するとDockerイメージをHerokuにデプロイできます。
ただしいくつか制約があり、元の公式のイメージをそのまま使うことはできないので変更を加えます。

### 公式イメージのDockerfile
Splashの[公式イメージDockerfile](https://github.com/scrapinghub/splash/blob/master/Dockerfile)の最後あたりは以下のようになっています。
“`Dockerfi

元記事を表示

.pyenv/shims/python を覗いてみる

# 概要
pyenv の入り口がシェルスクリプトなのは知っていたが、そこを改めてよく見たことはなかったので一度見てみる。

# 内容
## `which python`
“`bash
$ which python
/Users/yo314159265/.pyenv/shims/python
“`
shims/以下のpythonが本体のようだ。
## `~/.pyenv/shims/python`
“`bash:~/.pyenv/shims/python
#!/usr/bin/env bash
set -e
[ -n “$PYENV_DEBUG” ] && set -x

program=”${0##*/}”

export PYENV_ROOT=”/Users/yo314159265/.pyenv”
exec “/usr/local/opt/pyenv/bin/pyenv” exec “$program” “$@”
“`
1行目はshebang。環境でのbashで実行してくれる。
2行目は、set -eで、もしエラーが出たらすぐにスクリプトを止めるようにという意味。
3行目は、

元記事を表示

【自己組織化マップ】多次元情報を可視化する

# 初めに
[前回の記事](https://qiita.com/shimokame777/items/a1537a5f855a73fd8fa5)では、画像データを例に自己組織化マップ(以下、SOM)の説明を記事にした
今回は、California HousingのデータでSOMを活用した
データの解釈の方法について記事にしようと思う。

私自身、SOMから得られた解釈をプレゼンするは非常に苦労するし、
なかなか分かってもらえないものだ・・・
ただし、自分のデータ分析にのみ活用する際、SOMは有効な手段だと考えている。

# データの前処理
これについては、[過去の記事](https://qiita.com/shimokame777/items/d370a7ac94432e222dc5)と同様の処理を実施する
コードについては、下記の通り
~~~python
# ライブラリのインポート
import pandas as pd
import numpy as np
import seaborn as sns
import time
from sklearn.datasets import

元記事を表示

三桁までの金額の最小硬貨枚数を調べるコード

# 指定した金額を100,10,1円玉だけで支払う時に、それぞれ何枚ずつ必要になるか計算して表示するコード
“`
import tkinter as tk

def dispLabel():
a = int(EditBox1.get())
A1=a//100
A2=(a-A1*100)//10
A3=(a-A1*100)-A2*10
str_A1=str(A1)
str_A2=str(A2)
str_A3=str(A3)
str_a=str(a)

lbl2.configure(text=str_a+”は100円玉”+str_A1+”枚と”)
lbl3.configure(text=”10円玉”+str_A2+”枚と”)
lbl4.configure(text=”1円玉”+str_A3+”枚です。”)

root=tk.Tk()
root.geometry(“300×200”)

EditBox1= tk.Entry(width=4)
EditBox1.place(x = 250, y

元記事を表示

Python初心者~中級者へのお勧めライブラリ紹介と、仕事にしてある程度稼ぐための話

## この記事が向いている人
・大前提:IT業界に興味がある、仕事にしたい。
・プログラムやりたいけど、言語何にしたら良いかわからない。
・IT業界未経験で、やりたいけど入口がわからない(20代半ばとか、後半以上)。
・大学で情報処理関係じゃなかったので自信が持てない。
・Python初心者~中級くらいが対象。上級者は回れ右。

## 書いてない事
・Pythonの基本操作
・具体的なコードとか技術的な話
を求めてる人たちも回れ右。

## この記事を書いている人
・30歳になって初めてプログラムを触る
・33歳でプログラムの仕事に就く(派遣)
・現在、自営でITエンジニア(Pythonメイン)
スクールは一切行ったこと無しで、(情報処理どころか)大学も行ったこと無し。
エンジニアとして仕事をし始めてから「エンジニア35歳説」とか「20代後半で未経験は厳しい」等の記事、動画を見かけてびっくりw 他の人はそんなに苦労をしていたのかと…。
なので、未経験者や初心者で迷子になりかけてる人の参考になればと思って書いてます。

## Pythonを推す理由
率直に、勢いが強くて将来性が高いから。

元記事を表示

6歳娘「ねぇ、パパ!このテストコード、Given-When-Then構文で可読性、高めてみない?」

# とある休日

娘「ねぇ、パパ!」

ワイ「なんや、娘ちゃん」

娘「さっきね」
娘「ちょっとだけ伸びしろのあるテストコードを拾ったの」

ワイ「おお、そうなんか」
ワイ「ちょっとみせてみ」

娘「うん!」

“`python:test_task.py
class TestNextStatus(TestCase):

def test_ステータスがResolveの状態でステータスを進めるとCloseになる(self) -> None:
task = Task.create(“Qiitaに記事を投稿する”)

task.next_status()
task.next_status()
task.next_status()
task.next_status()

self.assertEqual(Status.Close, task.status)
“`

娘「↑これがそのテストコードだよ」

ワイ「ん?娘ちゃん」
ワイ「とくに問題があるようには見えんのやけど?」
ワイ「(てかこれ

元記事を表示

GitHub ActionsとCodecovでテスト・カバレッジ計測を自動化、README.mdに結果をバッジ表示する。

# 目的

– Pythonの各バージョンごとのテストを自動化する。
– カバレッジを計測できるようにする。
– テスト結果、カバレッジ計測結果をリポジトリのREADME.mdでバッジ表示し可視化する。

# 背景

OSS開発に向けた勉強の一環でPythonのライブラリを開発したが、サポートバージョンのテストを全て手動で回すのは現実的ではないため、CI等を導入しテスト、カバレッジ計測の自動化を検討していた。

調べた際、テスト実行等のworkflowを定義できる`GitHub Actions`、テスト時に計測したカバレッジを受け取り可視化する`Codecov`というサービスを見つけた。

# GitHub Actionsとは

GitHubが提供する`CI/CDサービス`です。
様々なworkflowをGitHub内のイベントに応じて実行できます。
実行されるworkflowは様々なものが用意されており、自身で1から作ることもできますが、既存のworkflowを利用、改良することも可能です。

https://ja.wikipedia.org/wiki/GitHub_Actions

元記事を表示

statsmodelsのseasonal_decomposeを活用した時系列データの可視化

# 1.時系列分析とは?
時系列分析とは、周期的なデータがありそうなデータに対して
未来の売り上げなどを予測する分析手法になります。

時系列分析に用いるライブラリの一つとして『statsmodel』というものがあり、とても便利なものになります。

今回はデータを可視化しながら解説します。

## 2.使用するデータセット

今回利用する時系列データのデータセットは、Airline Passengers(飛行機乗客数)は、Box and Jenkins (1976) の有名な時系列データです。サンプルデータとして、よく利用されます。

## 3.ライブラリの読み込み

“`python
# ライブラリーの読み込み
import pandas as pd
import numpy as np
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
import matplotlib.pyplot as plt

元記事を表示

混合密度ネットワーク(Tensorflow2.0)

混合密度ネットワーク(Mixture Density Networks; MDN)を実装する必要があったので、チュートリアル?っぽいのを実装してみました。

参考
・[Mixture Density Networks with TensorFlow](https://blog.otoro.net/2015/11/24/mixture-density-networks-with-tensorflow/)
・[Mixture Density Networks](https://mikedusenberry.com/mixture-density-networks)
・[PRML第5章 混合密度ネットワーク Python実装 | Qiita](https://qiita.com/ctgk/items/19c4a4f205b855cf6a05)

# import

以下はimport済みとします。

“` python
import math
import random

import matplotlib.pyplot as plt
import numpy as np
import

元記事を表示

円をドルに変換するコード

# 円をドルに変換するコード
“`
import tkinter as tk

def dispLabel():
a = int(EditBox1.get())
b = int(EditBox2.get())
A1=a//b
A2=(a-b*A1)*10
str_A1=str(A1)
str_A2=str(A2)

lbl3.configure(text=”ドルに換算すると”+str_A1+”ドルと”+str_A2+”セントです。”)

root=tk.Tk()
root.geometry(“400×400″)

EditBox1= tk.Entry(width=4)
EditBox1.place(x = 250, y = 20)
EditBox2= tk.Entry(width=4)
EditBox2.place(x = 250, y = 60)

btn=tk.Button(text=”計算する”,command=dispLabel).place(x = 60, y = 100)

lbl1=tk.Label(te

元記事を表示

OTHERカテゴリの最新記事