PythonのCerberusでデータ検証(バリデーション)を行う方法を徹底解説
はじめに
PythonのCerberusモジュールは、強力でありながら軽量なデータバリデーション(検証)機能を提供するライブラリです。拡張性に優れた設計になっており、さまざまなアプリケーションやカスタム検証ルールへの対応も容易です。
Cerberusでは、まず「スキーマ」と呼ばれる検証ルールの定義を作成し、そのスキーマに対してデータを照合します。条件に一致しなかった場合は、どの箇所が問題だったのかを正確に示すエラーメッセージが出力されるのが特徴です。
また、1つのデータフィールドに対して複数の条件を同時に適用することも可能です。
Cerberusのインストール方法
CerberusはPythonに標準で同梱されていないため、使用前にインストールが必要です。pipパッケージマネージャーを使ってダウンロード・インストールを行います。
ターミナル(コマンドプロンプト)を起動し、以下のコマンドを実行してください。
pip install Cerberus
インストールが完了したら、Pythonスクリプト内でValidatorモジュールをインポートします。
from cerberus import Validator
これで準備完了です。すぐにデータの検証を始められます。
辞書型データの検証方法
まず、検証ルールとなるスキーマを作成します。
schema = {'numbers': {'type': 'integer'}}
v = Validator(schema)このスキーマは、「Pythonの辞書内にある numbers フィールドには整数のみが格納されなければならない」という意味になります。
data = {'numbers': 5}上記が検証対象となるデータです。
if v.validate(data):
print("Data is valid")
else:
print("Data is invalid")
v.validate() メソッドを使うことで、事前に作成したスキーマに対してデータが適合しているかどうかをチェックできます。
実行例
from cerberus import Validator
schema = {'numbers': {'type': 'integer'}}
v = Validator(schema)
data = {'numbers': 5}
if v.validate(data):
print("Data is valid")
else:
print("Data is invalid")
出力結果
Data is valid .
複数ルールによる検証とエラー表示
次に、必須項目(required)や型(type)など、複数のルールを組み合わせた検証と、エラーメッセージの取得方法を見てみましょう。
from cerberus import Validator
v = Validator()
v.schema = {'ID': {'required': True, 'type': 'number'},
'age': {'type': 'integer'}}
if v.validate({'age': 60}):
print('Data is valid')
else:
print('Data is invalid')
print(v.errors)
出力結果
Data is invalid, {'ID': ['required field']}IDフィールドには required: True(必須)が指定されているため、IDが含まれていないデータは無効と判定され、エラー内容が v.errors に出力されます。
最小値・最大値の範囲設定
数値や文字列の長さに下限・上限を設けることもできます。数値には min / max を、文字列には minlength / maxlength を使用します。
from cerberus import Validator
v = Validator()
v.schema = {'name': { 'type': 'string', 'minlength': 5},
'age': {'type': 'integer', 'min': 18, 'max': 65}}
if v.validate({'name': 'VJ', 'age': 16}):
print('Data is valid')
else:
print('Data is invalid')
print(v.errors)
出力結果
Data is invalid
{'age': ['min value is 18'], 'name': ['min length is 5']}
この例では、name が5文字未満、age が18歳未満であるため、両方のエラーが同時に報告されています。このように、Cerberusを使えば辞書やJSONファイルなどを同じ要領で手軽に検証できます。
まとめ
本記事では、Cerberusライブラリを使用して、独自に作成したスキーマに基づいたデータ検証を行う方法を学びました。
この手法を活用すれば、JSONファイルやAPIから取得したデータなども効率よく検証できます。
データ検証を行う主な目的は、データベース構築時やデータ分析作業中のエラーを未然に防ぐことです。
さらに、検証処理を自動化すれば、動的なWebサイトの開発にも応用できるでしょう。
-
Pythonの「seaborn」ライブラリを使用してデータを視覚的に表現するにはどうすればよいですか?
機械学習とデータ可視化の関係機械学習とは、データからモデルを構築し、まだ見たことのないデータに対しても汎化できるようにすることを目的とした技術です。機械学習モデルに入力するデータは、システムが正しく理解できる形である必要があります。それによって、モデルはデータを適切に解釈し、精度の高い結果を生成できるようになります。Seabornとは何かSeabornは、データの可視化を支援するPythonライブラリです。あらかじめカスタマイズされた美しいテーマと高水準インターフェースを備えており、このインターフェースを活用することで、扱うデータの種類や、フィルタを適用した際の挙動を柔軟にカスタマイズ・制御す
-
PythonのopenpyxlでExcelグラフを作成する方法|棒グラフ作成をステップ解説
この記事では、Pythonのopenpyxlモジュールを使ってExcelにグラフを作成する方法を解説します。テニス選手のグランドスラム優勝回数をサンプルデータとして、ゼロからExcelスプレッドシートを作成し、openpyxlで棒グラフを描画するまでの一連の手順を紹介します。 はじめに Microsoft Officeでは、Office 2007以降、より多くの行と列を扱えるようにするため、Excelシートに新しい拡張子「.xlsx」が導入されました。この変更により、ExcelファイルはZIP圧縮されたXMLベースのフォーマットへと移行しています。Microsoftのスプレッドシートは今やビ