皆もすなるQiitaといふものを、儂もしてみむとてするなり。
と言う訳で、こん**は!はなっち!です。
この記事はUiPathブログ発信チャレンジ2023サマーの13日目の記事です。
【初めに】
前回は、はなっち!の度数分布表アクティビティの基本的な使い方の紹介をお届けしました。
今回は、はなっち!の度数分布表アクティビティには他にもアクティビティを提供しており、ご紹介しようと思います。
1)はなっち!の度数分布表アクティビティの他のアクティビティ
はなっち!の度数分布表アクティビティには、以下のアクティビティが存在しています。
アクティビティ名 | 説明 | 紹介 |
---|---|---|
度数分布表 | 度数分布表を作成する | その1 |
最大値最小値を求める | 対象列の最大値、最小値を求める | 今回 |
階級を求める | 度数分布表の階級値を求める | 今回 |
1-1)「最大値最小値を求める」アクティビティ
100点満点の試験の結果を度数分布表として求める際に使用する得点の範囲は0点~100点と幅が決まっており、階級値は、自ずと{0点,10点(,20点...),90点,100点}
と決められますが、どのような値が推測できないような場合、最小値、最大値を求め、値の傾向をつかんだ方が、綺麗な度数分布表が作成できると思います。
「最大値最小値を求める」アクティビティは、その最小値、最大値を求めるためものです。
項目名 | 属性 | 説明 |
---|---|---|
計測データ | DataTable | 測定対象とするデータテーブル |
測定列名 | String | 度数分布を計測する対象列名 |
最大値 | Double | 有効データ中の最大値 |
最小値 | Double | 有効データ中の最大値 |
有効データ数 | Int32 | 階級として数値変換できたデータ件数 |
数値外データ数 | Int32 | 階級として数値変換できなかったデータ件数 |

下図は、EXCELのPivot機能で求めた、化学の最大値、最小値です。
一致していますね。
1-2)「階級を求める」アクティビティ
対象とするデータの最大値、最小値がわかりました。そのデータから度数分布表を作成する際の階級は、どんな値を設定すればいいのか。
その最大値、最小値から階級を求めるためのアクティビティです。
項目名 | 属性 | 説明 |
---|---|---|
最大値 | Double | 有効データ中の最大値 |
最大値 | Double | 有効データ中の最小値 |
階級数 | Int32 | 階級としての数 |
階級 | Double[] | 階級値 |
String.Join(ControlChars.Lf, CLASSes.Reverse)

※3階級としても4階級見えてしまうのは、最大値として1つの階級としてしまうからです。仕様です!
1-3)「度数分布表」アクティビティ
自動算出した階級値を使って、度数分布表を作ってみました。当然のことながら、階級は小数点を保有しているので、見にくくなっています。
1-4)階級を綺麗にする
「階級を求める」アクティビティを使用すると、最小値と最大値から、単純に計算しているだけなので、小数点を持つ階級が出てしまいましたね。
見栄えも悪いので、これを綺麗にしていきましょう。
「度数分布表」アクティビティの階級の属性は、Double型配列
ですので、綺麗にした結果もDouble型配列
でなければなりません。
ここは、Linqを使って、やってみましょう。
-
Int32型
にキャストし、更にDouble型
にキャストする。
CLASSes ← (CLASSes
.Select(Function(d) CInt(d)).ToArray())
.Select(Function(i) CDbl(i)).ToArray()
-
Int32型
にキャストする際、指定した基準値の倍数に近い値で切り捨て
し、その後Double型
にキャストする。
CLASSes ← (CLASSes
.Select(Function(d) CInt(Math.Floor(d))).ToArray())
.Select(Function(i) CDbl(i)).ToArray()
-
Int32型
にキャストする際、指定した基準値の倍数で最も近い値に切り上げ
し、その後Double型
にキャストする。
CLASSes ← (CLASSes
.Select(Function(d) CInt(Math.Ceiling(d))).ToArray())
.Select(Function(i) CDbl(i)).ToArray()
- 小数点1桁まで有効にしたい!
CLASSes ← (CLASSes
.Select(Function(d) CInt(d * 10)).ToArray())
.Select(Function(i) CDbl(i / 10)).ToArray()
10倍してから、10で割っているので、小数点1桁までが階級となっています。
おわりに
いかがでした?
今回も読んでいただきありがとうございました!
是非UiPathでのロボ開発の一助になればと思っています。
ありがとうございました!