Python3関連のことを調べてみた2023年02月03日

Python3関連のことを調べてみた2023年02月03日
目次

気象データを Python でスクレイピングする方法(10分値データ)

# きっかけ

気象データを取得したいと思い気象庁のサイトにアクセスしたところ、なぜかエラーになりCSVダウンロードができませんでした。

Web上での表示は問題無くできますので、この表データをCSV化できないかを考えました。

https://www.data.jma.go.jp/gmd/risk/obsdl/index.php

# すでにやられていたこと

調べてみると、気象データのスクレイピングは様々な方がチャレンジされていました。
なかでも、こちらの記事のソースコードをそのまま実行すれば私の環境でも動きました。
非常に助かりました。

https://www.gis-py.com/entry/scraping-weather-data

ちなみに、Pythonでは、BeautifulSoupというライブラリを使うのが定石のようです。
このようなコマンドでインストールできます。

“`pip3 install beautifulsoup4“`

# 今回試したこと

前述のブログでは1時間値を取得していましたので、10分値のデータを取得できるようにコードを変更してみました

元記事を表示

Kaggleで使える技術まとめ

# はじめに
Kaggleで学んだ処理方法をメモしていきます.
みなさんからも是非色々教えて欲しいです.

# 1 共通事項
## 1.1 バギング(bootstrap aggregating)
DeepLearningの研究では,手元にあるデータは全て正解もセットであることが多いと思います.
ですが,Kaggleはtestデータの正解ラベルは公開されていませんし,testデータに対する結果で競います.手元にあるデータをTrain・Validation・testに分けるのがセオリーですが,KaggleではTrain・Validationだけに分けて,できる限り多くのデータを学習させるようにします.その中からTrain・Validationの組み合わせを変更して複数のモデルを作成します.それらのモデル全てでテストデータに対して出力を取り,多数決を取って最終的なモデルの出力とします.
![Bagging.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3120757/3dac01db-f4f4-acf2-c0

元記事を表示

【Python】競プロ用様々な入力の受け取り方まとめ

# はじめに
調べて分かったものもあれば自分で考え出したものもあります。
より短い書き方などあったら教えていただけると幸いです。
新しい入力形式があったら随時追加予定です
# 数値(整数)
## 1文字の整数
### 入力例
“`
2
“`
### 受け取り方
“`py
N = int(input())
“`
## 2文字以上の整数(別変数として受け取る)
### 入力例
“`
2 3
“`
### 受け取り方
“`py
N, M = map(int, input().split())
“`
受け取りたい値の個数に左辺の文字数を合わせる
## 配列1つ
### 入力例
“`
2 3 5
“`
### 受け取り方
“`py
A = [int(x) for x in input().split()]
# or
A = list(map(int, input().split()))
# or
A = [*map(int, input().split())]
“`
## N行2次元配列→1つの変数
### 入力例
“`
1 2 3 4
5 6 7 8
9 10 11

元記事を表示

Pythonチートシート – Tuple型の使い方一覧

仕事や学習の時に役立つちょっとしたチートシートを作ってみることにしました。今回はリスト、ディクショナリーに次いで使うタプルの使い方をまとめてみました。

## タプルについて
listと違い、tupleは読み取り専用のコレクション(イミュータブル)となっています。変更したくない値を格納して参照のみとしたい場合は、tupleを使うのが効果的です。また処理の過程でタプルにしたコレクションをリスト・ディクショナリー等に変えたい時に使います。

### タプルの内容を参照する(スライス、len)
“`python
tuple01 = (1,2,3)
print(tuple01)

# インデックス指定で参照する方法
tuple02 = (10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
print(tuple02[0])
print(tuple02[2:5])
print(tuple02[-1])
print(tuple02[-5:-1])

# 要素数を取得
print(len(tuple02))
“`
“`python
(1, 2, 3)
10
(30

元記事を表示

Kaggle Titanicタスクに挑戦?(Notebook?)

# はじめに
今回はKaggleのチュートリアル的なコンペであるTitanic-Machine Learning from Disaster へ挑戦した内容をまとめます.
Accuracy80%になると上位2%程度に入るので,そこを目指していたのですがなかなか77~78%から上がらず,結局断念しました:sob:
テーブルデータはまだまだ処理方法が色々あるんだろうなと思ってはいるので,またいい案を思いついたら再度挑戦しようと思います?

なんとNotebookでBronze?を獲得しました?(2023/02/01)
精度は別にだけど,みんなに見てもらえるコードだったみたいです.うれしい…!
本記事でも書いてますが,Kaggeleでもコード公開しているので,見てください?
[Kaggeleのページ](https://www.kaggle.com/code/shiraeharuto/titinic-dataanalyze)

# Import
まずは必要なライブラリのimportです.多っ…
ですが,これは見やすくしたり交差検証したりと色々したくてやっているので,本当に単純なモデルでよけ

元記事を表示

Python3: A4横 の PDF をマージして A3 にする

A4横 のファイルを上下に並べて A3 にします。

## プログラム

“`py:pdf_merge_landscape.py
#! /usr/bin/python
#
# pdf_merge_landscape.py
#
# Feb/01/2023
#
import sys
import PyPDF2
from PyPDF2 import Transformation
#
# ——————————————————————
def show_size_proc(page_obj_in):
print(page_obj_in.artbox.lower_left)
print(page_obj_in.artbox.lower_right)
print(page_obj_in.artbox.upper_left)
print(page_obj_in.artbox.upper_right)
# ——————————————

元記事を表示

【Python】サイコロクラスはどのように実装するのが最適か

読者のあなたならどのような実装を行うかイメージしながら読んでみてほしい。

**条件**
『サイコロを回すクラス』から利用されることを念頭に置く。
このサイコロクラスは、サイコロを渡されると、ランダムに値を選択する処理になっている。

**題**
サイコロクラスはどのように実装を拡張するのが良いか
6面,8面サイコロ…というように作成していくとする。

“`python:サイコロを回すクラスの実装例(サイコロクラスは仕様のみ定義)
import random
import abc

class Dice(abc.ABC):
“””
サイコロの仕様
“””

__slots__ = () # インスタンスの属性追加を不可にする。

@property
@abc.abstractmethod
def numbers(self) -> set:

class DiceRoller:
“””
サイコロを回す役割
ランダムに出目を選択する。
“””
def __i

元記事を表示

python3 sqlite3のデータベースに制約付きの列を追加するためにINSERT文で全データを引っ越す

# やりたいこと
いまあるデータベースに制約付きの新しい列を追加したくなったのだが、なかなか良い方法が見つからなかった。ALTER TABLEを用いれば、一応列の追加はできる。
“`
ALTER TABLE [テーブル名] ADD COLUMN [列名] [データ型];
“`
しかし、どうやら外部キー制約などはつけれないようである。いろいろ調べた結果、まっさらな新データベースを作ってそこに旧データベースのデータをINSERTすればいいんじゃね?ということで、今あるデータベースの情報をもとにINSERT文を構成して、旧データベースのデータを新データベースに引っ越す。

# テストデータベースの作成
とりあえずテスト用のデータベースを作成。parent_id列が追加したい制約付きの列である。
“` python
import sqlite3

bconn = sqlite3.connect(“test_before.db”)
bcursor = bconn.cursor()
bcursor.execute(“CREATE TABLE hoge(\

元記事を表示

Python3 キーボード入力があるまで待って、押されたキーを取得する。

Python3 で、キーボード入力があるまで待って、押されたキーを取得する。
簡単でかつよく使いそうな機能なのに、ネットを探してもなかなか見つからないので書いておきます。

何か画面出力をした後にキーボードが押されるのを待って、押されたらまた次の処理を始めたい場合とか、逐次的に、キーボード入力を見たいときってありますよね。
そういう時は、getkeyモジュールのgetkey関数を使いましょう。
しかし、あくまでこの関数は、Terminal入力を受け付けているときのみで、例えばpygameなどを使っていて、別のウィンドウがアクティブになっている時は使えません。

# インストール

“`
$ python3 -m pip install getkey
“`

# コード

“`kb.py
#!/usr/bin/python3
from getkey import getkey,keys

print(“Hit any key”)

key=getkey() # wait key until keyboard is hit and input with no echoes

if

元記事を表示

Pythonチートシート – Dict型の使い方一覧

## Pythonのディクショナリーについて¶
dict型のデータは、一意のキーと値のペアを使って管理される型です。
自然言語処理を行う際や、言語を翻訳したいときに役立ちます。

言語によってはディクショナリーはハッシュ・連想配列と呼ばれます。 dict型のデータ構造は、ハッシュ表という数値型のテーブルをキー・値と対応させるという 内部構造となっています。そのためdict型のデータはハッシュアブルな型を用いなければならりません。

Pythonではint, str, bytes, tuple, frozenset等がハッシュアブルな型となっていて、通常、dict型のキーはintかstr型とします。

### ディクショナリーの内容を参照する

“`python
d = {“apple”:”りんご”, “orange”:”みかん”, “melon”:”メロン”}

d[“apple”] = “アップル”
d[“strawberry”] = “いちご”

#setdefaultメソッドはキーが存在しない場合のみ値を設定するのに用いる
d.setdefault(“apple”,”Go

元記事を表示

Python + Tkinter – 学習時間を記録(ポモドーロ法)できるアプリ

## ポモドーロ法で学習時間を記録できるアプリ
Tkinter学習の一環でポモドーロ法で学習時間を記録できるアプリを制作しました。25分学習→5分休憩、という方法で効率よく仕事や学習を継続できるという学習法です。

![スクリーンショット 2023-01-31 093939.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/337578/7bd3e706-0130-93d9-dfa8-4259398e87a8.png)

### コード

“`python
import tkinter as tk
from tkinter import *
import math

# —————————- CONSTANTS ——————————- #

PINK = “#e2979c”
RED = “#e7305b”
GREEN = “#9bdeac”
YELLOW = “#f7f5dd”
FONT_NAME = “Courier”
WORK

元記事を表示

Python + Tkinter – マイル→キロメートルへ単位換算するアプリ

## マイル→キロメートルへ単位換算するアプリ

Tkinter学習の一環でマイル→キロメートルへ単位を換算するアプリを制作しました。

### コード

“`python
from tkinter import *
from tkinter import font

#ウィンドウのタイトル+サイズ
window = Tk()
window.title(“Mile to Kilometer”)
window.minsize(width=400, height=300)
window.config(padx=50, pady=20)

myfont = font.Font(family=’Helvetica’, size=16, weight=’bold’)
myfont_result = font.Font(family=’Helvetica’, size=24, weight=’bold’)
myfont_h1 = font.Font(family=’Helvetica’, size=28, weight=’bold’)

def miles_to_km():
miles

元記事を表示

【Python】T5でクソデカ変換を試みたけど難しかった

# 概要
[クソデカ羅生門](https://anond.hatelabo.jp/20200611125508)風の文章を生成したくなったので、T5(text-to-text transfer transformer)による変換を試しましたが、あまりうまく行きませんでした。
やったことのメモを残しておきます。

# 目的
普通の文章をクソデカ文(後述)に変換する変換器をつくることが目的です。

# 背景

[クソデカ羅生門](https://anond.hatelabo.jp/20200611125508)は『羅生門』(芥川龍之介)の語彙を過剰に強調することでおかしみを生じさせている文章です。このような表現が過剰に強調された文章を本記事ではクソデカ文と呼びます。

例えば原文「一人の下人が、羅生門の下で雨やみを待っていた。」はクソデカ文では「一人の下人が、`クソデカい`羅生門の`完全な真`下で雨やみを`気持ち悪いほどずっと`待`ちまく`っていた。」となります。

# 先行事例
[「クソデカ羅生門」的な文章を生成したかった(過去形)](https://qiita.com/gaqwest/

元記事を表示

Python for文まとめ

# 0 はじめに 

## この記事について

殆どのプログラミング言語にはfor文なるものが存在します。
for文には、その言語の熟練度と言っても過言ではない程、色々な使い方が存在するものです。

この記事ではPythonでのfor文の用法をまとめてみました。
私の知る限りの用法をまとめましたので、参考にして頂けますと幸いです。

Pythonを少しでもわかる方が対象です。

## for文とは

for文は次のような事ができます。
①ある操作を指定した回数繰り返す
②イテレータの要素を1つずつ見ていく

イテレータとは簡単に言えば「何かが集まったもの」です。
文字列や配列などがイテレータに該当します。

又、①も実は②に含まれると言うことができます。
発展的な話題なのでそれについては後述します。

# 1 基本

## 1-0 カウント変数

for文にはカウント変数というものが存在します。
カウント変数はfor文を回すごとに指定した通りに変化していきます。

`for (カウント変数) in (なんか)`という形が基本です。

## 1-1 for i in range(N)

元記事を表示

【EC2】Lambdaから時刻指定でEC2を自動起動・停止を時刻実現する

# EC2の自動起動・停止を実現したい!

https://qiita.com/YujiHamada3/items/3caccdaded527548432b

上記記事の改良版です。上記記事では自動起動・停止をhour単位でしか指定できず、一日に一度しか指定できませんでした。
それに加えて今回は
– 時刻まで指定できる(10分ごと)
– 複数時刻を指定できる
– 平日指定できる

の機能を追加しました。
今回はLambdaを何度も呼び出したくないので10分ごとにしましたが、Lambdaを毎分呼び出せば、分指定までできるようになります。

# EC2のタグの設定
![スクリーンショット 2023-01-30 16.56.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/290902/8f66b619-198e-9555-a157-2849073dde15.png)

タグはこの様に設定します。
これだと
平日16時30分に起動して16時40分に停止する。
平日16時50分に起動して17時00分に停止する

元記事を表示

pip uninstall all

pipでインストールしたものを全て消す。確認も省略しているので要注意。

“`bash
pip freeze > freeze.txt; pip uninstall -y -r freeze.txt; rm freeze.txt
“`

元記事を表示

au のガラホ(KYF36)がほぼ壊れてiPhoneに機種変更したが、電話帳のインポートはそのままでは無理だった

# 機種変更した経緯
ガラホ(au KYF36)の充電が出来なくなり、ヤバイと思い急遽 au Shop でのプラン変更で ESIM して iPhone SE2 に機種変更した。

## 機種変更前にやっとくべきだった。。
ガラホの電話帳を移行する前に切り替えてしまったので au お預かりサービス等使用できずにスムーズに出来なかった。

## 元端末の電話帳エクスポート
色々な充電ケーブル挿したがすべて反応せずでしたが、ケーブル挿す場所に「フッ!!」って息を吹いたら充電できるようになった。
(ってかこれで充電できなかったら電池足りなくて終わってました。。。。。。

サポートツール(安心安全なんちゃら)を使用して電話帳データをSDカードにエクスポートしました。

## データフォーマット
vCard を想定していたのですが、 json でした。。。。
部分抜粋です。
(グループは無視してます)

“`sample.json
[
{
“accountName”: “Contacts”,
“accountType”: “jp.kyocera.localcontacts”,

元記事を表示

pygameにおける動画再生方法(既存のウィンドウを使用する場合)

# 目次

[1. はじめに](#1-はじめに)
[2. モジュールのダウンロード](#2-モジュールのダウンロード)
[3. サンプルプログラムの準備](#3-サンプルプログラムの準備)
[4. 動画再生コードの追加](#4-動画再生コードの追加)
[5. おわりに](#5-おわりに)

# 1. はじめに
pygameにおいて動画を再生する方法を記載します。
劇中ムービーのように新規ウィンドウを開かずに既存のウィンドウで動画を再生することを想定しています。
pygameにはpygame.movieというモジュールがあり、動画と音を同期して流せますが、Windows環境では動作しません。

[pygame.movie](http://westplain.sakuraweb.com/translate/pygame/Movie.cgi)

このモジュールを用いないで動画を再生するには動画と音を別々で再生する必要があります。
音と別々の再生になるため、pygameにおいて動画再生はあまり向いていませんが自分なりにコードができたので公開します。
修正点等あればご指摘いただきたいです。

#

元記事を表示

pythonでプロット用のデータを事前計算してバイナリでファイル出力しておく&読み込んでプロットする

# アイデア

プロット用のデータを毎回計算すると時間がかかりすぎるため、事前計算しておきたい。
そこで、バイナリファイルに書き出すようにしてみた。

– 複素数関数の、引数の実部と虚部をそれぞれ等差的に変化させたときの格子点に対しての、関数の値の実部と虚部をdouble型で格納。
– 複数の関数を組み合わせて追加計算したい場合を想定して、複数の関数を同じファイルに格納。

“`text:データ構造のメモ書き
ascii4 “PLOT”
uint2 format version info
uint2 number of functions
uint4 stepcount of x(real part) of numpy.linspace(,,*)
uint4 stepcount of y(imag part)
ascii128 description of func[0]
ascii128 description of func[1]
:
ascii128 description of func[n-1]
double start x of numpy.linspace(*

元記事を表示

[pandas]辞書<->pd.DataFrame変換をていねいに書いた@値の区切り文字処理

# 要約
区切り文字を抜いて全紐づけパターンを出力する処理を書いた!動いた!
とは言え、辞書型変換を雑スクラッチしてしまった感が強く残った。
その後にもっと良いやり方(諸説あり)を知ったので修正。

学びの備忘録として残す。
一応公開しています。
https://github.com/gmoriki/rm_delimiter

# 実装の背景
Scivalから提供されるExcelデータに区切り文字が使用されていることが多い。
例えば一つの論文に紐づく著者3名の固有IDが、以下のような形式の値で格納されている。

例:`”10000 | 20000 | 300000″`

この状態で固有IDと別の情報をマージすることは困難であり、部署内の利用者はうまいこと区切り文字を処理してきた。今後同じような事態(車輪の再生産)を避けるために、今回は区切り文字を排除した上でExcelデータに再出力する、比較的汎用的なプログラムをPythonで書こう、と思い至った。

### 読み込みテーブル
`key`,`target`という列名を含むExcelデータを用意する。
| key | target

元記事を表示

OTHERカテゴリの最新記事