Python のコードを読むと、最初に出てくるのが 変数 と データ型 です。本記事では、株価データを扱う前提でよく使う基本型と、型に起因する落とし穴を整理します。
変数とは
変数とは、値に名前を付けて再利用できるようにするしくみです。
price = 1500volume = 12000ticker = "7203" # トヨタ自動車の銘柄コード= は数学の等号ではなく「右辺の値を左辺の名前にひも付ける」という意味です。
変数名は次のルールで付けます。
- 半角アルファベット・数字・アンダースコア(
_)を使う - 数字で始めない(
1dayは不可、day_1は可) - 予約語(
if/for/classなど)は使えない - スネークケース(
current_priceのようにアンダースコア区切り)が慣例
基本データ型
Python のコードで最も頻繁に登場する 4 つの型を扱います。
| 型 | 例 | 役割 |
|---|---|---|
int | 1500, 0, -3 | 整数。出来高・銘柄数など |
float | 1.23, 3.14, 0.0 | 浮動小数点。リターン・指標値 |
str | "7203", "トヨタ自動車" | 文字列。銘柄コード・社名 |
bool | True, False | 真偽値。条件判定の結果 |
型を確認する
type() で変数の型を確認できます。
price = 1500print(type(price)) # <class 'int'>
ratio = 1500 / 1000print(type(ratio)) # <class 'float'>
ticker = "7203"print(type(ticker)) # <class 'str'>
is_above = price > 1000print(type(is_above)) # <class 'bool'>暗黙の型変換に注意
整数同士の割り算でも、結果は float になります。
print(10 / 2) # 5.0 (float)print(10 // 2) # 5 (int、整数除算)print(10 % 3) # 1 (剰余)株価分析で「銘柄数を割って比率を出す」ような処理では、想定外に小数が出ます。整数のまま扱いたい場合は // を使います。
文字列と数値の違い
J-Quants API から銘柄コードを取得すると、しばしば 文字列 で返ってきます。先頭の 0 を保持する必要があるためです。
ticker = "7203"print(ticker + 1) # ❌ TypeError: can only concatenate strprint(int(ticker) + 1) # ⚪ 7204(整数に変換してから)逆に「数値で計算した結果を文字列に組み込む」場合は f 文字列 を使うと簡潔です。
price = 1500print(f"現在の株価は {price} 円です")# 現在の株価は 1500 円です
ratio = 0.0345print(f"上昇率: {ratio:.2%}")# 上昇率: 3.45%{ratio:.2%} の :.2% は「小数点以下 2 桁のパーセント表記」を指定する書式指定子です。
浮動小数点の罠
float は実際にはバイナリ表現を使うため、十進数の世界とは微妙にずれます。
print(0.1 + 0.2) # 0.30000000000000004print(0.1 + 0.2 == 0.3) # False株価そのもの(円単位)では問題になりにくいのですが、比率・利回り のような小さい値の比較には注意が必要です。完全一致の判定が必要なら、許容誤差を持たせた比較を使います。
import mathprint(math.isclose(0.1 + 0.2, 0.3)) # TrueTrue / False と「真偽値らしい」値
bool は条件分岐の結果として登場します。条件式は ==(等値)・!=(不等)・<・>・<=・>= などを使います。
price = 1500print(price > 1000) # Trueprint(price == 1500) # Trueprint(price != 0) # TruePython では、整数 0、空文字 ""、空のリスト []、None などは False として扱われます(falsy)。ゼロ判定や空判定にこの性質を使うことがあります。
volume = 0if not volume: print("出来高がありません")ただし、株価データのように「0 が意味を持つ可能性のある値」では、明示的に volume == 0 を書いたほうが意図が明確になります。
None という特別な値
None は「値がない」ことを表す特別なオブジェクトです。
target_price = Noneif target_price is None: print("目標株価は未設定です")データの欠損を表すのに使われます。比較は is None / is not None を使うのが慣例です(== None は動きますが推奨されません)。
生成AI へのプロンプト例
「型でつまずいた」ときに生成AI に質問する例です。エラーメッセージと前後のコードをセットで貼ると、的確な回答が返ってきやすくなります。
次の Python コードを実行すると `TypeError: unsupported operand type(s) for +: 'int' and 'str'` が出ます。原因と修正案を教えてください。
ticker = "7203"next_ticker = ticker + 1print(next_ticker)回答が来たら、提示された修正版を実行して結果を確認します(詳細は#7-3「エラーを生成AIに直してもらう作法」)。
まとめ
- 4 つの基本型(
int/float/str/bool)を覚えれば、株価データ処理の入口はこなせる - 銘柄コードは 文字列 として扱うのが安全
- 浮動小数点の比較には許容誤差(
math.isclose)を使う - 欠損値は
Noneで表し、is Noneで判定する