データサイエンスのための Python データ型
int、float、complex、bool、str を扱い、精度と型の選択がデータ分析に与える影響を学びます。
「データサイエンスのための Python データ型」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
データサイエンスの数値
Pythonには、主要な数値型が2つあります。intは任意精度の整数、floatは64ビットIEEE 754浮動小数点数です。適切な型を選ぶことで、見つけにくいデータのバグを防げます。
intは正確で上限がない
Pythonの整数はオーバーフローしません。メモリが許す限り大きくできるため、正確な個数のカウントや大きな階乗の計算に適しています。
big = 2 ** 200
print(big)
print(type(big)) # <class 'int'>floatの精度の落とし穴
浮動小数点数は、すべての小数を正確に表現できるわけではありません。典型的な例は、0.1 + 0.2が正確には0.3にならないことです。
print(0.1 + 0.2) # 0.30000000000000004
print(0.1 + 0.2 == 0.3) # False浮動小数点数を安全に比較する
浮動小数点数を==で比較しないでください。代わりに、許容誤差を指定したmath.iscloseを使います。
import math
print(math.isclose(0.1 + 0.2, 0.3)) # True金額にはDecimalを使う
通貨を扱う場合は、10進数の値を正確に保持するdecimal.Decimalを使います。浮動小数点数の誤差を引き継がないよう、Decimalは必ず浮動小数点数ではなく文字列から作成してください。
from decimal import Decimal
price = Decimal("0.10") + Decimal("0.20")
print(price) # 0.30boolはintのサブクラス
Pythonでは、Trueは1と等しく、Falseは0と等しくなります。このため、ブール値を合計して一致する件数を数えられます。
mask = [True, False, True, True]
print(sum(mask)) # 3 matches
print(True + True) # 2ブール値でカウントする
このboolをintとして扱う挙動は、NumPyやpandasのいたるところで利用されています。ブールマスクを合計すると、条件を満たす行数を数えられます。
ages = [12, 20, 35, 17, 40]
adults = sum(a >= 18 for a in ages)
print(adults) # 3type()で型を確認する
type(x)は、値の正確なクラスを返します。列に数値ではなく文字列が入っていた場合などに便利です。
print(type(5)) # <class 'int'>
print(type(5.0)) # <class 'float'>
print(type("5")) # <class 'str'>isinstance()で型を確認する
継承関係を考慮するため、type ==よりもisinstanceを使うことをおすすめします。boolはintのチェックにも通る点に注意してください。
print(isinstance(5, int)) # True
print(isinstance(True, int)) # True (bool subclasses int)
print(isinstance(5.0, (int, float))) # True型変換の落とし穴
型を混在させると、暗黙的に型変換されます。浮動小数点数の整数除算の結果も浮動小数点数になり、数値と文字列を連結するとTypeErrorが発生します。データ型は早い段階で整えてください。
print(5 / 2) # 2.5 (true division always float)
print(5 // 2) # 2 (floor division)
# "id-" + 5 # TypeError
print("id-" + str(5)) # id-5集計で起こるfloatの意外な挙動
多数の浮動小数点数を合計すると、小さな誤差が蓄積します。大規模なデータセットでは、ペアワイズ加算によって誤差の蓄積を抑えるNumPyを使うことをおすすめします。
vals = [0.1] * 10
print(sum(vals)) # 0.9999999999999999
# NumPy: np.sum(vals) is more numerically stable確認テスト
Pythonの型について理解できているか確認しましょう。
まとめ
データ処理で重要な数値型のポイントです。
intは正確で上限がないfloatは近似値であり、==ではなくmath.iscloseを使う- 金額には
Decimal("...")を使う boolはintなので、sum(mask)で件数を数えられるtype()はクラスを示し、isinstance()は継承関係を考慮する- 除算や連結で暗黙的な型変換が起きることに注意する
よくある質問
「データサイエンスのための Python データ型」レッスンは無料ですか?
はい。「データサイエンスのための Python データ型」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「データサイエンスのための Python データ型」で何を学びますか?
int、float、complex、bool、str を扱い、精度と型の選択がデータ分析に与える影響を学びます。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「データサイエンスのための Python データ型」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 仮想環境と pip
- データサイエンスのための Jupyter Notebook
- データサイエンスのための Python データ型
- Python REPL と IPython の操作