Pythonでデータフレームの分布の形状(尖度・歪度)を定量化する方法
データフレームを用意し、その分布の形状を定量化すると、次のような結果が得られます。
kurtosis is: Column1 -1.526243 Column2 1.948382 dtype: float64 asymmetry distribution - skewness is: Column1 -0.280389 Column2 1.309355 dtype: float64
解決の手順
この問題を解くには、以下の手順に従います。
- まず、対象となるデータフレームを定義します。
df.kurt(axis=0)を適用して、分布の形状(尖度)を列ごとに計算します。df.skew(axis=0)を適用して、軸0方向の不偏歪度を求め、分布の非対称性を確認します。
尖度と歪度とは?
尖度(kurtosis)は、分布の山の尖り具合や裾の厚さを表す指標です。正規分布では0となり、値が大きいほど裾が厚く、外れ値が出やすい分布であることを示します。
歪度(skewness)は、分布の非対称性を表す指標です。正の値であれば右側に裾が長い(左に偏った)分布、負の値であれば左側に裾が長い(右に偏った)分布であることを意味します。
コード例
以下のコードを実行すると、より理解が深まります。
import pandas as pd
data = {"Column1":[12,34,56,78,90],
"Column2":[23,30,45,50,90]}
df = pd.DataFrame(data)
print("DataFrame is:\n",df)
kurtosis = df.kurt(axis=0)
print("kurtosis is:\n",kurtosis)
skewness = df.skew(axis=0)
print("asymmetry distribution - skewness is:\n",skewness)
出力結果
DataFrame is:
Column1 Column2
0 12 23
1 34 30
2 56 45
3 78 50
4 90 90
kurtosis is:
Column1 -1.526243
Column2 1.948382
dtype: float64
asymmetry distribution - skewness is:
Column1 -0.280389
Column2 1.309355
dtype: float64
-
Pythonで島(図形)の周囲長を求めるアルゴリズムと実装方法
問題の概要 0が空きセル、1がブロック(図形の一部)を表す2値行列を考えます。このとき、図形の周囲長(外周の長さ)を求めるのが課題です。なお、図形の内部に穴は存在しないものとします。 例えば、次のような入力が与えられた場合を考えてみましょう。 0000000111001100111000000 この場合の出力は 14 になります。 解法のアプローチ 基本的な考え方はシンプルです。各セルは最大で4つの辺を外周に持ちますが、隣接するセルも1である場合、その共有される辺は外周に含まれません。そこで、以下の手順で計算を行います。 d := 0(現在の行インデックス)、perimeter := 0(周
-
Pythonでひし形を描画・出力するプログラムの書き方
Pythonのループ処理(繰り返し構文)を活用すると、キーボードのさまざまな文字を使って、整形された図形を簡単に作成できます。その一例が「ひし形(ダイヤモンド形)」です。ひし形の出力には複数のループが必要になります。なぜなら、文字を縦方向と横方向の両方に出力しなければならないからです。さらに、図形は上端から中央に向かって徐々に大きくなり、中央から下端に向かって徐々に小さくなるという特徴もあります。このため、内側にもう1つのforループを含む、2つのforループを使用します。前半のループで上側(頂点から中央まで)を描き、後半のループで下側(中央から底辺まで)を描く仕組みです。サンプルコードdef