PythonでPandas Seriesのすべての要素を四捨五入する方法
PandasのSeriesに含まれる浮動小数点数を四捨五入したい場面はよくあります。本記事では、Seriesのすべての要素を丸めるための2つの方法を、具体的なコード例とともに解説します。
入力データと期待される出力
まず、以下のようなSeriesが与えられていると仮定します。
0 1.3 1 2.6 2 3.9 3 4.8 4 5.6
これらの値を四捨五入すると、次の出力が得られます。
0 1.0 1 3.0 2 4.0 3 5.0 4 6.0
方法1:round()メソッドを使う
PandasのSeriesには、数値を丸めるためのround()メソッドが標準で用意されています。これが最もシンプルで推奨される方法です。
手順
リストからSeriesを作成します。
Seriesに対してround()メソッドを呼び出すだけで、すべての要素が一括で丸められます。
コード例
実際の実装を見てみましょう。
import pandas as pd l = [1.3, 2.6, 3.9, 4.8, 5.6] data = pd.Series(l) print(data.round())
出力結果
0 1.0 1 3.0 2 4.0 3 5.0 4 6.0
たった1行で処理が完了するため、実務ではこの方法を使うのがベストです。
方法2:forループと組み込み関数round()を使う
Pythonの組み込み関数であるround()をforループと組み合わせて、各要素を個別に丸める方法もあります。処理の流れを細かく制御したい場合に有効です。
手順
Seriesを作成します。
空のリストを用意し、forループで各要素を取り出しながらround()で丸めた値を追加していきます。
最後に、丸め済みのリストから新しいSeriesを作成します。
コード例
import pandas as pd
l = [1.3, 2.6, 3.9, 4.8, 5.6]
data = pd.Series(l)
ls = []
for i, j in data.items():
ls.append(round(j))
result = pd.Series(ls)
print(result)出力結果
0 1 1 3 2 4 3 5 4 6
なお、Pythonの組み込みround()は整数型(int)を返すため、出力の表示が「1.0」ではなく「1」になっている点に注意してください。
まとめ
Series全体をまとめて丸める場合はdata.round()が最も簡潔で効率的です。一方、要素ごとの処理ロジックをカスタマイズしたい場合や、他の処理と組み合わせたい場合は、forループと組み込みround()を活用する方法が役立ちます。用途に応じて使い分けましょう。
-
Pythonで数Nの桁数を数えるプログラムの書き方
ある数Nが与えられたとき、その数に含まれる桁の総数を求めることを考えましょう。例えば以下のようなケースです。入力例1:N = 891452出力:6解説: 与えられた数891452は6桁の数字で構成されているため、この場合は「6」を返します。入力例2:N = 0074515出力:5解説: 先頭の0を除いた有効な桁数が5桁であるため、出力は「5」となります。この問題を解くためのアプローチこの問題は、次の手順で解決できます。数値nを入力として受け取ります。関数countDigits(n)が入力nを受け取り、桁数をカウントして返します。数値の各桁に対してループ処理を行い、カウンター変数を1ずつ増加させ
-
Pythonで整数配列の重複を除去し、個別の要素だけを出力する方法
整数型の配列が与えられ、その中には重複した要素が含まれている場合があります。この記事では、重複を取り除いて個別(ユニーク)な値だけを出力するPythonプログラムを解説します。 実行例 入力:A = [1, 2, 3, 4, 2, 3, 5, 6] 出力:[1, 2, 3, 4, 5, 6] アルゴリズム このプログラムは次の手順で動作します。 配列の要素を入力として受け取ります。 各要素を先頭から順番に1つずつ取り出します。 取り出した要素が、それ以前にすでに出力されたものかどうかを確認します。 初期値0のフラグ変数を用意し、すでに表示済みなら1、未表示なら0のままにします。 フラ