Python3関連のことを調べてみた

Python3関連のことを調べてみた

python備忘録~DataFrameのindexについて~

 先ほどpythonで開発をしている最中にDataFrameの時系列データの時間列をエポック秒に変換する際に、非常に苦労したので僕の試行錯誤の結果が似たような状況のどなたかの役に立てばと思い備忘録として書いていきたいと思います。

# 過程
 現在FX関連のとあるツールを自作しているのですが、APIから取得したレートの情報の時系列DataFrameについて時間に関しても整数値で扱えた方が何かと都合がいいと思い、Datetimeをエポック秒に変換し始めました。
 最初はindexの情報が書き換えられないことを知らず、
“`python
#tickは一定期間のOHLCの価格などが入っているDataFrame形式の多次元リスト
tick[“Datetime”] = pd.to_datetime(tick[“Datetime”]).apply(lambda x: x.timestamp())
“`

 この方法で直接indexを置き換えてやろうと思ったのですが、結果は失敗で以下のエラーが出てきました。
“`
KeyError: ‘Datetime’
“`
 次に、indexの内

元記事を表示

Python マルチプロセステスト

“`sqlite3_multi_process.py
import concurrent.futures
import datetime
import traceback
import dataset

CONTITIONS = [
{‘db’: ‘1’, ‘min’: ‘1’, ‘max’: ‘1000000’},
{‘db’: ‘2’, ‘min’: ‘1000001’, ‘max’: ‘1500000’},
{‘db’: ‘3’, ‘min’: ‘1500001’, ‘max’: ‘3000000’},
{‘db’: ‘4’, ‘min’: ‘3000001’, ‘max’: ‘4000000’},
{‘db’: ‘5’, ‘min’: ‘4000001’, ‘max’: ‘5000000’}
]
ARGS = len(CONTITIONS)

def find_by_condition(conds, arg):
”’
データベースからリストを取得する。
”’
DB_PATH = ‘/Users/fu

元記事を表示

pythonでboolean型はあるのか調査

# 背景
pandasのデータフレームでflagを0、1で記載していたがC++の時の様にboolean型があるのか気になった。

# 調査結果
bool型は存在し利用可能。

## chat gptによるそれぞれの利点
### 0と1で記載する場合の利点
– 互換性:他のシステムやフォーマット(例えば、CやC++)と互換性がある場合、0と1を使用することが一般的です。
– 計算:0と1を直接使用することで、計算や集計がしやすくなる場合があります(例えば、合計を取るときなど)。
### bool型を使う場合の利点
– 可読性:TrueとFalseは、人間にとって直感的で理解しやすいです。データの意味が明確になります。
– エラー防止:0と1だけでなく、他の整数が誤ってデータに含まれてしまうリスクを減らせます。bool型はTrueかFalseの2値しか取り得ないため、データの一貫性が保たれます。
– メモリ効率:bool型は通常1ビットで表現されるため、メモリ使用量が減る可能性があります(ただし、実際の実装によって異なることもあります)。

# 記載例
~~~python3
impo

元記事を表示

【Python】Ruff を使って Python らしいコードを学ぼう【初心者】

# はじめに

ナイトウ([@engineer_naito](https://twitter.com/engineer_naito))と申します。

最近 ChatGPT に頼りっぱなしです。
手でコードが書けないことに気づきました。

一番経験のある言語が Python だったので、Python を自分の手で書けるように勉強をしています。
勉強には競技プログラミングでお馴染みの AtCoder の過去問を選びました。
Novisteps という非公式の過去問学習記録サイトを併せて利用しています。
https://atcoder-novisteps.vercel.app/

AtCoder ではブラウザ上にエディタがあるのでそれを利用することもできますが、慣れている VS Code を使います。
linter や formatter などの静的解析ツールなしでのコーディングが辛かったので今回は Ruff も使います。

この Ruff が Python 学習に非常に効果的だと感じのでその理由を書きます。
まずは Ruff について。

# Ruff とは

公式ドキュメント
https

元記事を表示

python import 自作モジュール 相対パスの不可解

my_package/
├── __init__.py
├── mod.py
├── sub_package
├── __init__.py
└── sub_mod.py

sub_modからmodを呼び出す

sub_mod.py
from .. import mod

sub_mod.pyを単体で動かすとエラーになる事がある

対策
root dirに移動してパッケージで実行(my_packageの上に移動)
python -m my_package.sub_package.sub_mod

または、PYTHONPATHを設定 $env:PYTHONPATH=”C:\user\xxx\my_package”
sub_mod.py
import mod

とする。

元記事を表示

【Houdini】Script Solverで色々やる

# 0. はじめに
HoudiniのScript Solver DOPについて調べたので、備忘録がてらまとめます.
質問や内容に関する指摘がありましたら、遠慮なくコメントとかください.

### 0-1. 動作環境
Red Hat Enterprise Linux 9.2
Houdini Education Edition Version 20.0 Build 547 Py39

### 0-2. 免責
この記事をもとに被った不利益について私は一切責任を負いません.

# 1. Script Solverとは?

SideFXの[公式ドキュメント](https://www.sidefx.com/ja/docs/houdini/nodes/dop/scriptsolver.html)によると

>Script Solver DOPは、接続されたオブジェクトに対してSolveステップとしてHScriptコマンドを実行します。 通常では、このコマンドは、外部スクリプトファイルをソースとします。 このスクリプトは、どのHScriptコマンドも実行することができ、さらには、いくつかのコマン

元記事を表示

PostgreSQL: Python で Upsert

こちらの SQL を python で実装しました。
[PostgreSQL: Upsert](https://qiita.com/ekzemplaro/items/0da59b50cb4ac9db007a)

## プログラム

“`py:postgre_upsert.py
#! /usr/bin/python
#
# postgre_upsert.py
#
# Jul/17/2024
#
# ——————————————————–
import sys
import os
import psycopg2
from dotenv import load_dotenv
#
#
# ——————————————————–
def sql_upsert_string_gen_proc ():
insert_sql = ”’
INSERT INTO cities (id, name, population, date_mod)
V

