SlideShare a Scribd company logo
pandas によるデータ加工時の
注意点やライブラリの話
Masashi Shibata
October 10 2015, PyCon JP 2015
@c_bata_
明石高専 専攻科
akashi.py 主催
PyCon APAC/Taiwan 2015
BePROUD で Django
研究で pandas ← 今日はこれ
データ分析に対するイメージ
色々計算して結果が数値
問題の切り分けが困難
バグの存在に気がつきにくい
ユニットテスト
最低限、テストに記述された振舞いは満たすはず
ある程度、怪しい箇所の予測ができそう
それでもおかしい
テストケースに漏れがある?
デバッガを使ってみたけど原因は分からず
テストケースに漏れがある?
デバッガを使ってみたけど原因は分からず
それでもおかしい
対象データの一部に変な値が混ざってた
何故気づけなかったのか
フィクスチャデータと実データは違う
ユニットテストの限界
大量の入力ファイル
デバッガの限界
pandas-validator
https://github.com/c-bata/pandas-validator
$ pip install pandas_validator
使い方
import pandas_validator as pv
class SampleDataFrameValidator(pv.DataFrameValidator):
row_num = 20
axis_x = pv.IntegerColumnValidator('axis_x', min_value=0, max_value=10)
axis_y = pv.IntegerColumnValidator('axis_y', min_value=0, max_value=10)
speed = pv.FloatColumnValidator('speed', min_value=0)
pressure = pv.FloatColumnValidator('pressure', min_value=0, max_value=1)
validator = SampleDataFrameValidator()
使い方
import pandas as pd
df = pd.DataFrame({
'axis_x': [6, 5, 6, 3, 4, ...],
'axis_y': [3, 2, 5, 1, 9, ...],
'speed': [3.2, 3.5, 3.3, 3.7, 3.2, ...],
'pressure': [0.2, 0.2, 0.1, 0.7, 0.6, ...]
})
validator.is_valid(df) # True.
わかったこと
ユニットテストやデバッガでは検出が困難
DataFrame はイレギュラーな値を許容
データが正しいとは限らない
今後やりたいこと
DataFrame の構造を明示的に記述
Django のように Fixture データの生成など
Sprint!
with @sinhrks
pandas コードリーディング
PR を送っていこう

More Related Content

PDF
sqldf for pandas
PDF
PDF
知って得するWebで便利なpostgre sqlの3つの機能
PDF
今すぐ使えるクラウドとPostgreSQL
PPTX
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
PPTX
Tokyo Webmining #12 Hapyrus
PDF
パッケージングの今と未来
PDF
Postgre sqlから見るnosql
sqldf for pandas
知って得するWebで便利なpostgre sqlの3つの機能
今すぐ使えるクラウドとPostgreSQL
組合せ最適化を体系的に知ってPythonで実行してみよう PyCon 2015
Tokyo Webmining #12 Hapyrus
パッケージングの今と未来
Postgre sqlから見るnosql

What's hot (20)

PDF
PostgreSQLレプリケーション(pgcon17j_t4)
PDF
パッケージングの今と未来
PDF
Pythonはどうやってlen関数で長さを手にいれているの?
PDF
PostgreSQLでスケールアウト
PPT
クラウド時代の並列分散処理技術
PDF
Oratopostgres-hiroshima
PDF
pythonでオフィス快適化計画
PDF
OSC北海道2014_JPUG資料
PDF
DDDハンズオン
PDF
実務で役立つデータベースの活用法
PDF
Web エンジニアが postgre sql を選ぶ 3 つの理由
PDF
PythonによるWebスクレイピング入門
PDF
Chugokudb18_1
PDF
パッケージングの今
PDF
ldapvi & python-ldap で stress-free life
PDF
PostgreSQLとpython
PDF
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
PDF
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
PDF
形態素解析器 MeCab の新語・固有表現辞書 mecab-ipadic-NEologd のご紹介
PDF
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
PostgreSQLレプリケーション(pgcon17j_t4)
パッケージングの今と未来
Pythonはどうやってlen関数で長さを手にいれているの?
PostgreSQLでスケールアウト
クラウド時代の並列分散処理技術
Oratopostgres-hiroshima
pythonでオフィス快適化計画
OSC北海道2014_JPUG資料
DDDハンズオン
実務で役立つデータベースの活用法
Web エンジニアが postgre sql を選ぶ 3 つの理由
PythonによるWebスクレイピング入門
Chugokudb18_1
パッケージングの今
ldapvi & python-ldap で stress-free life
PostgreSQLとpython
商用DBからPostgreSQLへ まず知っておいて欲しいまとめ
機械学習モデルフォーマットの話:さようならPMML、こんにちはPFA
形態素解析器 MeCab の新語・固有表現辞書 mecab-ipadic-NEologd のご紹介
PostgreSQLでpg_bigmを使って日本語全文検索 (MySQLとPostgreSQLの日本語全文検索勉強会 発表資料)
Ad

More from Masashi Shibata (20)

PDF
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
PDF
実践Djangoの読み方 - みんなのPython勉強会 #72
PDF
CMA-ESサンプラーによるハイパーパラメータ最適化 at Optuna Meetup #1
PDF
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
PDF
Implementing sobol's quasirandom sequence generator
PDF
DARTS: Differentiable Architecture Search at 社内論文読み会
PDF
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
PDF
PythonとAutoML at PyConJP 2019
PDF
Djangoアプリのデプロイに関するプラクティス / Deploy django application
PDF
Django REST Framework における API 実装プラクティス | PyCon JP 2018
PDF
Django の認証処理実装パターン / Django Authentication Patterns
PDF
RTMPのはなし - RTMP1.0の仕様とコンセプト / Concepts and Specification of RTMP
PDF
システムコールトレーサーの動作原理と実装 (Writing system call tracer for Linux/x86)
PDF
Golangにおける端末制御 リッチなターミナルUIの実現方法
PDF
How to develop a rich terminal UI application
PDF
Introduction of Feedy
PDF
Webフレームワークを作ってる話 #osakapy
PDF
Pythonのすすめ
PDF
Pythonistaのためのデータ分析入門 - C4K Meetup #3
PDF
テスト駆動開発入門 - C4K Meetup#2
MLOps Case Studies: Building fast, scalable, and high-accuracy ML systems at ...
実践Djangoの読み方 - みんなのPython勉強会 #72
CMA-ESサンプラーによるハイパーパラメータ最適化 at Optuna Meetup #1
サイバーエージェントにおけるMLOpsに関する取り組み at PyDataTokyo 23
Implementing sobol's quasirandom sequence generator
DARTS: Differentiable Architecture Search at 社内論文読み会
Goptuna Distributed Bayesian Optimization Framework at Go Conference 2019 Autumn
PythonとAutoML at PyConJP 2019
Djangoアプリのデプロイに関するプラクティス / Deploy django application
Django REST Framework における API 実装プラクティス | PyCon JP 2018
Django の認証処理実装パターン / Django Authentication Patterns
RTMPのはなし - RTMP1.0の仕様とコンセプト / Concepts and Specification of RTMP
システムコールトレーサーの動作原理と実装 (Writing system call tracer for Linux/x86)
Golangにおける端末制御 リッチなターミナルUIの実現方法
How to develop a rich terminal UI application
Introduction of Feedy
Webフレームワークを作ってる話 #osakapy
Pythonのすすめ
Pythonistaのためのデータ分析入門 - C4K Meetup #3
テスト駆動開発入門 - C4K Meetup#2
Ad

pandasによるデータ加工時の注意点やライブラリの話