- 1. PythonでLINEの履歴を検索する
- 2. mergeで結合したDataFrameの行の順番が変だと慌てたけれど単純なミスだったという話
- 3. Yahoo!の雨雲レーダー情報をPythonで取得する
- 4. pythonを昨日から学び始めた。
- 5. seleniumでHTML要素を指定する方法
- 6. SQLAlchemyでBigQueryのクエリーを実行する方法
- 7. GPTsでドキュメント生成ツールを作成しました。
- 8. 【2Dプログラミング】「上下左右」の4通りの処理の重複をなくすリファクタリング案
- 9. ネストされたforループの可読性を向上させるリファクタリング案
- 10. Python【超基本】
- 11. [Selenium(python)]Edgeでスクレイピングする時のテンプレートmemo
- 12. Pythonで開発したAppを遷移する方法
- 13. cv2.VideoWriterでH264 codecを使う。
- 14. ChatGPTとPythonで学ぶ Isomap
- 15. NumPyで線分の交差判定がしたい!
- 16. 学習レポート: 深層学習(Day 3)
- 17. gnuplotからPythonのライブラリ関数を呼び出してゼータ関数を描画してみた(Windows環境)
- 18. 【Python】デフォルト引数を使うときは、引数の順序と可変オブジェクトに注意
- 19. 500KB以上の写真にリサイズするツール
- 20. Pandas:2つのCSVファイルを結合する方法
PythonでLINEの履歴を検索する
## 概要
Pythonを用いて,LINEアプリから出力できる`.txt`形式の履歴を検索するプログラムを作成しました.日付による検索,キーワードによる検索,を実装しました.iOS17.1.1で,日本語のLINEの履歴を想定しています.実装の解説を書きます.## はじめに
LINEの履歴が消えてしまった際に,相手に`.txt`を送ってもらえば,過去の会話を見ることができます.しかし,その履歴が長い場合に,手動で検索するのは大変です.そこで,Pythonを用いて,履歴を検索するプログラムを作成しました.## 実装前の準備
### Pythonの確認“`zsh
% python3 –version
Python 3.11.6
“`### 履歴ファイルの形式の確認
まず,LINEアプリから出力できる`.txt`形式の履歴を確認します.LINEアプリの「設定」→「トーク履歴」→「トーク履歴を送信」→「テキストファイル」で,トーク履歴を出力できます.“`txt
[LINE] グループ名のトーク履歴
保存日時:2023/02/13 00:002022/03/15(火
mergeで結合したDataFrameの行の順番が変だと慌てたけれど単純なミスだったという話
# 結論
pandas.merge()の引数の順番に気を付けましょう!!# もっと詳しく
pandasのmergeは引数として書かれるDataFrameの順番によって、結合後のDataFrameの順番が変わります。
「先に書いた方(left)のDataFrameを基準」に、後に書いたもの(right)が共通項をもとに順番が入れ替わってくっつくためです。
![df_merge.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3629447/95b8b43c-429f-af43-bfa5-b141281ddc96.png)この仕様、言われてみれば「そりゃそうじゃ」という話ですがお恥ずかしながらわたくし、一度やらかしかけました。
pandas.merge()の公式ドキュメントはこちら:
https://pandas.pydata.org/docs/reference/api/pandas.merge.html## 具体例
以下のような2つのDataFrameがあるとします。
“`python
Yahoo!の雨雲レーダー情報をPythonで取得する
# 概要
本記事では,Yahoo!の雨雲レーダー情報をAPIを通して自動取得する方法について解説します.↓これを数値の状態で取得したい↓
# Yahoo!の気象情報APIを使う
Yahoo!ではいくつかのAPIを提供しており,2023年11月現在で– Yahoo!ショッピングAPI
– Yahoo! Open Local Platform(YOLP)
– テキスト解析Web API
– 求人API
– 深層学習を用いた自然言語処理モデルのAPI
– Yahoo!ニュースでの不適切コメントへの対策に使用されているAIがあります.
今回は「Yahoo! Open Local Platform(YOLP)」の中の「気象情報API」を利用して雨雲レーダーを取得してみます.
#
pythonを昨日から学び始めた。
昨日から、pythonを侍テラコヤと言うサイトで学んでいる。
毎日、学習に1時間、コードの写経に1時間、計2時間勉強するようにしている。
コードを写経すると、だいぶ覚えられるので良い。
この調子で学んでいけたら、と思っている。
seleniumでHTML要素を指定する方法
# ID指定
“`
driver.find_element_by_id(“exampleId”)
“`# Class指定
“`
driver.find_element_by_class_name(“exampleClass”)
“`# タグの指定
タグ名で要素を指定(例:`
`, ``など)。“`
driver.find_element_by_tag_name(“div”)
“`# name属性で指定
name属性を持つ要素を指定する方法。“`
driver.find_element_by_name(“exampleName”)
“`# CSSのセレクターで指定
CSSで使うセレクタを使用して、要素を特定。“`
driver.find_element_by_css_selector(“input[type=’text’]”)
“`# aタグのアンカーテキストで指定
たとえば、`詳しくはこちら`のようなリンクがあった場合、以下のように指定できる。
“`
driver.find_eleSQLAlchemyでBigQueryのクエリーを実行する方法
# 概要
SQL文を書かずにSQLAlchemyでBigQueryのクエリーを実行する方法を書きました!
基本的にSQLを書きたい場合はこちらの[BigQuery用のPythonクライアント](https://cloud.google.com/python/docs/reference/bigquery/latest)をみてください。詳細は公式ドキュメントへ!
https://github.com/googleapis/python-bigquery-sqlalchemy
BigQueryの基本的な知識こちらへ!
https://cloud.google.com/blog/topics/developers-practitioners/bigquery-explained-querying-your-data
## インストール
ライブラリーをインストール
“`bash
pip install sqlalchemy-bigquery
“`## コネクションを接続
以下のようにコネクションは作れる
“`python
from sqlalchemy impGPTsでドキュメント生成ツールを作成しました。
# GPTsでドキュメント生成ツールの作成
GPTsでプロンプトにコードを貼り付けるだけで関数のドキュメントや1行1行に処理の説明を入れてくれる「**Coding Documentation GPT**」を作成しました。使ってみてください。
使用した後に意見をいただけると幸いです。https://chat.openai.com/g/g-6V7SNo6F2-coding-documentation-gpt
—
## 使い方
ドキュメントや生成したいコードを貼り付けるだけです。
下記みたいに雑にプロンプト投げてもらって大丈夫です笑プロンプト例
“`text
User
import os
import tweepydef tweet(consumer_key, consumer_secret, access_token, access_secret):
#オブジェクト作成
client = tweepy.Client(
consumer_key = CONSUMER_KEY,
consumer_secret = CONSUMER_【2Dプログラミング】「上下左右」の4通りの処理の重複をなくすリファクタリング案
:::note
`Python`を用いて書いていますが、どの言語にも通底するお話をします。
:::## はじめに
2Dゲームなど、二次元座標を用いてプログラミングするとき、「上下左右」で4回同じようなコードを書いていませんか?例は何でもいいですが、たとえばこのようなコード。
“`python:冗長.py
map = True/Falseの二次配列。Trueなら壁があることを表す。#自分から見てdirectionの方向にある壁を探す
def see_wall(position:tuple[int, int], direction):
if direction == “up”:
#自分から上側へ
for y in range(position.y, -1, -1):
if map[position.x][y]:
return (position.x, y)if direction == “down”:
#自分から下側へ
for y inネストされたforループの可読性を向上させるリファクタリング案
## はじめに
:::note
`Python`を用いて解説しますが、どの言語にも通底するお話を書きます
:::`for`ネスト、無くしたいですよね。
コードレビューやCodeClimateでよく「可読性が低い」として改善を求められますね。
しかし、直せと言われたって、直すアイデアはすぐには出てこない。
そこで、汎用性のあるリファクタリングアイデアを2つ持ってきましたのでご覧ください## そもそもなんで`for`ネストは読みにくいの?
持論ですが、恐らく`for`のネスト自体は悪くないんですよ。例えば$1000 \times 1000 \times 1000$の立方体空間内のRGB値の合計を求めるスクリプトを、あえてネストして書くと
“`python:rgb_sum.py
for x in range(1001):
for y in range(1001):
for z in range(1001):
r, g, b += get_rgb(x, y, z)
“`
反発が出そうなのであえて「読みやすい」とは言いませんが、しかし言うほど読みにくPython【超基本】
# Pythonの特徴
Pythonは他の言語に比べて、記述量が少ないのが特徴。
以下は、JavaScriptとPythonの記述の比較。JavaScriptの場合
~~~JavaScript
let age = 18; // 年齢if( age < 20 ) { // 未成年の場合 console.log("ジュースで乾杯!"); } else { // 成年の場合 console.log("お酒で乾杯!"); } ~~~ Pythonの場合 ~~~Python age = 18 # 年齢 if age < 20: # 未成年の場合 print("ジュースで乾杯!") else: # 成年の場合 print("お酒で乾杯!") ~~~ どちらも実行結果は、 ~~~ ジュースで乾杯! ~~~ となる。 # Pythonの書き方 Pythonの基本的なルールは以下。 - 文の最後にセミコロン(;)は不要 - 中かっこ{}で囲わず、インデントする - コメントにはシャープ(#)、複数行コメントはシングルクォーテー
[Selenium(python)]Edgeでスクレイピングする時のテンプレートmemo
# 環境
“`
Python 3.10.11
“`“`
selenium==4.4.3
webdriver-manager==4.0.1
“`
2023年11月30日時点# コード
“`python:main.py
from selenium import webdriver
from webdriver_manager.microsoft import EdgeChromiumDriverManager
from selenium.webdriver.edge.service import Service# Options
options = webdriver.EdgeOptions()
options.add_argument(‘–disable-extensions’)
options.add_argument(‘–disable-gpu’)
options.add_argument(‘–no-sandbox’)
options.add_argument(‘–disable-dev-shm-usage’)
options.add_argument(Pythonで開発したAppを遷移する方法
:::note info
自分勉強のメモ、ご参考まで
:::## 本文
**(1) インストール済みパッケージより、requirements.txtファイルを作成**
“`bat
#requirements.txtを作成
pip freeze > requirements.txt
“`**(2) 必要なパッケージをダウンロード**
“`bat
#プロキシ設定
set HTTP_PROXY=http://proxy.xxxxxxxx.co.jp:8080
set HTTPS_PROXY=http://proxy.xxxxxxxx.co.jp:8080#requirements.txtにより、パッケージをダウンロード
pip download -d ./packages -r requirements.txt
“`**(3) パッケージを移動先PCにコピーし、下記のようにインストール**
“`bat
pip install –no-index –find-links=./packages -r requirements.txt
“`## 注意事
cv2.VideoWriterでH264 codecを使う。
# mp4vはブラウザで再生できない。
cv2.VideoWriterを使って動画を書き込む際、codecにmp4vを使うと、書き込んだ動画をブラウザで再生できない🥺
“`python
cv2.VideoWriter_fourcc(*’mp4v’) # ブラウザで再生できないファイルになる
“`ブラウザで再生できる**h264** codecを採用する必要があるです。
# pip で入れたOpenCVではh264が使えない。
ということで、H264を使いたいですが、以下のようにH264を設定すると、pip install したOpenCVではH264を使えないので、書き込めない🥺🥺
“`
cv2.VideoWriter_fourcc(*’avc1′) # h264設定のavc1は書き込めない
“`# 解決方法
なので、pipではなく、以下の方法でOpenCVを入れます。
“`shell
pip uninstall opencv-python
sudo apt install build-essential cmake git python3-dev pyChatGPTとPythonで学ぶ Isomap
皆さんこんにちは。今日も引き続きChatGPT先生をお迎えして、「ChatGPTとPythonで学ぶ Isomap」というテーマで雑談したいと思います。それではChatGPT先生、よろしくお願いします。
—
### **assistant**:
はじめまして、私はChatGPTです。心むすぶつこのテーマについてお手伝いさせていただきます。
Isomapとは、主に高次元データの次元削減を行うためのアルゴリズムであり、特に非線形次元削減に特化した手法です。具体的には、Isomapはデータ間の地理的距離(geodesic distances)を用いて、高次元データを低次元空間に埋め込むことを行います。
つまり、Isomapは、データが非線形に分布しているときでも、その内在する構造を維持するような低次元表現を見つけ出すことができます。
Pythonの機械学習ライブラリであるScikit-learnには、このIsomapアルゴリズムを実装したモジュールが用意されていますので、それを利用して具体的なデータセットに対してIsomapを適用する例を見てみましょう。
まずは必要なラ
NumPyで線分の交差判定がしたい!
# はじめに
たくさんいる線分ちゃんたちがXXXしているのか知りたいんです!!!
…そんなわけで線分の交差判定をやります。
# 結論
できた!!!
“`py
import numpy as np
def is_line_intersection(lines1, lines2):
a, b = lines1[:, 0, :], lines1[:, 1, :]
c, d = lines2[:, 0, :], lines2[:, 1, :]a = a[:, None, :]
b = b[:, None, :]
c = c[None, :, :]
d = d[None, :, :]return (
(np.cross(a – b, a – c) * np.cross(a – b, a – d) < 0) & (np.cross(c - d, c - a) * np.cross(c - d, c - b) < 0) ) ``` さすがChatGPT先生!! # 経緯 線分学習レポート: 深層学習(Day 3)
# 再帰型ニューラルネットワーク(RNN, Recurrent NN)
## 再帰型ニューラルネットワークの概念
– 時系列データに対応可能なニューラルネットワーク
– 時系列データとは、時間的順序を追って一定間隔ごとに観察され、しかも相互に統計的依存関係が認められるようなデータの系列
– 例えば、音声データ、株価データやテキストデータ
– テキストデータは単語が前の単語とつながっていると考える
– 入力層〜中間層〜出力層というニューラルネットワークの基本構造は変わらないが、中間層同士に時間的なつながり(数珠つながり)を持つ
– 時系列モデルを扱うには、初期の状態と過去の時間t-1の状態を保持し、そこから次の時間でのtを再帰的に求める再帰構造が必要となる
– 中間層の出力を次の時点の中間層の入力として活用する
– エルマンネットワーク
– 出力層を戻すジョーダンネットワークというものも存在する
– 入力$ x_n $と前の時点の中間層 $ z_{n-1} $から、新しい中間gnuplotからPythonのライブラリ関数を呼び出してゼータ関数を描画してみた(Windows環境)
C++で作成したdllを介してPythonのライブラリ関数を呼び出す。
# 最終結果
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/438183/2f760109-b418-79be-6625-6c7e7135aae2.png)
# c++ソース
とりあえず下記でいけた。解放処理とか明示的に実装してないけどGCされるんだろうか・・・
“`cpp:gnuplot_my_dll.cpp
extern “C”{
#include “./gnuplot_plugin.h”
}
#includestatic PyObject *pMpmath;
static PyObject *pZeta;
static PyObject *pArgs;
static int init_flag = 0;static struct value calc_core(int nargs, struct value *arg, void *p)
{
double s_【Python】デフォルト引数を使うときは、引数の順序と可変オブジェクトに注意
# 概要
Pythonでデフォルト引数を使ってみたので紹介。デフォルト引数では、関数を呼び出す際に引数が提供されなかった場合に、デフォルトで使える値が設定できます。
要は、「オプションのパラメーター」になる、ということです。サンプルコードでみてみるのが早いと思うので実際に以下のように実行しました。
## サンプルコード
“`py
def add_and_display_list_items(items_list, new_item=”apple”):
items_list.append(new_item)
print(“My Fruit List:”, items_list)my_list = []
add_and_display_list_items(my_list)
add_and_display_list_items(my_list, “banana”)
add_and_display_list_items(my_list, “lemon”)# 出力
# My Fruit List: [‘apple’]
# My Fruit List: [‘500KB以上の写真にリサイズするツール
「500KB以上の写真を送ってください」と言われたけど、そもそもスマホで撮影した元画像が500KB未満で困っているという謎の話を聞いて即席で画像サイズを(無駄に)大きくするツールを作りました。
**※画質が向上するわけではありません。**
## 使い方
下記URLからブラウザーで利用できます。
https://over500kb.streamlit.app/
※URLをover500kbに変更しました(23/11/30)
画像をアップロードすると、quality=100で保存しそれでも足りない場合は、20%づづリサイズしていきファイルサイズが500KBを超えたところで確定します。
ボタンをクリックするとJPEG画像がダウンロードされます。
プレビューとしてPNG画像が表示されています。画像長押しで保存できます。PNGは非圧縮なので確実に500KBより大きくなっています。
[Streamlit Community Cloud](https://streamlit.io/cloud) 環境で動いているのとtempfileを使って適時開放しているので画像ファイルは誰も見れま
Pandas:2つのCSVファイルを結合する方法
皆様こんにちは。
今回はPython学習の一環として、Pandasを用いて2つのCSVファイルを結合する方法を学んだので、記事にしようと思います。
環境は「Google Colaboratory」を使用しますが、こちらの使用方法については前回の記事にリンク等を乗せておりますので、そちらも是非ご覧ください。前回の記事:[Pandas:インデックス無しでCSVファイルを出力する方法](https://qiita.com/ikue-san/items/affb4a2dc9cd83a7f61c “Pandas:インデックス無しでCSVファイルを出力する方法”)
# merge()メソッドを使って結合する
今回は以下のような2つのCSVファイルを用意しました。クラス名簿2.csv
![スクリーンショット 2023-11-26 140648.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2150221/2b1f0fb5-5262-77bb-9e6a-1ac27467dcda.png)出身中学校.csv
関連する記事
OTHERカテゴリの最新記事
-
- 2024.09.19
JavaScript関連のことを調べてみた
-
- 2024.09.19
JAVA関連のことを調べてみた
-
- 2024.09.19
iOS関連のことを調べてみた
-
- 2024.09.19
Rails関連のことを調べてみた
-
- 2024.09.19
Lambda関連のことを調べてみた
-
- 2024.09.19
Python関連のことを調べてみた