この記事では、Pythonで整数かどうかを判定する方法(少数か:文字列の場合も)について解説していきます。
ポイントとしては
・isinstance関数、type関数、split関数、int関数、float関数
・pandasライブラリなど
を使用することです。
なお、下記の解説では完全な初心者でもわかりやすいようにあえて変数名(あなた自身が名付けていい場所)を少々変わった名称にしております。
そのため、あなた自身がご活用の際には、ここを適切な(英語表記でしっくりくるものが一般的)ものに変更してご活用くださいね。
それでは詳しく見ていきましょう!
整数かどうか判定(少数か:元が数値の場合)する方法【isinstance, type】
それでは、整数かどうか判定(少数か:元が数値の場合)する方法について解説していきます。
数値が整数か少数かを判定するには、isinstance関数とtype関数を使用します。
jupyter notebookなどの各開発環境を開いて、以下コードをコピペしましょう。
suuji = 10 # suujiという変数に整数の10を代入
if isinstance(suuji, int): # isinstance関数で、suujiが整数(int)かどうかを判定
print(f"{suuji}は整数です")
else:
print(f"{suuji}は少数です")
suuji2 = 5.5 # suuji2という変数に少数の5.5を代入
if type(suuji2) == int: # type関数とイコール演算子で、suuji2のデータ型が整数(int)かどうかを判定
print(f"{suuji2}は整数です")
else:
print(f"{suuji2}は少数です")
実行結果は以下の通りですね!
コードの意味詳細
isinstance関数は、第1引数のオブジェクトが第2引数のクラス(型)かどうかを判定し、一致していればTrueを、一致していなければFalseを返します。
type関数は、引数で指定したオブジェクトのデータ型(クラス)を返します。イコール演算子(==)で特定のデータ型と一致するかを判定できます。
整数かどうか判定(少数か:元が文字列の場合)する方法【split, int, float】
続いては、整数かどうか判定(少数か:元が文字列の場合)する方法について解説していきます。
文字列が整数を表しているのか、少数を表しているのかを判定するには、split関数、int関数、float関数を使用します(整数か、少数かを判断した上で、文字列から数値に変換する)。
jupyter notebookなどの各開発環境を開いて、以下コードをコピペしましょう。
moji = "15" # mojiという変数に文字列の"15"を代入
if "." in moji: # 文字列mojiにドット(.)が含まれているかを確認
print(f"{moji}は少数を表す文字列です")
else:
print(f"{moji}は整数を表す文字列です")
moji2 = "2.71" # moji2という変数に文字列の"2.71"を代入
moji2_split = moji2.split(".") # split関数で、moji2をドット(.)で分割
if len(moji2_split) > 1: # 分割後のリストの要素数が1より大きい(ドットで分割できた)場合
try:
float(moji2) # float関数で文字列moji2を少数に変換
print(f"{moji2}は少数を表す文字列です")
except ValueError: # 少数への変換に失敗した場合の例外処理
print(f"{moji2}は数値を表す文字列ではありません")
else:
try:
int(moji2) # int関数で文字列moji2を整数に変換
print(f"{moji2}は整数を表す文字列です")
except ValueError: # 整数への変換に失敗した場合の例外処理
print(f"{moji2}は数値を表す文字列ではありません")
コードの意味詳細
split関数は、指定した区切り文字で文字列を分割し、リストを返します。
ここでは、ドット(.)を区切り文字に指定しています。
int関数は、文字列を整数に変換します。float関数は、文字列を少数に変換します。
数値を表す文字列ではない場合、int関数やfloat関数での変換時にValueErrorという例外が発生しますので、try~except文を用いて、この例外を処理しています。
整数かどうか判定(少数か:元が文字列の場合)する方法【pandas】
最後に、pandasライブラリを使って、データフレームでの整数かどうかの判定(少数か:元が文字列の場合)する方法について解説します。
jupyter notebookなどの各開発環境を開いて、以下コードをコピペしましょう。
import pandas as pd # pandasライブラリをpdという名前でインポート
data = {"moto": ["1", "2.5", "0", "-4.1", "abc"]} # dataという辞書を作成。motoというキーに、判定対象の文字列のリストを指定
df = pd.DataFrame(data) # DataFrame関数でデータフレームを作成し、dfという変数に代入
def hantei(moji): # hanteiという関数を定義。引数は文字列moji
if "." in moji: # 文字列mojiにドット(.)が含まれているかを確認
try:
float(moji) # float関数で文字列mojiを少数に変換
return "少数"
except ValueError: # 少数への変換に失敗した場合の例外処理
return "その他"
else:
try:
int(moji) # int関数で文字列mojiを整数に変換
return "整数"
except ValueError: # 整数への変換に失敗した場合の例外処理
return "その他"
df["kekka"] = df["moto"].apply(hantei) # applyメソッドで、moto列の各要素に対してhantei関数を適用し、その結果をkekka列に代入
print(df) # データフレームdfを出力
出力結果は以下の通りです(^^)/
コードの意味詳細
ユーザー定義のhantei関数は、文字列を引数に取り、その文字列が整数を表しているのか、少数を表しているのか、それ以外なのかを判定し、判定結果を返します。
pandasのapplyメソッドを使うことで、データフレームの各要素に対して関数を適用できます。ここでは、moto列の各要素に対してhantei関数を適用し、その結果をkekka列に代入しています。
まとめ Pythonで整数か少数か判定(文字列:リストの場合も)する方法【isinstance, type, split, int, float, pandas】
この記事では、【Python】整数かどうか判定(少数か:文字列:リストの場合も)する方法【isinstance, type, split, int, float, pandas】について確認しました。
Pythonの扱いになれ、さらに快適な生活を送っていきましょう!