元記事を表示

UUID と Base32

## UUID と Base32

### UUID
– 128ビットの一意な数値
– 文字列では `540d79a1-0d3f-4973-b340-1d4923033768` のような16進数 36文字で表現

### Base32
– 32を底とする(1つの文字で 0~31 を表す)
– 5ビットを1文字で表現できる
– 実際には、40ビット単位を8文字に変換する
– 使用するASCII文字により、Base32 と Base32hex がある

[Base32](https://datatracker.ietf.org/doc/html/rfc4648#section-6) で用いる文字一覧
“`
Table 3: The Base 32 Alphabet

Value Encoding Value Encoding Value Encoding Value Encoding
0 A 9 J 18 S 27 3
1 B

元記事を表示

en_core_web_smが見つからない場合

## 問題
spacyを使ったpythonファイルをコマンドライン実行しようとしたところ、下記のエラーコードが発生した。
“`python
OSError: [E050] Can’t find model ‘en_core_web_sm’. It doesn’t seem to be a Python package or a valid path to a data directory.
“`

## 解決
とりあえずエラーコードで調べたところ、下記コードを実行すればen_core_web_smがダウンロードされ、うまくいくらしい
“`
python -m spacy download en_core_web_sm
“`
(参考:https://github.com/explosion/spaCy/discussions/10895)

初心者ゆえにどのような原因で上記エラーが発生したかまで特定することは叶わなかったので、詳細の説明は有識者にゆだねたいと思う。

元記事を表示

ガード節とは何か、綺麗なコードを書くために。

## コードを綺麗にする
コードを綺麗にする(可読性を上げる)事によって、未来の自分を助けることになります。

## ガード節
ガード節とは、メソッド(関数)のはじめに例外などを処理することです。
+ **悪い例**
ネストが3段もあり、ifとelseが多く、とても読みづらいです。
“`python
def is_hoge_check(age, state, time):
if(age >= 20):
if(state == “active”):
if(time >= 10):
return True
else:
return False
else:
return False
else:
return False
“`

+ **良い例**
悪い例とは違い、ネストが1段でelseが無く見やすくなりました。
“`

元記事を表示

TypeScriptばかりの人が、初めてPythonを触った感想

## Pythonってキm

普段TypeScriptばかりの人が、初めてPythonを触った感想。
本気で全くけなす意図はないです。ネタです。
でも、そういうのが嫌な人はやめておきましょう。

それと、本気で初めてPythonを触ったので、単に間違っていてもっとちゃんとした書き方すればいいんだよ、
とかあるかと思います、その辺も含めてファーストインプレッションがこんな感じだったということでお願いします。

Python3の話です、それ以前との違いはよく分かっていませんが。

## インデントがブロック

うん、いやね、普段TypeScriptでもインデント入れてるから変わらないといえば変わらないけど。
特にブロックの終わりのところで何となくムズムズする、いやそれだけなんですが。

## \_\_init\_\_ ってなんじゃ?

“`python
class Hoge
def __init__ (self)
honyarara

“`

\_\_ を定義しやがったぞ!?

まあTypeScript(JavaScript)でもダブルアンダースコア自体は一

元記事を表示

Googleによる生成AIモデル「Gemma 2」をMacBook(M2)で動かしてみた

[Supership](https://supership.jp/)の名畑です。2024年夏アニメが始まりましたが[異世界スーサイド・スクワッド](https://suicidesquad-isekai.com/ja/)がエンタメに徹していて見ていて楽しい。ハーレイ・クインはやっぱり最強。

## はじめに

Googleによる生成AIモデル[Gemma](https://blog.google/technology/developers/gemma-open-models/)の後継である[Gemma 2](https://blog.google/technology/developers/google-gemma-2/)が先日リリースされました。

>  2月に発表した「Gemma」は20億パラメータと70億パラメータの2サイズでの展開だったが、Gemma 2は90億パラメータと270億パラメータの2サイズ。
> 270億パラメータ版は、「そのサイズクラスで最高の性能を発揮し、2倍以上の規模のモデルに匹敵する性能を実現」するという。90億パラメータ版でも、[米Metaの「Llama

元記事を表示

Pythonで小数をいい感じに取り扱うために

# はじめに
浮動小数点数の計算は、微妙な誤差が生じることがあります。
これはPythonというかCPUの性質に起因するものです。

この記事ではPythonでいい感じに取り扱うための方法を書いていきます。

# Pythonでの挙動とその誤差
Pythonで以下のようなコードを実行します。

“`python
a = 0.33
b = 10

print(a * b)
“`

0.33に10を掛けるだけの単純なものです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3283241/9bb1326a-16ae-80b1-9de5-c35ef309231b.png)

実行するとこんな感じ。
ごく僅かですが、誤差がありますよね。

これは当然の話で、現代のCPUにおいては精度に関する微小な誤差が生じてしまいます。

これは、コンピュータが有限の精度で実数を表現するために起こります。
(IEEE 754規格では2**53以上の整数値を表現できないため)

Pythonの場合も同様で

元記事を表示

Pandas: テキストファイルを csv に変換

## 仕様

コラム名、データとなっている次のようなテキストファイルを csv に変換する方法

入力ファイル

“`text:in01.txt
市区町村コード 131016
宛名番号 12345678912
個人履歴番号 1
個人履歴番号_枝番号 1
最新フラグ 1
改製番号 1
世帯番号 234567890123456
“`

出力ファイル

“`text:out01.csv
“市区町村コード”,”宛名番号”,”個人履歴番号”,”個人履歴番号_枝番号”,”最新フラグ”,”改製番号”,”世帯番号”
“131016”,”12345678912″,”1″,”1″,”1″,”1″,”234567890123456″
“`

## プログラム

“`py:vertical_to_csv.py
#! /usr/bin/python
#
# vertical_to_csv.py
#
# Jul/15/2024
#
# ——————————————————————-

元記事を表示

【python】即興で3角形の辺の長さの和を入力して、ピタゴラスの定理が成立するかチェックしてみた

# はじめに
プログラムコンテストの題材で、三角形の3辺の和の長さを整数で入力し、ピタゴラスの定理が成立する(直角三角形)かどうか判定するプログラムを実装しました。

## ソースコード

ソースコードは下記になります

“`python
num = int(input())
count = 0
for b in range(1,num):
for c in range(1,num-b):
a = num – b – c

ans1 = pow(a,2)
ans2 = pow(b,2)
ans3 = pow(c,2)
ans4 = ans2 + ans3
if ans1 == ans4:
count += 1

if count >= 1:
print(“YES”)
else:
print(“NO”)
“`

## 実行結果

実行結果は下記の画像です。

![tedt1.jpg](https://qiita-image-store.s3

元記事を表示

Pandas: List から DataFrame を作成

## プログラム

“`py:from_list.py
#! /usr/bin/python
#
# from_list.py
#
# Jul/15/2024
# ——————————————————————
import pandas as pd

keys = [‘aa’,’bb’,’cc’,’dd’]
data = [[1,2],[4,56],[9,83],[11,24]]

df0 = pd.DataFrame({
‘aa’: [1,2],
‘bb’: [4,56],
‘cc’: [9,83],
‘dd’: [11,24],
})

print(df0)
print()

df = pd.DataFrame({keys[i]: data[i] for i in range(len(keys))})

print(df)
# ——————————————————————
“`

##

元記事を表示

DIって難しそうだけど、FastAPI のDependsは簡単に使えた話

# はじめに

FastAPIのDepend、なぜこれを使うのか、どんな時に使うのか、私なりにまとめてみました。
Dependsは、依存性注入(DI)するものとも言われてますが、DIの側面はあまり気にせず、見てみます。

# シンプルな例

例えば、q,skip,limitのパラメータを処理common_parametersがあったとします。
エントリーポイントの関数、read_itemにパラメータを並べて、取得して、common_parametersを呼び出します。

“`Python:main.py
from typing import Union

from fastapi import FastAPI, Depends

app = FastAPI()

def common_parameters(
q: Union[str, None] = None, skip: int = 0, limit: int = 100
):
return {“q”: q, “skip”: skip, “limit”: limit}

@app.get(“/items/{item

元記事を表示

Pandas: csv ファイルの修正

## 仕様

指定されたフォルダー内にある csv ファイルの ”2021-10-00″ を “2021-10-12” に置き換える

## プログラム

“`py:csv_replace_folder.py
#! /usr/bin/python
#
# csv_replace_folder.py
#
# Jul/15/2024
# ——————————————————————
import pandas as pd

import sys
import glob
import csv

# ——————————————————————
def csv_replace_single_proc(csv_file_path,str_src,str_target):
df = pd.read_csv(csv_file_path,dtype=str)

df = df.map(lambda x: str_

元記事を表示

DeepL API翻訳をPythonから使ってみた

# 概要
DeepL翻訳はDeep Learningを用いた高い翻訳性能で知られています。APIも用意されており、様々な言語から利用可能です。よって、試みにPythonから実行してみることにしました。

# アカウント登録
DeepLのアカウント登録とは別にAPIのアカウント登録も行います。まずは**無料版**で利用を開始することにします。**無料で登録する**をクリックし、アカウント登録を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/469079/b2ffe8f3-bd12-d8fd-4b56-90f69ad74cba.png)

# APIキーの取得
DeepL API翻訳を利用するにはAPIキーが必要です。以下のサイトの方法に則ってAPIキーを取得します。

https://support.deepl.com/hc/ja/articles/360020695820-DeepL-API%E7%94%A8%E3%81%AEAPI%E3%82%AD%E3%83%BC#h_0

元記事を表示

Pandas: ストリングの置換

‘abc’ というストリングを総て、’01234′ に置き換える方法

## プログラム

“`py:str_replace.py
#! /usr/bin/python
#
# str_replace.py
#
# Jul/14/2024
#
import pandas as pd

#
data = {‘col1’: [‘abc’, ‘xyz’, ‘abc’, ‘pqr’, ‘923’],
‘col2’: [‘abc’, ‘def’, ‘abx’, ‘ghi’, ‘654’],
‘col3’: [‘abc’, ‘abc’, ‘abc’, ‘abc’, ‘231’]}
df = pd.DataFrame(data)

print(df)
#
str_src = ‘abc’
str_target = ‘01234’
df = df.map(lambda x: str_target if x == str_src else x)

print(df)
“`

## 実行結果

“`text
$ ./str_replace.py
col1

元記事を表示

OTHERカテゴリの最新記事