Pandas cut 関数
Suraj Joshi
2023年1月30日
-
pandas.cut()
関数の構文 -
例:
pandas.cut()
メソッドを用いて DataFrame の列の値をビンに分散する -
例:
pandas.cut()
メソッドを用いたビンへの値の分配と各ビンへのラベルの割り当て -
例:
pandas.cut()
メソッドでretbins=True
を設定してビンの値を返する
pandas.cut()
関数は、与えられたデータを bins
とも呼ばれる範囲に分散させることができます。
この記事では以下の DataFrame を使うことにします。
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print(df)
出力:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
pandas.cut()
関数の構文
pandas.cut(
x,
bins,
right=True,
labels=None,
retbins=False,
precision=3,
include_lowest=False,
duplicates="raise",
ordered=True,
)
パラメータ
x |
与えられた配列 |
bins |
データをビンに入れる基準 |
right |
論理値。True ならば、ビンの右端の番号も含める。 |
labels |
配列。ビンのラベル。 |
retbins |
ブール値。True ならば、ビンを返します。 |
precision |
整数。ビンを格納して表示する精度 |
ordered |
論理値。True の場合、結果のラベルは |
戻り値
これは配列 x
の各要素のビンの値からなる配列を返します。また、retbins=True
を設定している場合はビンの値も返します。
例:pandas.cut()
メソッドを用いて DataFrame の列の値をビンに分散する
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print("Initial DataFrame:")
print(df, "\n")
df["Age-Range"] = pd.cut(x=df["Age"], bins=[20, 30, 40, 50])
print("DataFrame with Age-Range:")
print(df)
出力:
Initial DataFrame:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
DataFrame with Age-Range:
Name Age Score Age-Range
0 Anish 23 316 (20, 30]
1 Birat 34 322 (30, 40]
2 Chirag 38 332 (30, 40]
3 Kabin 45 330 (40, 50]
4 Sachin 27 325 (20, 30]
データフレーム df
の Age
列の値を、pandas.cut()
メソッドの bins
引数の値を用いて計算した年齢範囲に分離し、最終的に各行の Age-Range
の値を含むデータフレームを表示します。
ここで、(20,30]
は、20 を除き、30 を含む 20 から 30 までの値を表します。
例:pandas.cut()
メソッドを用いたビンへの値の分配と各ビンへのラベルの割り当て
デフォルトでは、各ビンに割り当てられるラベルはビンの範囲になります。カスタムのビンラベルを設定するには、関数 pandas.cut()
の labels
パラメータを用います。
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print("Initial DataFrame:")
print(df, "\n")
bin_labels = labels = ["21 to 30", "31 to 40", "41 to 50"]
df["Age-Range"] = pd.cut(x=df["Age"], bins=[20, 30, 40, 50], labels=bin_labels)
print("DataFrame with Age-Range:")
print(df)
出力:
Initial DataFrame:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
DataFrame with Age-Range:
Name Age Score Age-Range
0 Anish 23 316 21 to 30
1 Birat 34 322 31 to 40
2 Chirag 38 332 31 to 40
3 Kabin 45 330 41 to 50
4 Sachin 27 325 21 to 30
これは Age
カラムの各値をビンに割り当て、それぞれのビンにラベルを追加します。
例:pandas.cut()
メソッドで retbins=True
を設定してビンの値を返する
import pandas as pd
df = pd.DataFrame(
{
"Name": ["Anish", "Birat", "Chirag", "Kabin", "Sachin"],
"Age": [23, 34, 38, 45, 27],
"Score": [316, 322, 332, 330, 325],
}
)
print("Initial DataFrame:")
print(df, "\n")
bin_labels = labels = ["21 to 30", "31 to 40", "41 to 50"]
df["Age-Range"], bin_values = pd.cut(
x=df["Age"], bins=[20, 30, 40, 50], labels=bin_labels, retbins=True
)
print("DataFrame with Age-Range:")
print(df, "\n")
print("The bin values are:")
print(bin_values)
出力:
Initial DataFrame:
Name Age Score
0 Anish 23 316
1 Birat 34 322
2 Chirag 38 332
3 Kabin 45 330
4 Sachin 27 325
DataFrame with Age-Range:
Name Age Score Age-Range
0 Anish 23 316 21 to 30
1 Birat 34 322 31 to 40
2 Chirag 38 332 31 to 40
3 Kabin 45 330 41 to 50
4 Sachin 27 325 21 to 30
The bin values are:
[20 30 40 50]
DataFrame に Age-Range
の値と bin の値を表示します。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn