差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
programming:python:packages:pandas:format_output [2019/11/19] – [カラム毎に小数点以下を揃える] ikatakos | programming:python:packages:pandas:format_output [2021/12/09] (現在) – [NaNを含むintカラム] ikatakos | ||
---|---|---|---|
行 21: | 行 21: | ||
'' | '' | ||
- | | + | |
- | 1 1.0 | + | 1 1.0 |
- | 2 1.0 | + | 2 1.0 |
- | 3 nan 3 | + | 3 nan |
- | 4 3.0 4 | + | 4 3.0 3 |
... ... | ... ... | ||
行 34: | 行 34: | ||
<sxh python> | <sxh python> | ||
df[' | df[' | ||
+ | |||
+ | # または | ||
+ | |||
+ | df[' | ||
</ | </ | ||
+ | |||
+ | 上記の変換ではnp.nanはnp.nanのまま残っているが、通常は空文字列になる。 | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | もし他の表現にしたい場合、'' | ||
+ | |||
===nanを示す整数値を定義=== | ===nanを示す整数値を定義=== | ||
行 43: | 行 54: | ||
df[' | df[' | ||
</ | </ | ||
+ | |||
+ | === pandas.Int64Dtype型を使う === | ||
+ | |||
+ | 未検証、pandas ver.0.24から導入された新しめの手法。 | ||
+ | |||
+ | numpyはnanを扱えないので、pandasのレイヤーでnanを扱えるint型を独自定義した感じ。 | ||
+ | |||
+ | ただ、floatからのキャストでエラーが出て、イマイチよく使い方がわかっていない。 | ||
+ | |||
+ | * [[https:// | ||
+ | |||
=====カラムの選択・並べ替え===== | =====カラムの選択・並べ替え===== | ||
行 132: | 行 154: | ||
</ | </ | ||
- | ===丸め方法についての注意=== | + | ====丸め方法についての注意==== |
注意点として、NumPyのroundは偶数丸めであること。(参考: | 注意点として、NumPyのroundは偶数丸めであること。(参考: | ||
行 138: | 行 160: | ||
偶数丸めは、丸めた値が実際の値から上振れするか下振れするかの期待値を、なるべく均等にする目的で使われる。 | 偶数丸めは、丸めた値が実際の値から上振れするか下振れするかの期待値を、なるべく均等にする目的で使われる。 | ||
よって、丸め結果の総和や平均を取る場合などは望ましい。 | よって、丸め結果の総和や平均を取る場合などは望ましい。 | ||
+ | しかし、丸め結果の差分が重要なデータなどでは、四捨五入の方が誤差が少なくなる場合もある(*)ため、使い分ける必要がある。 | ||
- | しかし、丸め結果の差分が重要なデータなどでは、四捨五入の方が誤差が少なくなる場合もある(*)ため、使い分ける必要がある。 | ||
だが、PythonにもNumPyにも本来の四捨五入(xx.5は常に切り上げ)に相当する関数が無いんだよなあ。 | だが、PythonにもNumPyにも本来の四捨五入(xx.5は常に切り上げ)に相当する関数が無いんだよなあ。 | ||
- | |||
一応、標準モジュール Decimal.quantize() でDecimal型に変換することで、切り上げ方を選択できるが、変換が必要なことがネック。 | 一応、標準モジュール Decimal.quantize() でDecimal型に変換することで、切り上げ方を選択できるが、変換が必要なことがネック。 | ||
1 で割ってあまりが 0.5 に等しいものは一律 0.01 を加算するみたいな方がいいかもしれん。 | 1 で割ってあまりが 0.5 に等しいものは一律 0.01 を加算するみたいな方がいいかもしれん。 | ||
行 148: | 行 169: | ||
* (*) 検証方法 | * (*) 検証方法 | ||
- | * $a=0.0~1.9,b=0.0~1.9$ の $a,b$ の組400通りにつき、小数点1桁目を丸めての $a' | + | * $0.0~1.9$ の0.1刻みの $(a,b)$ の組400通りにつき、小数点1桁目を丸めての $a' |
* 偶数丸めで処理した結果: | * 偶数丸めで処理した結果: | ||
* 四捨五入で処理した結果: | * 四捨五入で処理した結果: |