pandasใใ็งป่กใใไบบๅใ polarsไฝฟ็จใฌใคใ
polarsใฏใPythonใฎ่กจ่จ็ฎใฉใคใใฉใชใงใใPythonใงใฏpandasใใใฎๅ้ใงใใงใซๆฏ้ ็ใจใชใฃใฆใใพใใใpolarsใฏใใใฉใผใใณในไธpandasใใๅชใใฆใใใจใใใพใใๆฌ่จไบใฏpandasใใpolarsใซ็งป่กใใไบบใซใจใใใใ็ฅใฃใฆใใในใใใใคใใฎ็ฅ่ญใจใฆใผในใฑใผในใๆไพใใพใใ
polarsใฏๆดๆฐใๆดป็บใงใ้ ป็นใซๆฐใใ้ขๆฐใฎๅฎ่ฃ ใใใพใซไปๆงๅคๆดใ่กใใใฆใใพใใ้ฝๅบฆใๅ ฌๅผใฎๆๆฐใฎใใญใฅใกใณใใ็ขบ่ชใใใใจใใใใใใใพใใ
ๆฌ่จไบใฎๅ ๅฎนใฏใใผใธใงใณ1.1.0 (2024/7/7)ใง็ขบ่ชใใฆใใพใใใใไปฅๅใฎๆๅใซใคใใฆใฏใใฎ่จไบใฎ็ทจ้ๅฑฅๆญดใๅ็ งใใฆใใ ใใใ
ๅบ็ค
polarsใฎใใผใฟๆง้ ใฏpandasใจๅๆงใงใใไธใคใฎไธๆฌกๅ
้
ๅใใทใชใผใบ๏ผpl.Series๏ผใจๅผใณใพใใใพใใไธใคไปฅไธใฎใทใชใผใบใ้ใพใฃใฆใงใใไบๆฌกๅ
้
ๅใใใผใฟใใฌใผใ ๏ผpl.DataFrame๏ผใจๅผใณใพใใpandasๅๆงใใใผใฟใใฌใผใ ใใใผใใซใจใใฆใฟใใจใใใใใใใฎใทใชใผใบใฏๅใซ็ธๅฝใใพใใ
ใชใpandasใจ้ใใpl.DataFrameใซใฏใคใณใใใฏในๅใฏๅญๅจใใพใใใ
polarsใงใฏใๅๅใฏๆๅญๅใงใชใใใฐใชใใพใใใใพใใๅๅใฎ้่คใ่จฑๅฏใใพใใใใชใใpandasใงใฏๅๅใใคใณใใใฏในใชใใธใงใฏใใซใชใฃใฆใใพใใใpolarsใซใฏใคใณใใใฏในใชใใธใงใฏใใจใใใใฎใฏๅญๅจใใชใใใใๅๅ๏ผDataFrame.columns๏ผใฏใใ ใฎใชในใใงไฟๆใใใฆใใพใใ
ใใผใฟๅ
polarsใฎใทใชใผใบใฏใpandasใฎใใใจๅๆงใใใผใฟๅ๏ผdtype๏ผใๅญๅจใใพใใไปฅไธใฏใใผใฟๅใฎไพใงใใ
| polarsใฎๅ | pandas(Numpy)ใฎ้กไผผใใๅ | ่ชฌๆ |
|---|---|---|
pl.Int8 ~ pl.Int64
|
np.int8 ~ np.int64 ็ญ |
ๆดๆฐ |
pl.UInt8 ~ pl.UInt64
|
np.uint8 ~ np.uint64 ็ญ |
ๆดๆฐ๏ผ็ฌฆๅทใชใ๏ผ |
pl.Float32 / pl.Float64
|
np.float32 / np.float64 ็ญ |
ๆตฎๅๅฐๆฐ |
pl.Boolean |
np.bool / pd.BooleanDtype
|
็ๅฝๅค |
pl.String |
pd.StringDtype |
ๆๅญๅ |
pl.Categorical |
pd.CategoricalDtype |
ใซใใดใชใผ |
pl.Enum |
pd.CategoricalDtype |
ใซใใดใชใผ๏ผไบๅๅฎ็พฉ๏ผ |
pl.List |
- | ใชในใ๏ผๅฏๅค้ท๏ผ |
pl.Array |
- | ใชในใ๏ผๅบๅฎ้ท๏ผ |
pl.Struct |
- | ๆง้ ๅ้ ๅ |
pl.Date |
- | ๆฅไป |
pl.Time |
- | ๆๅป๏ผๆฅไป็กใ๏ผ |
pl.Datetime |
np.datetime64 |
ๆฅๆ |
pl.Duration |
np.timedelta64 |
ๆ้๏ผๆๅปใฎๅทฎ๏ผ |
pl.Object |
np.object_ |
ใชใใธใงใฏใ |
- pandasใงใฏใใใฉใซใใงใฏๆๅญๅใใชใใธใงใฏใใใผใฟๅใงๆฑใใใใซใชใฃใฆใใพใใใใใซๅฏพใใฆpolarsใซใฏๆๅใใๆๅญๅๅฐ็จใฎใใผใฟๅใ็จๆใใใฆใใพใใ
- pandasใงๆฅไปใๆฑใๅ ดๅใฏไธ่ฌ็ใซใฏๆๅปใ0:00:00ใซใใๆฅๆ
np.datetime64ใงไปฃ็จใใพใใใpolarsใซใฏๆฅไปใฎใฟใๆฑใpl.Dateใๅญๅจใใใพใๆๅปใฎใฟใๆฑใpl.Timeใๆฅไป๏ผๆๅปใๆฑใpl.Datetimeใใใใใๅญๅจใใพใใ - ๅๅคๆใกใฝใใใใคใพใpandasใฎ
.astype()ใฏใpolarsใงใฏ.cast()ใงใใ
ใจใฏในใใฌใใทใงใณ๏ผpl.Expr()๏ผ
polarsใซใฏใใใผใฟใใฌใผใ ใปใทใชใผใบใจใฏๅฅใซใจใฏในใใฌใใทใงใณใจใใใฏใฉในใๅญๅจใใพใใใจใฏในใใฌใใทใงใณใฏใไธ้ฃใฎๆไฝใฎๅฝไปคใใ ใจๆใใจใใใงใใใใ
ไพใใฐใใ"A"ๅใ้ธๆโ3ใงๅฒใโ10ใใๅฐใใๅคใฏ2ๅใใฆๅคงใใๅคใฏ2ใงๅฒใโๅๅใ"AA"ใซๅคๆด๏ผใใ๏ผใใจใใใไธ้ฃใฎๆไฝ๏ผใฎๅฝไปค๏ผใใใชใใธใงใฏใใจใใฆๆใคใใจใใงใใพใใใใฎใจใฏในใใฌใใทใงใณใชใใธใงใฏใใใใใผใฟใใฌใผใ ใใทใชใผใบใฎ็นๅฎใฎใกใฝใใใซไธใใใใจใงๅฎ้ใซใใฎๆไฝใ่กใใใพใใ
ใใฎใใใซไธ้ฃใฎๆไฝใๆๅฎใใฆใใๅฎ่กใใใใจใงใใใใฉใผใใณในใฎไธๆใ่ฆ่พผใใพใใ
ใทใชใผใบใจใจใฏในใใฌใใทใงใณใฏๅๅใจใใฆๅใๅๅใฎๅใๆฉ่ฝใฎใกใฝใใใ็จๆใใใฆใใพใใ
ใใกใคใซ่ชญใฟๆธใ
CSVใใกใคใซใฎ่ชญใฟ่พผใฟ
CSVใใกใคใซใฎ่ชญใฟ่พผใฟใฏpandasๅๆงread_csv()้ขๆฐใไฝฟใใพใใ็ฌฌไธๅผๆฐใจใใฆใใกใคใซใในใๅใๅใใใใผใฟใใฌใผใ ใ่ฟใใพใใ
df = pl.read_csv("./example/data.csv")
pandasใฎ้ขๆฐใจใญใผใฏใผใใๆๅฎๆนๆณใ็ฐใชใๅผๆฐใๅญๅจใใพใใฎใงๆณจๆใใฆใใ ใใใไพใใฐใ
| ๅผๆฐ | ๅ | ่ชฌๆ |
|---|---|---|
separator |
str |
ๅใฎๅบๅใ่จๅทใใใใฉใซใใฏ','ใpandasใฎsepใ |
has_header |
bool |
1่ก็ฎใใใใใใฉใใใใใใฉใซใใฏTrueใ |
skip_rows |
int |
ๅ
้ ญใใไฝ่ก่ชญใฟ้ฃใฐใใใpandasใจ้ใList[int]ใๆธกใใใจใฏใงใใพใใใ |
columns |
List[int | str] |
ไฝฟ็จใใๅใpandasใฎuse_colsใ |
new_columns |
List[str] |
ๆฐใใๅๅใใใใใใชใใใกใคใซใ่ชญใฟ่พผใใ ๅ ดๅใใๅ ใฎๅๅใ็ก่ฆใใใๅ ดๅใซไฝฟใใพใใ |
schema_overrides |
Mapping็ญ |
ใใผใฟๅใๅๆฐใจๅใ้ทใใฎใชในใใใๅๅใจใใใซๅฏพๅฟใใใใผใฟๅใฎ่พๆธใชใฉใๆธกใใพใใ |
try_parse_dates |
bool |
pl.Datetimeใซใญใฃในใใใใใฉใใใpandasใฎใใใซ็นๅฎใฎๅใ้ธๆใใใใจใฏใงใใพใใใ |
ใชใใpolarsใซใฏscan_csv()ใจใใ้ขๆฐใใใใพใใๅใๅใๅผๆฐใฏread_csv()้ขๆฐใจใปใผๅใใงใใ
pl.scan_csv(file)
scan_csv()ใฎๆปใๅคใฏDataFrameใงใฏใชใใ้
ๅปถ่ฉไพกใ่กใLazyFrameใงใใLazyFrameใฏ.collect()ใกใฝใใ๏ผdaskใฎ.compute()ใซ็ธๅฝ๏ผใๅฎ่กใใใใพใง่จ็ฎใ่กใใใชใใจใใ็นๅพดใใใใพใใ
ไปใฎ้ ๅใใๅคๆ
pl.DataFrame()ใณใณในใใฉใฏใฟใไฝฟใฃใฆใใผใฟใใฌใผใ ใไฝๆใงใใพใใใใฎใจใschemaๅผๆฐใๆธกใใจๅๅใ่จญๅฎใงใใพใใschema=ๅผๆฐใฏๅๅใฎใชในใใใพใใฏ๏ฝๅๅ๏ผใใผใฟๅ๏ฝใฎ่พๆธใงๆๅฎใใพใใ
rng = np.random.default_rng(0)
df = pl.DataFrame(rng.random((8, 4)), schema="ABCD")
df
# shape: (8, 4)
# โโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ f64 โ f64 โ f64 โ f64 โ
# โโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ 0.636962 โ 0.269787 โ 0.040974 โ 0.016528 โ
# โ 0.81327 โ 0.912756 โ 0.606636 โ 0.729497 โ
# โ 0.543625 โ 0.935072 โ 0.815854 โ 0.002739 โ
# โ 0.857404 โ 0.033586 โ 0.729655 โ 0.175656 โ
# โ 0.863179 โ 0.541461 โ 0.299712 โ 0.422687 โ
# โ 0.02832 โ 0.124283 โ 0.670624 โ 0.64719 โ
# โ 0.615385 โ 0.383678 โ 0.99721 โ 0.980835 โ
# โ 0.685542 โ 0.650459 โ 0.688447 โ 0.388921 โ
# โโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
ใใผใฟใจใใฆ๏ฝๅๅ๏ผ้
ๅ๏ฝใฎ่พๆธใๆธกใใใจใใงใใพใใ้
ๅใฏๅ
จใฆๅใ้ทใใงใใๅฟ
่ฆใใใใพใใใชใใในใซใฉใผๅคใๆธกใใๅ ดๅใฏใใญใผใใญใฃในใใใใพใใ
df = pl.DataFrame(
{
"Integer": [1, 2, 3, 4],
"Float": np.array([1, 2, 3, 4], dtype=float),
"Datetime": [datetime.datetime(2022, 4, 1)] * 4,
"String": ["test", "train", "test", "train"],
}
)
df
# shape: (4, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
ใใผใฟใใฌใผใ ใฎCSVใใกใคใซๅบๅ
ใใผใฟใใฌใผใ ใCSVใใกใคใซใจใใฆๅบๅใใใๅ ดๅใฏใใใผใฟใใฌใผใ ใฎ.write_csv()ใกใฝใใใไฝฟใใพใใใชใใใใใใผใใใกใคใซใฎ1่ก็ฎใจใใฆๅบๅใใชใๅ ดๅใฏinclude_header=Falseใๆๅฎใใพใใ
df.write_csv("./example/data.csv")
ใชใใpolarsใฎCSVใใกใคใซๅบๅ้ขๆฐใฏๆๅญใณใผใใๆๅฎใงใใพใใ๏ผUTF8ใๅผทๅถใใใพใ๏ผใๅฎๆ็็็ฑใงUTF8ใงไฟๅญใใใใจใ็ฆใใใใฆใใๅ ดๅใฏใๆฌกใฎใใใซใใพใใ
with open("./example/data.csv", "w", encoding="sjis") as fw:
fw.write(df.write_csv())
ใใชใใกใ.write_csv()ใกใฝใใใซ็ฌฌไธๅผๆฐ๏ผๆธใ่พผใฟๅ
ใใกใคใซใใน๏ผใไธใใชใใฃใๅ ดๅใๆปใๅคใจใใฆcsvใฎๆๅญๅใใผใฟใ่ฟใใใพใใฎใงใใใใPythonๆจๆบใฎๆนๆณใงใใญในใใใกใคใซใซๆธใ่พผใฟใพใใ
ใใผใฟใใฌใผใ ใฎ่ฆ่ฆ็็ขบ่ช
print(pl.DataFrame)
ๆจๆบใฎprint()้ขๆฐใซใใผใฟใใฌใผใ ใๆธกใใจใๆๅใจๆๅพใฎ5่กใ่กจ็คบใใใพใใ
print(pl.DataFrame({"A": np.arange(100)}))
# shape: (100, 1)
# โโโโโโโ
# โ A โ
# โ --- โ
# โ i64 โ
# โโโโโโโก
# โ 0 โ
# โ 1 โ
# โ 2 โ
# โ 3 โ
# โ 4 โ
# โ โฆ โ
# โ 95 โ
# โ 96 โ
# โ 97 โ
# โ 98 โ
# โ 99 โ
# โโโโโโโ
ใชใใๆๅใจๆๅพใฎ่กใๆฝๅบใใใpandasใจๅๆงใฎ.head()ใจ.tail()ใกใฝใใใๅฎ่ฃ
ใใใฆใใพใใ
.glimpse()ใกใฝใใ
.glimpse()ใกใฝใใใงใฏใๆๅญๅใจใใฆใๅๅใฎๅ
้ ญใฎ่ฆ็ด 10ๅใ่กจ็คบใใใพใใๅๆฐใๅคใๅ ดๅใprint()ใใใใใกใใฎใปใใ่ฆใใใใจใใใฆใใพใใ
print(df.glimpse())
# Rows: 4
# Columns: 4
# $ Integer <i64> 1, 2, 3, 4
# $ Float <f64> 1.0, 2.0, 3.0, 4.0
# $ Datetime <datetime[ฮผs]> 2022-04-01 00:00:00, 2022-04-01 00:00:00, 2022-04-01 00:00:00, 2022-04-01 00:00:00
# $ String <str> 'test', 'train', 'test', 'train'
print(df) # ๆฏ่ผใฎใใๅๆฒ
# shape: (4, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
.describe()ใกใฝใใ
polarsใงใใpandasใจใปใผๅๆงใฎ.describe()ใกใฝใใใไฝฟ็จใใใใจใใงใใพใใ่กจ็คบใใใๆ
ๅ ฑใฏใใใผใฟๆฐใปๆฌ ๆๅคใฎๆฐใปๅนณๅๅคใปๆจๆบๅๅทฎใปๆๅฐๅคใป25%tileๅคใปไธญๅคฎๅคใป75%tileๅคใปๆๅคงๅคใงใใ
df.describe()
# shape: (9, 5)
# โโโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ statistic โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ str โ f64 โ f64 โ str โ str โ
# โโโโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ count โ 4.0 โ 4.0 โ 4 โ 4 โ
# โ null_count โ 0.0 โ 0.0 โ 0 โ 0 โ
# โ mean โ 2.5 โ 2.5 โ 2022-04-01 00:00:00 โ null โ
# โ std โ 1.290994 โ 1.290994 โ null โ null โ
# โ min โ 1.0 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 25% โ 2.0 โ 2.0 โ 2022-04-01 00:00:00 โ null โ
# โ 50% โ 3.0 โ 3.0 โ 2022-04-01 00:00:00 โ null โ
# โ 75% โ 3.0 โ 3.0 โ 2022-04-01 00:00:00 โ null โ
# โ max โ 4.0 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
่กใฎๆฝๅบใปใใฃใซใฟใชใณใฐใปๆกไปถ้ธๆ
[]ใไฝฟใฃใ่กใฎ้ธๆ
่ก้ธๆใฏdf[]ใฎ[]ใซๆดๆฐใๆธกใใใจใง่กใใพใ๏ผPythonๆจๆบใฎใชในใใจๅๆง๏ผใpolarsใซใฏใคใณใใใฏในๅใๅญๅจใใชใใใใpandasใจ้ใ.locใ.ilocใฏๅญๅจใใพใใใ
# ไธ่ก้ธๆ
df[0]
# shape: (1, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
# ่กในใฉใคใน
df[1:3]
# shape: (2, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
.head()ใจ.tail()
.head()ใจ.tail()ใฏpandasใจๅๆงใๆๅใปๆๅพใฎๆฐ่ก๏ผใใใฉใซใใงใฏ5่ก๏ผใๆฝๅบใใพใใ
pl.DataFrame(np.arange(15)).head()
# shape: (5, 1)
# โโโโโโโโโโโโ
# โ column_0 โ
# โ --- โ
# โ i64 โ
# โโโโโโโโโโโโก
# โ 0 โ
# โ 1 โ
# โ 2 โ
# โ 3 โ
# โ 4 โ
# โโโโโโโโโโโโ
pl.DataFrame(np.arange(15)).tail(3)
# shape: (3, 1)
# โโโโโโโโโโโโ
# โ column_0 โ
# โ --- โ
# โ i64 โ
# โโโโโโโโโโโโก
# โ 12 โ
# โ 13 โ
# โ 14 โ
# โโโโโโโโโโโโ
่กใใฃใซใฟใชใณใฐ๏ผ.filter()๏ผ
ๆกไปถใซใใจใฅใใฆ็นๅฎใฎ่กใๆฝๅบใใๅ ดๅใฏ.filter()ใกใฝใใใ็จใใพใใpandasใฎdf[df["column"] > 3]ใฎใใใชๆธใๆนใฏใงใใพใใใ
.filter()ใกใฝใใใงใฏ้ๅธธใใจใฏในใใฌใใทใงใณ๏ผpl.Expr()๏ผใๆธกใใใจใงใใฃใซใฟใชใณใฐใใพใใpandasใฎ.query()ใกใฝใใใซใใไผผใฆใใจใใใใใใใใพใใใไปฅไธใฎไพใงไฝฟ็จใใฆใใpl.col()ใจใฏในใใฌใใทใงใณใฏๅ้ธๆใๆๅณใใ๏ผๅไธๅ้ธๆใฎๅ ดๅใฏ๏ผใทใชใผใบใจๅๆงใฎใกใฝใใใใใงใผใณใใใใจใใงใใพใใ
rng = np.random.default_rng(5)
df_num = pl.DataFrame(rng.integers(0, 10, (6, 3)), schema="ABC")
df_num
# shape: (6, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 6 โ 8 โ 0 โ
# โ 8 โ 4 โ 5 โ
# โ 6 โ 2 โ 9 โ
# โ 0 โ 2 โ 3 โ
# โ 5 โ 4 โ 1 โ
# โ 0 โ 0 โ 0 โ
# โโโโโโโดโโโโโโดโโโโโโ
df_num.filter(pl.col("A") > 5)
# shape: (3, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 6 โ 8 โ 0 โ
# โ 8 โ 4 โ 5 โ
# โ 6 โ 2 โ 9 โ
# โโโโโโโดโโโโโโดโโโโโโ
pandasๅๆงใandๆกไปถใฏ&ใงใorๆกไปถใฏ|ใงใคใชใใพใใ&ใ|ใฏ่จ็ฎๅชๅ
้ ไฝใ้ซใใฎใงใๆฌๅผง()ใฎไฝ็ฝฎใซๆณจๆใใพใใใใ
df_num.filter((pl.col("A") < pl.col("B")) & (pl.col("C") < 5))
# shape: (2, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 6 โ 8 โ 0 โ
# โ 0 โ 2 โ 3 โ
# โโโโโโโดโโโโโโดโโโโโโ
.filter()ใกใฝใใใซใฏๅผๆฐใ่คๆฐไธใใใใจใใงใใใใใใฏandๆกไปถใจใใฆ่งฃ้ใใใพใใ
# ไธใฎไพใจ็ญไพก
df_num.filter(
pl.col("A") < pl.col("B"),
pl.col("C") < 5,
)
# shape: (2, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 6 โ 8 โ 0 โ
# โ 0 โ 2 โ 3 โ
# โโโโโโโดโโโโโโดโโโโโโ
ใญใผใฏใผใๅผๆฐใไธใใใจpl.col(kwarg) == ใจใใฆ่งฃ้ใใใพใใ
df_num.filter(B=2) # `df_num.filter(pl.col("B") == 2)`ใจ็ญไพก
# shape: (2, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 6 โ 2 โ 9 โ
# โ 0 โ 2 โ 3 โ
# โโโโโโโดโโโโโโดโโโโโโ
df_num.filter(pl.col("A") < 1, B=2, C=3)
# shape: (1, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 0 โ 2 โ 3 โ
# โโโโโโโดโโโโโโดโโโโโโ
ใใกใใใใใผใฟใใฌใผใ ใฎ่กๆฐใจๅใ้ทใใฎ็ๅฝๅค้ ๅใๆธกใใใจใใงใใพใใ
df_num.filter([False, True, False, True, True, False])
# shape: (3, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 8 โ 4 โ 5 โ
# โ 0 โ 2 โ 3 โ
# โ 5 โ 4 โ 1 โ
# โโโโโโโดโโโโโโดโโโโโโ
ใชในใใซๅซใพใใใใฉใใใๅคๅฎใใSeries.is_in()
ใทใชใผใบใฎๅๅคใใๅฅใฎใชในใใฎไธญใซๅซใพใใใใฉใใใๅคๅฎใใใซใฏ.is_in()ใกใฝใใใ็จใใพใใpandasใฎ.isin()ใกใฝใใใซ็ธๅฝใใพใใ
df.get_column("Integer").is_in([2, 4, 6])
# shape: (4,)
# Series: 'Integer' [bool]
# [
# false
# true
# false
# true
# ]
df.filter(pl.col("Integer").is_in([2, 4, 6]))
# shape: (2, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
ใฆใใผใฏ่กใป้่ค่ก
.unique()ใกใฝใใใฏใpandasใฎ.drop_duplicates()ใซ็ธๅฝใใๅคใ้่คใใฆใใใใผใฟใๅ้คใใใใจใใงใใพใใ
-
subset=ๅผๆฐ๏ผ่ญๅฅใใๅใๆๅฎใใพใใใใใฉใซใใงใฏใๅ จใฆใฎๅใฎๅคใไธ่ดใใฆใใ่กใฎใฟใๅ้คใใใพใใ -
keep=ๅผๆฐ๏ผใใใฉใซใใฎanyใฏใ้่ค่กใฎใใกไบๆธฌไธๅฏ่ฝใช ใใใใ1่ก ใๆฎใใพใใkeep="first"ใๆๅฎใใใจ้่ค่กใฎใใกๆๅใซๅบ็พใใ่กใๆฎใใใพใใkeep="last"ใๆๅฎใใใจๆๅพใซๅบ็พใใ่กใๆฎใใพใใkeep="none"ใๆๅฎใใใจ้่ค่กใใในใฆๅ้คใใพใใ
rng = np.random.default_rng(0)
df_dup = pl.DataFrame(
{
"a": ["one", "one", "two", "two", "two", "three", "four"],
"b": ["x", "y", "x", "y", "x", "x", "x"],
"c": rng.random(7),
}
)
df_dup.unique(subset=["a", "b"])
# shape: (6, 3)
# โโโโโโโโโฌโโโโโโฌโโโโโโโโโโโ
# โ a โ b โ c โ
# โ --- โ --- โ --- โ
# โ str โ str โ f64 โ
# โโโโโโโโโชโโโโโโชโโโโโโโโโโโก
# โ one โ x โ 0.636962 โ
# โ one โ y โ 0.269787 โ
# โ two โ x โ 0.040974 โ
# โ two โ y โ 0.016528 โ
# โ three โ x โ 0.912756 โ
# โ four โ x โ 0.606636 โ
# โโโโโโโโโดโโโโโโดโโโโโโโโโโโ
df_dup.unique(subset=["a"])
# shape: (4, 3)
# โโโโโโโโโฌโโโโโโฌโโโโโโโโโโโ
# โ a โ b โ c โ
# โ --- โ --- โ --- โ
# โ str โ str โ f64 โ
# โโโโโโโโโชโโโโโโชโโโโโโโโโโโก
# โ one โ x โ 0.636962 โ
# โ two โ x โ 0.040974 โ
# โ three โ x โ 0.912756 โ
# โ four โ x โ 0.606636 โ
# โโโโโโโโโดโโโโโโดโโโโโโโโโโโ
df_dup.unique(subset=["a"], keep="last")
# shape: (4, 3)
# โโโโโโโโโฌโโโโโโฌโโโโโโโโโโโ
# โ a โ b โ c โ
# โ --- โ --- โ --- โ
# โ str โ str โ f64 โ
# โโโโโโโโโชโโโโโโชโโโโโโโโโโโก
# โ one โ y โ 0.269787 โ
# โ two โ x โ 0.81327 โ
# โ three โ x โ 0.912756 โ
# โ four โ x โ 0.606636 โ
# โโโโโโโโโดโโโโโโดโโโโโโโโโโโ
df_dup.unique(subset=["a"], keep="none")
# shape: (2, 3)
# โโโโโโโโโฌโโโโโโฌโโโโโโโโโโโ
# โ a โ b โ c โ
# โ --- โ --- โ --- โ
# โ str โ str โ f64 โ
# โโโโโโโโโชโโโโโโชโโโโโโโโโโโก
# โ three โ x โ 0.912756 โ
# โ four โ x โ 0.606636 โ
# โโโโโโโโโดโโโโโโดโโโโโโโโโโโ
้่คใใใใฉใใใฎ็ๅฝๅคใฏ.is_duplicated()ใง็ขบ่ชใงใใ้ใซใฆใใผใฏใใฉใใใฏ.is_unique()ใง็ขบ่ชใงใใพใใใsubset=ใkeep=ๅผๆฐใๆธกใใใจใฏใงใใพใใใ
df_dup.is_duplicated()
# shape: (7,)
# Series: '' [bool]
# [
# false
# false
# false
# false
# false
# false
# false
# ]
df_dup.is_unique()
# shape: (7,)
# Series: '' [bool]
# [
# true
# true
# true
# true
# true
# true
# true
# ]
ๅ
ใซๅใ็ตใฃใฆใใ.is_duplicated()ใ้ฉ็จใใใใจใงใsubsetๅผๆฐใจๅใๅนๆใๅพใใใพใใ
df_dup.get_column("a").is_duplicated()
# shape: (7,)
# Series: 'a' [bool]
# [
# true
# true
# true
# true
# true
# false
# false
# ]
ๅใฎ้ธๆใจ่ฟฝๅ
.get_column()ใไฝฟใฃใใทใชใผใบใฎ้ธๆ
ใใผใฟใใฌใผใ ๅ
ใฎ็นๅฎใฎใทใชใผใบ๏ผ1ๅ๏ผใ้ธๆใใๅ ดๅใฏใ.get_column()ใกใฝใใใซๅๅใๆธกใใพใ๏ผpandasใฎใใใซdf[col]ใจๆธใใใจใๅฏ่ฝใงใ๏ผใ
df.get_column("Integer")
# shape: (4,)
# Series: 'Integer' [i64]
# [
# 1
# 2
# 3
# 4
# ]
.get_columns()ใไฝฟใฃใใทใชใผใบใฎ้ธๆ
.get_columns()ใฏใใใผใฟใใฌใผใ ใฎๅ
จใฆใฎๅใๅ่งฃใใใทใชใผใบใฎใชในใใซๅคๆใใพใใใใใ็จใใใจใใๅทฆใใX็ช็ฎใฎๅใ๏ผXใฏ0ใฏใใพใ๏ผใฎใทใชใผใบใๅๅพใใใใจใใงใใพใใ
type(df.get_columns())
# list<class 'list'>
df.get_columns()[1]
# shape: (4,)
# Series: 'Float' [f64]
# [
# 1.0
# 2.0
# 3.0
# 4.0
# ]
ใชใใ.get_column_index()ใกใฝใใใซๅๅใๆธกใใจใใใฎๅใๅทฆใใไฝ็ช็ฎใซใใใใๆใใฆใใใพใใ
df.get_column_index("Float")
# 1
.select()ใไฝฟใฃใๅ้ธๆ
ใใผใฟใใฌใผใ ๅ
ใฎ๏ผ1ใคไปฅไธใฎ๏ผ็นๅฎใฎๅใ้ธๆใใๅ ดๅใฏใ.select()ใกใฝใใใ็จใใพใใ
.get_column()ใกใฝใใใจ้ใใๅๅใไธใคๆธกใใๅ ดๅใฎๆปใๅคใฏใ๏ผใทใชใผใบใงใฏใชใ๏ผ1ๅใฎใใผใฟใใฌใผใ ใงใใ
df.select("Integer")
# shape: (4, 1)
# โโโโโโโโโโโ
# โ Integer โ
# โ --- โ
# โ i64 โ
# โโโโโโโโโโโก
# โ 1 โ
# โ 2 โ
# โ 3 โ
# โ 4 โ
# โโโโโโโโโโโ
ๅๅใ่คๆฐๆธกใใๅ ดๅใใพใใฏๅๅใฎใชในใใๆธกใใๅ ดๅใ2ๅไปฅไธใฎใใผใฟใใฌใผใ ใซใชใใพใใ
df.select("Integer", "Float")
# shape: (4, 2)
# โโโโโโโโโโโฌโโโโโโโโ
# โ Integer โ Float โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโโโโชโโโโโโโโก
# โ 1 โ 1.0 โ
# โ 2 โ 2.0 โ
# โ 3 โ 3.0 โ
# โ 4 โ 4.0 โ
# โโโโโโโโโโโดโโโโโโโโ
่คๆฐใฎใจใฏในใใฌใใทใงใณใๆธกใใใจใใงใใพใใในใซใฉใผๅคใๆปใๅคใซใชใใใใชใจใฏในใใฌใใทใงใณใฏใใญใผใใญใฃในใใใใพใใ
df.select(pl.col("Integer"), pl.col("Float"))
# shape: (4, 2)
# โโโโโโโโโโโฌโโโโโโโโ
# โ Integer โ Float โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโโโโชโโโโโโโโก
# โ 1 โ 1.0 โ
# โ 2 โ 2.0 โ
# โ 3 โ 3.0 โ
# โ 4 โ 4.0 โ
# โโโโโโโโโโโดโโโโโโโโ
df.select(pl.col("Integer")*2, pl.col("Float").sum())
# shape: (4, 2)
# โโโโโโโโโโโฌโโโโโโโโ
# โ Integer โ Float โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโโโโชโโโโโโโโก
# โ 2 โ 10.0 โ
# โ 4 โ 10.0 โ
# โ 6 โ 10.0 โ
# โ 8 โ 10.0 โ
# โโโโโโโโโโโดโโโโโโโโ
ๅใฎ่ฟฝๅ
ใใผใฟใใฌใผใ ใซๅใ่ฟฝๅ ใใๅ ดๅใฏ.with_columns()ใไฝฟใใพใ๏ผpandasใฎ.assign()ใซไผผใฆใใพใ๏ผใ
ๅบๆฌ็ใซใๆขๅญใฎๅใซ็นๅฎใฎๆไฝใ่กใใใจใงๆฐใใๅใใคใใๅ ดๅใฏใใทใชใผใบๆไฝใงใฏใชใใจใฏในใใฌใใทใงใณใไฝฟใใใจใๆจๅฅจใใพใใไพใใฐใไปฅไธใฎไบใคใฎๆไฝใฏ็ตๆใฏๅใใงใใใๅพ่
ใฎใจใฏในใใฌใใทใงใณใ็จใใๆไฝใฎๆนใใกใขใชใป่จ็ฎ้ใฎ่ฆณ็นใใใฏๅน็ใ่ฏใใงใ๏ผใชใใไปฅไธใฎไพใง็จใใฆใใ.alias()ใฏ้ธๆใใใๅใฎๅๅใฎๅคๆดใ่กใใกใฝใใใงใ๏ผใ
# ๆฐใใใทใชใผใบใฎไฝๆใไผดใๆไฝ
new_seires = (df.get_column("Integer") * 2).alias("Integer2")
df.with_columns(new_seires)
# shape: (4, 5)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ Integer2 โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ i64 โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ 2 โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ 4 โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ 6 โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ 8 โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโ
# ใจใฏในใใฌใใทใงใณใซใใๆไฝ
new_column = (pl.col("Integer") * 2).alias("Integer2")
df.with_columns(new_column)
# shape: (4, 5)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ Integer2 โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ i64 โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ 2 โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ 4 โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ 6 โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ 8 โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโ
ๆขๅญใฎๅๅใจๅๅใฎๅใ่ฟฝๅ ใใใจใ่ฟฝๅ ใงใฏใชใๆดๆฐใซใชใใพใใ
df.with_columns(pl.col("Integer") * 100)
# shape: (4, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 100 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 200 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 300 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 400 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
.with_columns()ใซใจใฏในใใฌใใทใงใณใ่คๆฐๆธกใใจใไธๅบฆใซ่คๆฐใฎๅใ่ฟฝๅ ใงใใพใใ
df.with_columns(
pl.sum("Integer").alias("Integer2"), (pl.col("Float") * 100).alias("Arange")
)
# shape: (4, 6)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ Integer2 โ Arange โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ i64 โ f64 โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ 10 โ 100.0 โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ 10 โ 200.0 โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ 10 โ 300.0 โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ 10 โ 400.0 โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโ
pandasใฎ.assign()ใจๅๆงใซใๆฐใใๅๅใใญใผใฏใผใๅผๆฐใจใใฆๆๅฎใใใใจใใงใใพใใ
df.with_columns(
Integer2=pl.sum("Integer"),
Arange=pl.col("Float") * 100
)
# shape: (4, 6)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ Integer2 โ Arange โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ i64 โ f64 โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ 10 โ 100.0 โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ 10 โ 200.0 โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ 10 โ 300.0 โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ 10 โ 400.0 โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโ
.with_row_index()ใกใฝใใใฏใๅทฆ็ซฏใซ0ๅงใพใใฎๆดๆฐๅใindexใ๏ผๅๅใฏname=ๅผๆฐใงๆๅฎๅฏ่ฝ๏ผใ่ฟฝๅ ใใพใใๆ่ฆ็ใซpandasใฎ.reset_index()ใซไผผใฆใใใใใใใพใใใ
df.with_row_count()
# shape: (4, 5)
# โโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ index โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ u32 โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโชโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 0 โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 1 โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 2 โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 3 โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโดโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
ใชใ.select()ใงใๅใฎ่ฟฝๅ ใฏๅฏ่ฝใงใใๆฌกใฎไพใงไฝฟ็จใใใฆใใpl.arange()ใฏใnp.arange()ใpd.RangeIndex()ใซ็ธๅฝใใใ็ญๅทฎๆฐๅใไฝๆใใใจใฏในใใฌใใทใงใณใงใใ
df.select(pl.arange(0, df.height).alias("index"), pl.all())
# shape: (4, 5)
# โโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ index โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ u32 โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโชโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 0 โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 1 โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 2 โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 3 โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโดโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
ๅบ็ค็ใชๆไฝใจๆผ็ฎ
ๅๅๆผ็ฎ
ในใซใฉใผๅคใจใฎๅๅๆผ็ฎใฏNumPyใpandasใจๅๆงใซๅไฝใใพใใ
rng = np.random.default_rng(0)
df_num = pl.DataFrame(rng.integers(0, 10, (6, 3)), schema="ABC")
df_num
# shape: (6, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 8 โ 6 โ 5 โ
# โ 2 โ 3 โ 0 โ
# โ 0 โ 0 โ 1 โ
# โ 8 โ 6 โ 9 โ
# โ 5 โ 6 โ 9 โ
# โ 7 โ 6 โ 5 โ
# โโโโโโโดโโโโโโดโโโโโโ
df_num + 2
# shape: (6, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 10 โ 8 โ 7 โ
# โ 4 โ 5 โ 2 โ
# โ 2 โ 2 โ 3 โ
# โ 10 โ 8 โ 11 โ
# โ 7 โ 8 โ 11 โ
# โ 9 โ 8 โ 7 โ
# โโโโโโโดโโโโโโดโโโโโโ
df_num * 2
# shape: (6, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 16 โ 12 โ 10 โ
# โ 4 โ 6 โ 0 โ
# โ 0 โ 0 โ 2 โ
# โ 16 โ 12 โ 18 โ
# โ 10 โ 12 โ 18 โ
# โ 14 โ 12 โ 10 โ
# โโโโโโโดโโโโโโดโโโโโโ
ในใไน**ใฏใทใชใผใบใซๅฏพใใฆใฎใฟๅไฝใใพใใใใผใฟใใฌใผใ ใฎใในใฆใฎ่ฆ็ด ใซในใไน่จ็ฎใใใใๅ ดๅใฏ.select()ใกใฝใใใจใจใฏในใใฌใใทใงใณใไฝฟใใพใใ
df_num.get_column("A") ** 2
# shape: (6,)
# Series: 'A' [i64]
# [
# 64
# 4
# 0
# 64
# 25
# 49
# ]
df_num.select(pl.all().pow(2))
# shape: (6, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 64 โ 36 โ 25 โ
# โ 4 โ 9 โ 0 โ
# โ 0 โ 0 โ 1 โ
# โ 64 โ 36 โ 81 โ
# โ 25 โ 36 โ 81 โ
# โ 49 โ 36 โ 25 โ
# โโโโโโโดโโโโโโดโโโโโโ
ๅใ้ทใ๏ผ่กๆฐ๏ผใงใใใฐใใใผใฟใใฌใผใ ใจใทใชใผใบใใทใชใผใบๅๅฃซใฎ่จ็ฎใๅฏ่ฝใงใใ
df_num + df_num.get_column("B")
# shape: (6, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 14 โ 12 โ 11 โ
# โ 5 โ 6 โ 3 โ
# โ 0 โ 0 โ 1 โ
# โ 14 โ 12 โ 15 โ
# โ 11 โ 12 โ 15 โ
# โ 13 โ 12 โ 11 โ
# โโโโโโโดโโโโโโดโโโโโโ
df_num.get_column("A") + df_num.get_column("B")
# shape: (6,)
# Series: 'A' [i64]
# [
# 14
# 5
# 0
# 14
# 11
# 13
# ]
ๆฏ่ผๆผ็ฎ
ใใผใฟใใฌใผใ ใซๅฏพใใฆ็ดๆฅๆฏ่ผๆผ็ฎใฏใงใใพใใ๏ผ.select()ใกใฝใใใจใจใฏในใใฌใใทใงใณใไฝฟใใพใ๏ผใใทใชใผใบใฏ็ดๆฅๆฐๅคใจๆฏ่ผๅฏ่ฝใงใใ
df_num.get_column("A") == 0
# shape: (6,)
# Series: 'A' [bool]
# [
# false
# false
# true
# false
# false
# false
# ]
df_num.get_column("A") > 2
# shape: (6,)
# Series: 'A' [bool]
# [
# true
# false
# false
# true
# true
# true
# ]
ๅใ้ทใใฎใทใชใผใบๅๅฃซใๆฏ่ผใงใใพใใ
df_num.get_column("A") > df_num.get_column("B")
# shape: (6,)
# Series: '' [bool]
# [
# true
# false
# false
# true
# false
# true
# ]
็ญไพกๆฏ่ผ==ใฏๆฐๅคไปฅๅคใงใๅฏ่ฝใงใใ
pl.Series(["foo", "bar", "baz"]) == pl.Series(["foo", "bar", "qux"])
# shape: (3,)
# Series: '' [bool]
# [
# true
# true
# false
# ]
้่จ้ขๆฐ
.sum()ใ.mean()็ญใฎ้ขๆฐใฏๅ๏ผๅ็ด๏ผๆนๅใซ้ฉ็จใงใใพใใ
df_num.sum()
# shape: (1, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 30 โ 27 โ 29 โ
# โโโโโโโดโโโโโโดโโโโโโ
df_num.mean()
# shape: (1, 3)
# โโโโโโโฌโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ f64 โ f64 โ f64 โ
# โโโโโโโชโโโโโโชโโโโโโโโโโโก
# โ 5.0 โ 4.5 โ 4.833333 โ
# โโโโโโโดโโโโโโดโโโโโโโโโโโ
df_num.quantile(0.5)
# shape: (1, 3)
# โโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ f64 โ f64 โ f64 โ
# โโโโโโโชโโโโโโชโโโโโโก
# โ 7.0 โ 6.0 โ 5.0 โ
# โโโโโโโดโโโโโโดโโโโโโ
ใชใใ่ก๏ผๆฐดๅนณ๏ผๆนๅใฎ้็ดใฏ.sum_horizontal()็ญใฎโ_horizontalโใกใฝใใใไฝฟใใใใใๆ่ปใซ่ค้ใช่จ็ฎใ่กใๅ ดๅใฏ.fold()ใกใฝใใใไฝฟใใพใใๅพ่
ใฏใใใใญPythonๆจๆบใฎfunctools.reduce()ใซๅฏพๅฟใใพใใ
df_num.fold(lambda a, b: a+b)
# shape: (6,)
# Series: 'A' [i64]
# [
# 19
# 5
# 1
# 23
# 20
# 18
# ]
# ไปฅไธใซ็ญใใ
from functools import reduce
reduce(lambda a, b: a+b, df_num)
ๅบ็พๅๆฐใ้่จใใ.value_counts()
ใทใชใผใบใฎ.value_counts()ใฏpandasใจๅๆงใซๆฑใใใจใใงใใพใใใชใใใผใฟใใฌใผใ ใซใฏ.value_counts()ใกใฝใใใฏใใใพใใ๏ผๅ็ญใฎ็ตๆใฏ.groupby(pl.all()).len()ใงๅพใใใจใใงใใพใ๏ผใ
df_num["A"].value_counts()
# shape: (5, 2)
# โโโโโโโฌโโโโโโโโ
# โ A โ count โ
# โ --- โ --- โ
# โ i64 โ u32 โ
# โโโโโโโชโโโโโโโโก
# โ 2 โ 1 โ
# โ 8 โ 2 โ
# โ 0 โ 1 โ
# โ 5 โ 1 โ
# โ 7 โ 1 โ
# โโโโโโโดโโโโโโโโ
็ตๆใฎใใผใฟใใฌใผใ ใฏใฉใฎๅใซใใฃใฆใใฝใผใใใใฆใใพใใใsort=Trueใๆๅฎใใใจใๅบ็พๅๆฐๅคใ้ ใงใฝใผใใใใพใ๏ผๅคใฎๅใงใฝใผใใใพใใฏๅบ็พๅๆฐๅฐใชใ้ ใงใฝใผใใใใๅ ดๅใฏ.sort()ใกใฝใใใ็ถใใพใใใ๏ผใ
df_num["A"].value_counts(sort=True)
# shape: (5, 2)
# โโโโโโโฌโโโโโโโโ
# โ A โ count โ
# โ --- โ --- โ
# โ i64 โ u32 โ
# โโโโโโโชโโโโโโโโก
# โ 8 โ 2 โ
# โ 2 โ 1 โ
# โ 0 โ 1 โ
# โ 5 โ 1 โ
# โ 7 โ 1 โ
# โโโโโโโดโโโโโโโโ
ใชใใใจใฏในใใฌใใทใงใณใซๅฏพใใ.value_counts()ใฏใๆง้ ๅ้
ๅใ่ฟใใพใใ
df_num.select(pl.col("A").value_counts())
# shape: (5, 1)
# โโโโโโโโโโโโโ
# โ A โ
# โ --- โ
# โ struct[2] โ
# โโโโโโโโโโโโโก
# โ {0,1} โ
# โ {8,2} โ
# โ {5,1} โ
# โ {7,1} โ
# โ {2,1} โ
# โโโโโโโโโโโโโ
ๅๆไฝ๏ผใจใฏในใใฌใใทใงใณใฎไธปใชไฝฟใๆน
ใทใชใผใบ๏ผๅ ดๅใซใใฃใฆใฏใใผใฟใใฌใผใ ๏ผใซใชใใใใฎๆไฝใใใๅ ดๅใฏใจใฏในใใฌใใทใงใณใไธใใใปใใไพฟๅฉใงใใ
ๅ้ธๆใปๆๅฎ๏ผpl.col()
ๅ้ธๆใฏpl.col()ใซๅๅใๆธกใใใจใง่กใใพใใ
df = pl.DataFrame(
{
"Integer": [1, 2, 3, 4],
"Float": np.array([1, 2, 3, 4], dtype=float),
"Datetime": [datetime.datetime(2022, 4, 1)] * 4,
"String": ["test", "train", "test", "train"],
}
)
df.select(pl.col("String"))
# shape: (4, 1)
# โโโโโโโโโโ
# โ String โ
# โ --- โ
# โ str โ
# โโโโโโโโโโก
# โ test โ
# โ train โ
# โ test โ
# โ train โ
# โโโโโโโโโโ
ๅๅใ่คๆฐๆธกใใจใ่คๆฐๅใใพใจใใฆ้ธๆใงใใพใใ
df.select(pl.col("String", "Integer"))
# shape: (4, 2)
# โโโโโโโโโโฌโโโโโโโโโโ
# โ String โ Integer โ
# โ --- โ --- โ
# โ str โ i64 โ
# โโโโโโโโโโชโโโโโโโโโโก
# โ test โ 1 โ
# โ train โ 2 โ
# โ test โ 3 โ
# โ train โ 4 โ
# โโโโโโโโโโดโโโโโโโโโโ
ๅๅใ"^ ... $"ใงๅฒใใจๆญฃ่ฆ่กจ็พใไฝฟใใพใใ
df.select(pl.col(r"^[DS].+$"))
# shape: (4, 2)
# โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Datetime โ String โ
# โ --- โ --- โ
# โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 2022-04-01 00:00:00 โ test โ
# โ 2022-04-01 00:00:00 โ train โ
# โ 2022-04-01 00:00:00 โ test โ
# โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
็นๅฎใฎใใผใฟๅใฎๅใ้ธๆใใใใจใใงใใพใใ
df.select(pl.col(pl.Int64))
# shape: (4, 1)
# โโโโโโโโโโโ
# โ Integer โ
# โ --- โ
# โ i64 โ
# โโโโโโโโโโโก
# โ 1 โ
# โ 2 โ
# โ 3 โ
# โ 4 โ
# โโโโโโโโโโโ
pl.all()ใใพใใฏpl.col("*")ใงใในใฆใฎๅใ้ธๆใใพใใ
df.select(pl.all())
# shape: (4, 4)
# โโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Integer โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 1 โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 2 โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 3 โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 4 โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
df.select(pl.col("*"))
# ๏ผๅใ็ตๆ๏ผ
pl.exclude()ใฏๆๅฎใใๅไปฅๅคใฎใในใฆใ้ธๆใใพใใpl.col()ใจๅๆงใซใชในใใๆญฃ่ฆ่กจ็พใใคใใใใจใใงใใพใใ
df.select(pl.exclude("Integer"))
# shape: (4, 3)
# โโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโ
# โ Float โ Datetime โ String โ
# โ --- โ --- โ --- โ
# โ f64 โ datetime[ฮผs] โ str โ
# โโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโก
# โ 1.0 โ 2022-04-01 00:00:00 โ test โ
# โ 2.0 โ 2022-04-01 00:00:00 โ train โ
# โ 3.0 โ 2022-04-01 00:00:00 โ test โ
# โ 4.0 โ 2022-04-01 00:00:00 โ train โ
# โโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโ
ใพใใpl.selectorsใไฝฟใใจใใใซ่ค้ใชๆกไปถใ็ดๆ็ใซๆๅฎใงใใพใใ
ๅๅใฎๅคๆด
ๅๅใไปปๆใฎๆๅญๅใซๅคๆดใใๅ ดๅใฏ.alias()ใไฝฟใใพใใpolarsใงใฏๅๅใฎ้่คใ่จฑใใชใใฎใงใใไฝฟใใพใใ.alias()ใฏpl.col()ใงไบๅไปฅไธ้ธๆใใฆใใๅ ดๅใฏไฝฟ็จใงใใพใใใ
df.select(pl.col("Integer").alias("ABC"), pl.col("Integer").alias("DEF"))
# shape: (4, 2)
# โโโโโโโฌโโโโโโ
# โ ABC โ DEF โ
# โ --- โ --- โ
# โ i64 โ i64 โ
# โโโโโโโชโโโโโโก
# โ 1 โ 1 โ
# โ 2 โ 2 โ
# โ 3 โ 3 โ
# โ 4 โ 4 โ
# โโโโโโโดโโโโโโ
.name.prefix()ใจ.name.suffix()ใงๅๅใฎๅๅพใซไปปๆใฎๆๅญๅใใคใชใใใใจใใงใใพใใ
df.select(
pl.col("Integer", "Float").name.prefix("Col_"),
pl.col("String").name.suffix("_col"),
)
# shape: (4, 3)
# โโโโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโโ
# โ Col_Integer โ Col_Float โ String_col โ
# โ --- โ --- โ --- โ
# โ i64 โ f64 โ str โ
# โโโโโโโโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโโก
# โ 1 โ 1.0 โ test โ
# โ 2 โ 2.0 โ train โ
# โ 3 โ 3.0 โ test โ
# โ 4 โ 4.0 โ train โ
# โโโโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโโ
ใฝใผใใปไธฆใณๆฟใ
ใฝใผใใฏ.sort()ใไฝฟใใพใใ
df_unsort = pl.DataFrame(
{
"col1": ["A", "A", "B", None, "D", "C"],
"col2": [2, 1, 9, 8, 7, 4],
"col3": [0, 1, 9, 4, 2, 3],
"col4": ["a", "B", "c", "D", "e", "F"],
}
)
# shape: (6, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโ
# โ col1 โ col2 โ col3 โ col4 โ
# โ --- โ --- โ --- โ --- โ
# โ str โ i64 โ i64 โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโก
# โ A โ 2 โ 0 โ a โ
# โ A โ 1 โ 1 โ B โ
# โ B โ 9 โ 9 โ c โ
# โ null โ 8 โ 4 โ D โ
# โ D โ 7 โ 2 โ e โ
# โ C โ 4 โ 3 โ F โ
# โโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโ
df_unsort.select(pl.col("col1").sort())
# shape: (6, 1)
# โโโโโโโโ
# โ col1 โ
# โ --- โ
# โ str โ
# โโโโโโโโก
# โ null โ
# โ A โ
# โ A โ
# โ B โ
# โ C โ
# โ D โ
# โโโโโโโโ
pl.col()็ญใง่คๆฐๅ้ธๆใใฆใใๅ ดๅใงใใใฝใผใใฏ ๅใใจใซ็ฌ็ซใใฆ ่กใใใใฎใงๆณจๆใใฆใใ ใใใ
df_unsort.select(pl.col("col1", "col2").sort())
# shape: (6, 2)
# โโโโโโโโฌโโโโโโโ
# โ col1 โ col2 โ
# โ --- โ --- โ
# โ str โ i64 โ
# โโโโโโโโชโโโโโโโก
# โ null โ 1 โ
# โ A โ 2 โ
# โ A โ 4 โ
# โ B โ 7 โ
# โ C โ 8 โ
# โ D โ 9 โ
# โโโโโโโโดโโโโโโโ
็นๅฎใฎๅใซๆฒฟใฃใฆ่คๆฐๅใใฝใผใใใ๏ผๅ่กๅ
ใ็ถญๆใใฆใฝใผใใใ๏ผใซใฏ.sort_by()ใไฝฟ็จใใพใใใญใผใ่คๆฐๆๅฎใใใใจใใงใใพใใ
df_unsort.select(pl.col("col1", "col2").sort_by("col1"))
# shape: (6, 2)
# โโโโโโโโฌโโโโโโโ
# โ col1 โ col2 โ
# โ --- โ --- โ
# โ str โ i64 โ
# โโโโโโโโชโโโโโโโก
# โ null โ 8 โ
# โ A โ 2 โ
# โ A โ 1 โ
# โ B โ 9 โ
# โ C โ 4 โ
# โ D โ 7 โ
# โโโโโโโโดโโโโโโโ
df_unsort.select(pl.col("col3").sort_by("col1", "col2"))
# shape: (6, 1)
# โโโโโโโโ
# โ col3 โ
# โ --- โ
# โ i64 โ
# โโโโโโโโก
# โ 4 โ
# โ 1 โ
# โ 0 โ
# โ 9 โ
# โ 3 โ
# โ 2 โ
# โโโโโโโโ
.sort()ใฏใใใฉใซใใงใฏๆ้ ใฝใผใใงใใdescending=Trueใๆๅฎใใใจ้้ ใซใชใใพใใๆ้ ใป้้ ใซใใใใใ ๆฌ ๆๅคใฏๅ
้ ญ ใซไธฆในใใใพใใๆฌ ๆๅคใๆๅพใซไธฆในใใซใฏnulls_last=Trueใๆๅฎใใพใใ
df_unsort.select(
pl.col("col1").sort().alias("default"),
pl.col("col1").sort(descending=True).alias("desc"),
pl.col("col1").sort(nulls_last=True).alias("nlast"),
pl.col("col1").sort(descending=True, nulls_last=True).alias("desc_nlast"),
)
# shape: (6, 4)
# โโโโโโโโโโโฌโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโ
# โ default โ desc โ nlast โ desc_nlast โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโโโโโชโโโโโโโชโโโโโโโโชโโโโโโโโโโโโโก
# โ null โ null โ A โ D โ
# โ A โ D โ A โ C โ
# โ A โ C โ B โ B โ
# โ B โ B โ C โ A โ
# โ C โ A โ D โ A โ
# โ D โ A โ null โ null โ
# โโโโโโโโโโโดโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโ
.reverse()ใฏใๅใไธไธ้ใซไธฆใณๆฟใใพใ๏ผใคใพใในใฉใคใน่จๆณใงใใ[::-1]๏ผใ
df_unsort.select(pl.col("col4").reverse())
# shape: (6, 1)
# โโโโโโโโ
# โ col4 โ
# โ --- โ
# โ str โ
# โโโโโโโโก
# โ F โ
# โ e โ
# โ D โ
# โ c โ
# โ B โ
# โ a โ
# โโโโโโโโ
้่จ่จ็ฎ
ๅ้ธๆๅพใ.sum()ใง็ทๅใ่จ็ฎใใพใใ
df.select(pl.col("Integer").sum())
# shape: (1, 1)
# โโโโโโโโโโโ
# โ Integer โ
# โ --- โ
# โ i64 โ
# โโโโโโโโโโโก
# โ 10 โ
# โโโโโโโโโโโ
pl.col(ๅๅ).sum()ใฏใ็็ฅใใฆpl.sum(ๅๅ)ใจๆธใใใจใใงใใพใใ
df.select(pl.sum("Integer"))
# shape: (1, 1)
# โโโโโโโโโโโ
# โ Integer โ
# โ --- โ
# โ i64 โ
# โโโโโโโโโโโก
# โ 10 โ
# โโโโโโโโโโโ
.sum()ไปฅๅคใซใๆงใ
ใช้ขๆฐใใใใพใใ
df.select(
pl.count("Integer").alias("count"),
pl.n_unique("Integer").alias("n_unique"),
pl.max("Integer").alias("max"),
pl.min("Integer").alias("min"),
pl.mean("Integer").alias("mean"),
pl.median("Integer").alias("median"),
pl.quantile("Integer", 0.5).alias("50%tile"),
pl.std("Integer").alias("std"),
pl.var("Integer").alias("var"),
)
# shape: (1, 9)
# โโโโโโโโโฌโโโโโโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ count โ n_unique โ max โ min โ ... โ median โ 50%tile โ std โ var โ
# โ --- โ --- โ --- โ --- โ โ --- โ --- โ --- โ --- โ
# โ u32 โ u32 โ i64 โ i64 โ โ f64 โ f64 โ f64 โ f64 โ
# โโโโโโโโโชโโโโโโโโโโโชโโโโโโชโโโโโโชโโโโโโชโโโโโโโโโชโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ 4 โ 4 โ 4 โ 1 โ ... โ 2.5 โ 3.0 โ 1.290994 โ 1.666667 โ
# โโโโโโโโโดโโโโโโโโโโโดโโโโโโดโโโโโโดโโโโโโดโโโโโโโโโดโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
.over()ใ้ฉ็จใใใจใฐใซใผใใใจใฎ่จ็ฎๅคใ่ฟใใพใ๏ผpandasใฎgroupby.transform()๏ผใ
df.select(pl.col("Integer", "Float").sum().over("String"))
# shape: (4, 2)
# โโโโโโโโโโโฌโโโโโโโโ
# โ Integer โ Float โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโโโโชโโโโโโโโก
# โ 4 โ 4.0 โ
# โ 6 โ 6.0 โ
# โ 4 โ 4.0 โ
# โ 6 โ 6.0 โ
# โโโโโโโโโโโดโโโโโโโโ
ๆกไปถๅๅฒ๏ผwhen()
ๆกไปถๅๅฒ๏ผnp.where()ใซ็ธๅฝใใใใฎ๏ผใฏwhen(ๆกไปถๆ).then(Trueใฎๅ ดๅ).otherwise(Flaseใฎๅ ดๅ)ใจใใ็นๆฎใชใใงใผใณใกใฝใใใซใใฃใฆ่กใใพใใ
df.select(
pl.when(pl.col("Integer") > 2).then(pl.lit("big")).otherwise(pl.lit("small"))
)
# shape: (4, 1)
# โโโโโโโโโโโ
# โ literal โ
# โ --- โ
# โ str โ
# โโโโโโโโโโโก
# โ small โ
# โ small โ
# โ big โ
# โ big โ
# โโโโโโโโโโโ
df.select(
pl.when(pl.col("Integer") > 2)
.then(pl.col("String").str.to_uppercase())
.otherwise(pl.col("String").str.replace_all(r".", "x"))
)
# shape: (4, 1)
# โโโโโโโโโโ
# โ String โ
# โ --- โ
# โ str โ
# โโโโโโโโโโก
# โ xxxx โ
# โ xxxxx โ
# โ TEST โ
# โ TRAIN โ
# โโโโโโโโโโ
่คๆฐใฎๆกไปถใซใใฃใฆ็ฐใชใ็ตๆใจใใใๅ ดๅ๏ผNumPyใฎnp.select()ใใExcelใฎIFS()ใฎใใใซ๏ผใwhen().then().when().then().....when().then().otherwise()ใจใใพใใ
df.select(
pl.when(pl.col("Integer") == 1)
.then(pl.lit("one"))
.when(pl.col("Integer") == 2)
.then(pl.lit("two"))
.when(pl.col("Integer") == 3)
.then(pl.lit("three"))
.otherwise(pl.lit("other"))
)
# shape: (4, 1)
# โโโโโโโโโโโ
# โ literal โ
# โ --- โ
# โ str โ
# โโโโโโโโโโโก
# โ one โ
# โ two โ
# โ three โ
# โ other โ
# โโโโโโโโโโโ
pl.coalesce()้ขๆฐใฏใไธใใใใๅใไธใใ่ชญใฟ่พผใใงใNoneใฎๅ ดๅใฏๆฌกใฎๅใงไธๆธใใใพใใ
new_column = pl.coalesce(
pl.when(pl.col("Integer") == 1).then(pl.lit("one")).otherwise(None),
pl.when(pl.col("Integer") == 2).then(pl.lit("two")).otherwise(None),
pl.when(pl.col("Integer") == 3).then(pl.lit("three")).otherwise(pl.lit("other")),
)
df.select(new_column)
# shape: (4, 1)
# โโโโโโโโโโโ
# โ literal โ
# โ --- โ
# โ str โ
# โโโโโโโโโโโก
# โ one โ
# โ two โ
# โ three โ
# โ other โ
# โโโโโโโโโโโ
ใชใใpolarsใซใใwhere()ใกใฝใใใฏใๅใชใfilter()ใฎ็ฐๅใงใๆกไปถๆใไธใใใจ่กใใฃใซใฟใชใณใฐใใพใใ
df.select(pl.col("Float").where(pl.col("Integer") > 2))
# shape: (2, 1)
# โโโโโโโโโ
# โ Float โ
# โ --- โ
# โ f64 โ
# โโโโโโโโโก
# โ 3.0 โ
# โ 4.0 โ
# โโโโโโโโโ
่คๆฐใฎใใผใฟใใฌใผใ ใฎ็ตๅใปใใผใธ
pl.concat()ใซใใ็ตๅ๏ผในใฟใใฏใป้ฃ็ต๏ผ
pl.concat()้ขๆฐใไฝฟใฃใฆใ่คๆฐใฎใใผใฟใใฌใผใ ใ็ตๅใใใใจใใงใใพใใ
ใใใฉใซใใงใฏใใใผใฟใใฌใผใ ใnp.vstack()ใฎใใใซ็ธฆใซ็ตๅใใพใใใใฎๆไฝใใใๅ ดๅใฏใ็ตๅๅ
ใฎใใผใฟใใฌใผใ ๅๅฃซใฏๅๆฐใจๅๅใไธ่ดใใฆใใๅฟ
่ฆใใใใพใใ
df1 = pl.DataFrame(
{"A": ["A0", "A1"], "B": ["B0", "B1"], "C": ["C0", "C1"], "D": ["D0", "D1"]}
)
df2 = pl.DataFrame(
{"A": ["A2", "A3"], "B": ["B2", "B3"], "C": ["C2", "C3"], "D": ["D2", "D3"]}
)
df3 = pl.DataFrame(
{"A": ["A4", "A5"], "B": ["B4", "B5"], "C": ["C4", "C5"], "D": ["D4", "D5"]}
)
df1
# shape: (2, 4)
# โโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโชโโโโโโชโโโโโโชโโโโโโก
# โ A0 โ B0 โ C0 โ D0 โ
# โ A1 โ B1 โ C1 โ D1 โ
# โโโโโโโดโโโโโโดโโโโโโดโโโโโโ
pl.concat([df1, df2, df3])
# shape: (6, 4)
# โโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโชโโโโโโชโโโโโโชโโโโโโก
# โ A0 โ B0 โ C0 โ D0 โ
# โ A1 โ B1 โ C1 โ D1 โ
# โ A2 โ B2 โ C2 โ D2 โ
# โ A3 โ B3 โ C3 โ D3 โ
# โ A4 โ B4 โ C4 โ D4 โ
# โ A5 โ B5 โ C5 โ D5 โ
# โโโโโโโดโโโโโโดโโโโโโดโโโโโโ
ๅใไธ่ดใใฆใใชใใใผใฟใใฌใผใ ใ็ตๅใใใๅ ดๅใฏhow="diagonal"ใๆๅฎใใพใใๅๅใๅบๆบใซใใๅฎๅ
จๅค้จ็ตๅใจใชใใ่ถณใใชใ้จๅใฏnullใงๅใใใใพใใ
df1 = pl.DataFrame(
{"A": ["A0", "A1"], "B": ["B0", "B1"], "C": ["C0", "C1"]}
)
df2 = pl.DataFrame(
{"A": ["A2", "A3"], "B": ["B2", "B3"], "D": ["D2", "D3"]}
)
df3 = pl.DataFrame(
{"A": ["A4", "A5"], "B": ["B4", "B5"], "C": ["C4", "C5"], "D": ["D4", "D5"]}
)
pl.concat([df1, df2, df3], how="diagonal")
# shape: (6, 4)
# โโโโโโโฌโโโโโโฌโโโโโโโฌโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโชโโโโโโชโโโโโโโชโโโโโโโก
# โ A0 โ B0 โ C0 โ null โ
# โ A1 โ B1 โ C1 โ null โ
# โ A2 โ B2 โ null โ D2 โ
# โ A3 โ B3 โ null โ D3 โ
# โ A4 โ B4 โ C4 โ D4 โ
# โ A5 โ B5 โ C5 โ D5 โ
# โโโโโโโดโโโโโโดโโโโโโโดโโโโโโโ
pl.concat()้ขๆฐใงใhow="horizontal"ใๆๅฎใใใจใnp.hstack()ใฎใใใซใใผใฟใใฌใผใ ใๆจชใซ็ตๅใงใใพใใใใฎๆไฝใใใๅ ดๅใฏใ็ตๅๅ
ใฎใใผใฟใใฌใผใ ใฎๅๅใๅ
จใฆ็ฐใชใฃใฆใใๅฟ
่ฆใใใใพใใ่กๆฐใ็ฐใชใๅ ดๅใฏใๆใ้ทใใใผใฟใใฌใผใ ใซๅใใใฆnullใงๅใใใใพใใ
df1 = pl.DataFrame({"A": ["A0", "A1", "A2"], "B": ["B0", "B1", "B2"]})
df2 = pl.DataFrame({"C": ["C0", "C1"], "D": ["D0", "D1"]})
pl.concat([df1, df2], how="horizontal")
# shape: (3, 4)
# โโโโโโโฌโโโโโโฌโโโโโโโฌโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโชโโโโโโชโโโโโโโชโโโโโโโก
# โ A0 โ B0 โ C0 โ D0 โ
# โ A1 โ B1 โ C1 โ D1 โ
# โ A2 โ B2 โ null โ null โ
# โโโโโโโดโโโโโโดโโโโโโโดโโโโโโโ
pl.concat()ใฏใใใผใฟใใฌใผใ ๅๅฃซใฎ็ตๅๅฐ็จใงใใใผใฟใใฌใผใ ใจใทใชใผใบใฎ็ตๅใฏใงใใพใใใใใผใฟใใฌใผใ ใจใทใชใผใบใฎ็ตๅใฏDataFrame.with_columns()ใชใฉใไฝฟ็จใใฆใใ ใใใ
DataFrame.join()ใซใใ็ตๅ๏ผใใผใธ๏ผ
DataFrame.join()ใกใฝใใใไฝฟใฃใฆใ2ใคใฎใใผใฟใใฌใผใ ใ็ตๅใใใใจใใงใใพใใไฝฟใๆนใฏpandasใฎDataFrame.merge()ใจใปใผๅใใงใใ
ใใใฉใซใ๏ผhow="inner"๏ผใงใฏๅ
้จ็ตๅ๏ผ2ใคใฎใใผใฟใใฌใผใ ใซๅ
ฑ้ใใฆๅญๅจใใใญใผใฎใฟใไฟๆ๏ผใซใชใใพใใ
left = pl.DataFrame(
{
"key1": ["K0", "K0", "K1", "K2"],
"key2": ["K0", "K1", "K0", "K1"],
"A": ["A0", "A1", "A2", "A3"],
"B": ["B0", "B1", "B2", "B3"],
}
)
# shape: (4, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ key1 โ key2 โ A โ B โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ
# โ K0 โ K1 โ A1 โ B1 โ
# โ K1 โ K0 โ A2 โ B2 โ
# โ K2 โ K1 โ A3 โ B3 โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
right = pl.DataFrame(
{
"key1": ["K0", "K1", "K1", "K2"],
"key2": ["K0", "K0", "K0", "K0"],
"C": ["C0", "C1", "C2", "C3"],
"D": ["D0", "D1", "D2", "D3"],
}
)
# shape: (4, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ key1 โ key2 โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ K0 โ K0 โ C0 โ D0 โ
# โ K1 โ K0 โ C1 โ D1 โ
# โ K1 โ K0 โ C2 โ D2 โ
# โ K2 โ K0 โ C3 โ D3 โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
left.join(right, on=["key1", "key2"])
# shape: (3, 6)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโ
# โ key1 โ key2 โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโชโโโโโโชโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ C0 โ D0 โ
# โ K1 โ K0 โ A2 โ B2 โ C1 โ D1 โ
# โ K1 โ K0 โ A2 โ B2 โ C2 โ D2 โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโดโโโโโโดโโโโโโ
ๅทฆๅค้จ็ตๅ๏ผๅทฆใใฌใผใ ใฎใญใผใซๅใใใฆๅณใใฌใผใ ใ็ตๅ๏ผใฏhow="left"ใๆๅฎใใพใใๅณๅค้จ็ตๅใฏhow="right"ใๆๅฎใใพใใ
left.join(right, on=["key1", "key2"], how="left")
# shape: (5, 6)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโโฌโโโโโโโ
# โ key1 โ key2 โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโชโโโโโโโชโโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ C0 โ D0 โ
# โ K0 โ K1 โ A1 โ B1 โ null โ null โ
# โ K1 โ K0 โ A2 โ B2 โ C1 โ D1 โ
# โ K1 โ K0 โ A2 โ B2 โ C2 โ D2 โ
# โ K2 โ K1 โ A3 โ B3 โ null โ null โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโดโโโโโโโดโโโโโโโ
left.join(right, on=["key1", "key2"], how="right")
# shape: (4, 6)
# โโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ key1 โ key2 โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ A0 โ B0 โ K0 โ K0 โ C0 โ D0 โ
# โ A2 โ B2 โ K1 โ K0 โ C1 โ D1 โ
# โ A2 โ B2 โ K1 โ K0 โ C2 โ D2 โ
# โ null โ null โ K2 โ K0 โ C3 โ D3 โ
# โโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
ๅฎๅ
จๅค้จ็ตๅใฏhow="full"ใๆๅฎใใพใใใใฎใจใcoalesce=ๅผๆฐใซใใฃใฆ็ตๆใๅคงใใ้ใใฎใงๆณจๆใใฆใใ ใใใ
-
coalesce=False๏ผใใใฉใซใ๏ผใฎๅ ดๅใๅทฆๅณใใฌใผใ ใฎใญใผๅใ็ถญๆใใใ็ถๆ ใง็ตๅใใใพใใๅๅใ้่คใใๅ ดๅใฏsuffix=ๅผๆฐใงๅณใใฌใผใ ใฎใญใผๅๅใซๆฅๅฐพ่พใไปๅ ใงใใพใ๏ผใใใฉใซใใฏ"_right"๏ผใ -
coalesce=Trueใฎๅ ดๅใๅทฆๅณใใฌใผใ ใฎใญใผๅใ่ๅใใใๆฐใใใญใผๅใไฝใใพใใ
left.join(right, on=["key1", "key2"], how="full")
# shape: (6, 8)
# โโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโฌโโโโโโโ
# โ key1 โ key2 โ A โ B โ key1_right โ key2_right โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโโโโโโโชโโโโโโโโโโโโโชโโโโโโโชโโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ K0 โ K0 โ C0 โ D0 โ
# โ K1 โ K0 โ A2 โ B2 โ K1 โ K0 โ C1 โ D1 โ
# โ K1 โ K0 โ A2 โ B2 โ K1 โ K0 โ C2 โ D2 โ
# โ null โ null โ null โ null โ K2 โ K0 โ C3 โ D3 โ
# โ K0 โ K1 โ A1 โ B1 โ null โ null โ null โ null โ
# โ K2 โ K1 โ A3 โ B3 โ null โ null โ null โ null โ
# โโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโดโโโโโโโ
left.join(right, on=["key1", "key2"], how="full", coalesce=True)
# shape: (6, 6)
# โโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโฌโโโโโโโ
# โ key1 โ key2 โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโชโโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ C0 โ D0 โ
# โ K1 โ K0 โ A2 โ B2 โ C1 โ D1 โ
# โ K1 โ K0 โ A2 โ B2 โ C2 โ D2 โ
# โ K2 โ K0 โ null โ null โ C3 โ D3 โ
# โ K2 โ K1 โ A3 โ B3 โ null โ null โ
# โ K0 โ K1 โ A1 โ B1 โ null โ null โ
# โโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโดโโโโโโโ
ไบคๅทฎ็ตๅ๏ผhow="cross"๏ผใๅฏ่ฝใงใใ
left.join(right, on=["key1", "key2"], how="cross")
# shape: (16, 8)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโฌโโโโโโ
# โ key1 โ key2 โ A โ B โ key1_right โ key2_right โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโชโโโโโโโโโโโโโชโโโโโโโโโโโโโชโโโโโโชโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ K0 โ K0 โ C0 โ D0 โ
# โ K0 โ K0 โ A0 โ B0 โ K1 โ K0 โ C1 โ D1 โ
# โ K0 โ K0 โ A0 โ B0 โ K1 โ K0 โ C2 โ D2 โ
# โ K0 โ K0 โ A0 โ B0 โ K2 โ K0 โ C3 โ D3 โ
# โ K0 โ K1 โ A1 โ B1 โ K0 โ K0 โ C0 โ D0 โ
# โ โฆ โ โฆ โ โฆ โ โฆ โ โฆ โ โฆ โ โฆ โ โฆ โ
# โ K1 โ K0 โ A2 โ B2 โ K2 โ K0 โ C3 โ D3 โ
# โ K2 โ K1 โ A3 โ B3 โ K0 โ K0 โ C0 โ D0 โ
# โ K2 โ K1 โ A3 โ B3 โ K1 โ K0 โ C1 โ D1 โ
# โ K2 โ K1 โ A3 โ B3 โ K1 โ K0 โ C2 โ D2 โ
# โ K2 โ K1 โ A3 โ B3 โ K2 โ K0 โ C3 โ D3 โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโดโโโโโโ
pandasใซใฏใชใๆฉ่ฝใจใใฆใhow="semi"ใจhow="anti"ใๆๅฎใใใใจใใงใใพใใใใใฏ็ตๅใงใฏใชใ่กใใฃใซใฟใชใณใฐใงใhow="semi"ใฏๅณใฎใใผใฟใใฌใผใ ใซๅญๅจใใใญใผใๆใค่กใ ใใๆฎใใhow="anti"ใฏๅณใฎใใผใฟใใฌใผใ ใซๅญๅจใใชใใญใผใๆใค่กใ ใใๆฎใใพใใ
left.join(right, on=["key1", "key2"], how="semi")
# shape: (2, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ key1 โ key2 โ A โ B โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ K0 โ K0 โ A0 โ B0 โ
# โ K1 โ K0 โ A2 โ B2 โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
left.join(right, on=["key1", "key2"], how="anti")
# shape: (2, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ key1 โ key2 โ A โ B โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ K0 โ K1 โ A1 โ B1 โ
# โ K2 โ K1 โ A3 โ B3 โ
# โโโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
GroupBy
ใฐใซใผใใใจใซ้ขๆฐใ้ฉ็จใใๅ ดๅใฏ.group_by()ใกใฝใใใไฝฟใใพใใpandasใฎ.groupby()ใจๅๆงใซใๅๅใพใใฏๅๅใฎใชในใใใญใผใจใใฆๆธกใใใจใใงใใพใใ็ตๆใฎใใผใฟใใฌใผใ ใฏใpandasใงใฏใฐใซใผใใญใผใซๅบใฅใใฆใฝใผใใใใฆใใพใใใpolarsใงใฏ่กใฎไธฆใณ้ ใฏใฉใณใใ ใงใ๏ผๅใใณใผใใงใ่จ็ฎใใใใณใซๅคใใใพใ๏ผใ
rng = np.random.default_rng(0)
df = pl.DataFrame(
{
"A": ["foo", "bar", "foo", "bar", "foo", "bar", "foo", "foo"],
"B": ["one", "one", "two", "three", "two", "two", "one", "three"],
"C": rng.random(8),
"D": rng.random(8),
}
)
# shape: (8, 4)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ foo โ one โ 0.636962 โ 0.543625 โ
# โ bar โ one โ 0.269787 โ 0.935072 โ
# โ foo โ two โ 0.040974 โ 0.815854 โ
# โ bar โ three โ 0.016528 โ 0.002739 โ
# โ foo โ two โ 0.81327 โ 0.857404 โ
# โ bar โ two โ 0.912756 โ 0.033586 โ
# โ foo โ one โ 0.606636 โ 0.729655 โ
# โ foo โ three โ 0.729497 โ 0.175656 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
df.group_by("A", "B").sum()
# shape: (6, 4)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ foo โ one โ 1.243597 โ 1.27328 โ
# โ foo โ two โ 0.854244 โ 1.673258 โ
# โ foo โ three โ 0.729497 โ 0.175656 โ
# โ bar โ one โ 0.269787 โ 0.935072 โ
# โ bar โ two โ 0.912756 โ 0.033586 โ
# โ bar โ three โ 0.016528 โ 0.002739 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
ใฐใซใผใใญใผใซใจใฏในใใฌใใทใงใณใๆธกใใใจใใงใใพใใ
df.group_by("A", pl.col("B").str.to_uppercase().alias("BIG_B")).first()
# shape: (6, 5)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ BIG_B โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ str โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ foo โ ONE โ one โ 0.636962 โ 0.543625 โ
# โ foo โ TWO โ two โ 0.040974 โ 0.815854 โ
# โ foo โ THREE โ three โ 0.729497 โ 0.175656 โ
# โ bar โ ONE โ one โ 0.269787 โ 0.935072 โ
# โ bar โ TWO โ two โ 0.912756 โ 0.033586 โ
# โ bar โ THREE โ three โ 0.016528 โ 0.002739 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
polarsใงใฏใฐใซใผใใญใผใซNaNใปnullใใใ่กใไฟๆใใใพใ๏ผpandasใฏใใใฉใซใใงใฏใฐใซใผใใญใผใnanใปNAใฎ่กใฏๅ้คใใใพใ๏ผใ
dfna = pl.DataFrame(
[[np.nan, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]], schema="ABCD"
)
# shape: (3, 4)
# โโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ f64 โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ NaN โ 1 โ 2 โ 1 โ
# โ 2.0 โ null โ 1 โ 2 โ
# โ 3.0 โ 4 โ 3 โ 2 โ
# โโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
dfna.group_by("A").sum()
# shape: (3, 4)
# โโโโโโโฌโโโโโโโฌโโโโโโฌโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ f64 โ i64 โ i64 โ i64 โ
# โโโโโโโชโโโโโโโชโโโโโโชโโโโโโก
# โ NaN โ 1 โ 2 โ 1 โ
# โ 2.0 โ 0 โ 1 โ 2 โ
# โ 3.0 โ 4 โ 3 โ 2 โ
# โโโโโโโดโโโโโโโดโโโโโโดโโโโโโ
dfna.group_by("B").sum()
# shape: (3, 4)
# โโโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโ
# โ B โ A โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ i64 โ i64 โ
# โโโโโโโโชโโโโโโชโโโโโโชโโโโโโก
# โ 4 โ 3.0 โ 3 โ 2 โ
# โ null โ 2.0 โ 1 โ 2 โ
# โ 1 โ NaN โ 2 โ 1 โ
# โโโโโโโโดโโโโโโดโโโโโโดโโโโโโ
GroupByใชใใธใงใฏใ
GroupByใชใใธใงใฏใใฏใคใใฌใผใฟใจใใฆใๅไฝใใพใใใคใใฌใผใฟใจใใฆ็จใใใจใitertoolsใpandasใฎใใใซใ(ใฐใซใผใๅใฎใฟใใซ, ใใผใฟใใฌใผใ )ใฎใฟใใซใๅๅพใงใใพใใ
grouped = df.group_by("A")
type(grouped)
# <class 'polars.dataframe.group_by.GroupBy'>
for group_name, group_df in grouped:
print(f"{group_name = }")
print(group_df)
print("---")
# group_name = ('foo',)
# shape: (5, 4)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ foo โ one โ 0.636962 โ 0.543625 โ
# โ foo โ two โ 0.040974 โ 0.815854 โ
# โ foo โ two โ 0.81327 โ 0.857404 โ
# โ foo โ one โ 0.606636 โ 0.729655 โ
# โ foo โ three โ 0.729497 โ 0.175656 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
# ---
# group_name = ('bar',)
# shape: (3, 4)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ bar โ one โ 0.269787 โ 0.935072 โ
# โ bar โ three โ 0.016528 โ 0.002739 โ
# โ bar โ two โ 0.912756 โ 0.033586 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
# ---
้่จ
้่จใฏใใฐใซใผใใญใผไปฅๅคใฎใในใฆใฎๅใซ้ฉ็จใใๅ ดๅใฏใๆขใซ็ดนไปใใใใใซGroupbyใชใใธใงใฏใใฎใกใฝใใใไฝฟใใพใใ
df.group_by("A", "B").head()
# shape: (8, 4)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ D โ
# โ --- โ --- โ --- โ --- โ
# โ str โ str โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ foo โ one โ 0.636962 โ 0.543625 โ
# โ foo โ one โ 0.606636 โ 0.729655 โ
# โ foo โ two โ 0.040974 โ 0.815854 โ
# โ foo โ two โ 0.81327 โ 0.857404 โ
# โ bar โ three โ 0.016528 โ 0.002739 โ
# โ bar โ one โ 0.269787 โ 0.935072 โ
# โ foo โ three โ 0.729497 โ 0.175656 โ
# โ bar โ two โ 0.912756 โ 0.033586 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
df.group_by("A", "B").len()
# shape: (6, 3)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ A โ B โ count โ
# โ --- โ --- โ --- โ
# โ str โ str โ u32 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโก
# โ foo โ one โ 2 โ
# โ foo โ three โ 1 โ
# โ bar โ two โ 1 โ
# โ foo โ two โ 2 โ
# โ bar โ one โ 1 โ
# โ bar โ three โ 1 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโ
ๅใใจใซ้ฉ็จใใๅ ดๅใฏใ.agg()ใซใจใฏในใใฌใใทใงใณใๆธกใใพใใpolarsใงใฏๅๅใฎ้่คใ่จฑใใชใใฎใงใๅใๅใซ็ฐใชใ้ขๆฐใ้ฉ็จใใๅ ดๅใฏ.alias()ใป.name.prefix()ใป.name.suffix()ใชใฉใง้ฉๅฎๅๅใ่ชฟๆดใใๅฟ
่ฆใใใใพใใ
df.group_by("A", "B").agg(
pl.sum("*").name.suffix("_sum"),
pl.mean("C").name.suffix("_mean"),
pl.std("D").name.suffix("_std"),
)
# shape: (6, 6)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C_sum โ D_sum โ C_mean โ D_std โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ str โ str โ f64 โ f64 โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ bar โ one โ 0.269787 โ 0.935072 โ 0.269787 โ null โ
# โ bar โ three โ 0.016528 โ 0.002739 โ 0.016528 โ null โ
# โ bar โ two โ 0.912756 โ 0.033586 โ 0.912756 โ null โ
# โ foo โ one โ 1.243597 โ 1.27328 โ 0.621799 โ 0.131543 โ
# โ foo โ three โ 0.729497 โ 0.175656 โ 0.729497 โ null โ
# โ foo โ two โ 0.854244 โ 1.673258 โ 0.427122 โ 0.029381 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
ใใใใใใผใใซ
DataFrame.pivot()ใงใใใใใใผใใซใไฝๆใใพใใ็ฌฌ1ๅผๆฐon=ใซใๆจชๆใกใซใใใใๅใๆๅฎใใพใใ็ธฆๆใกใจใใฆ็ถญๆใใๅใฏindex=ๅผๆฐใๅคใซใใๅใฏvalue=ๅผๆฐใ้่จ้ขๆฐใฏaggregate_function=ๅผๆฐใจใใฆๆธกใใพใใpandasใฎDataFrame.pivot_table()ใซ็ธๅฝใใพใใ
pivot_table = df.pivot(on="B", index="A", values="C", aggregate_function="sum")
# shape: (2, 4)
# โโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ one โ two โ three โ
# โ --- โ --- โ --- โ --- โ
# โ str โ f64 โ f64 โ f64 โ
# โโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโโก
# โ foo โ 1.243597 โ 0.854244 โ 0.729497 โ
# โ bar โ 0.269787 โ 0.912756 โ 0.016528 โ
# โโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโ
ใชใใใใใใใใผใใซใๆปใๅ ดๅใฏ.unpivot()ใ็จใใพใใpandasใฎ.melt()๏ผใใใใฏ.unstack()๏ผใซ็ธๅฝใใพใใ
pivot_table.unpivot(
index="A", on=["one", "two", "three"], variable_name="B", value_name="C"
)
# shape: (6, 3)
# โโโโโโโฌโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ C โ
# โ --- โ --- โ --- โ
# โ str โ str โ f64 โ
# โโโโโโโชโโโโโโโโชโโโโโโโโโโโก
# โ foo โ one โ 1.243597 โ
# โ bar โ one โ 0.269787 โ
# โ foo โ two โ 0.854244 โ
# โ bar โ two โ 0.912756 โ
# โ foo โ three โ 0.729497 โ
# โ bar โ three โ 0.016528 โ
# โโโโโโโดโโโโโโโโดโโโโโโโโโโโ
ๆฌ ๆๅคใปๆฌ ๆใใผใฟใฎๆฑใ
ใใผใฟใใฌใผใ ไฝๆใฎ้ใซ่ฆ็ด ใจใใฆNoneใๆธกใใใใจใๆฌ ๆๅคnullใจใฟใชใใใพใใใใ ใใๆตฎๅๅฐๆฐๅใซใญใฃในใใงใใใจใใซnp.nanใๆธกใใๅ ดๅใซใฏใNaNใจใฟใชใใใพใใ
ๅ
จใฆใฎใใผใฟๅใ่ฆ็ด ใจใใฆNaNใๆใคใใจใใงใใๆตฎๅๅฐๆฐใใผใฟๅใฎใทใชใผใบใงใฏnullใจNaNใๅ
ฑๅญใงใใพใใ
df_missing = pl.DataFrame(
{"A": [1, 2, None, 4, None, None], "B": [np.nan, 4, 3, 2, np.nan, None]}
)
df_missing
# shape: (6, 2)
# โโโโโโโโฌโโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโชโโโโโโโก
# โ 1 โ NaN โ
# โ 2 โ 4.0 โ
# โ null โ 3.0 โ
# โ 4 โ 2.0 โ
# โ null โ NaN โ
# โ null โ null โ
# โโโโโโโโดโโโโโโโ
ๆฌ ๆๅคใฎ็ขบ่ช
nullใใฉใใใฎ็ๅฝๅคใฏ.is_null()ใกใฝใใใใNaNใใฉใใใฎ็ๅฝๅคใฏ.is_nan()ใกใฝใใใงๅพใใใพใใใใใใฏใฉใกใใใทใชใผใบใพใใฏใจใฏในใใฌใใทใงใณใฎใฟใซๅญๅจใใใกใฝใใใงใใใผใฟใใฌใผใ ใฎใกใฝใใใงใฏใใใพใใใ
df_missing.with_columns(
A_is_null=pl.col("A").is_null(),
B_is_null=pl.col("B").is_null(),
B_is_nan=pl.col("B").is_nan(),
)
# shape: (6, 5)
# โโโโโโโโฌโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโ
# โ A โ B โ A_is_null โ B_is_null โ B_is_nan โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ bool โ bool โ bool โ
# โโโโโโโโชโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโก
# โ 1 โ NaN โ false โ false โ true โ
# โ 2 โ 4.0 โ false โ false โ false โ
# โ null โ 3.0 โ true โ false โ false โ
# โ 4 โ 2.0 โ false โ false โ false โ
# โ null โ NaN โ true โ false โ true โ
# โ null โ null โ true โ true โ null โ
# โโโโโโโโดโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโ
.null_count()ใกใฝใใใฏnullใฎๆฐใ้่จใใพใใ
df_missing.null_count()
# shape: (1, 2)
# โโโโโโโฌโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ u32 โ u32 โ
# โโโโโโโชโโโโโโก
# โ 3 โ 1 โ
# โโโโโโโดโโโโโโ
ใทใชใผใบใพใใฏใจใฏในใใฌใใทใงใณใฎ.count()ใกใฝใใใฏnullใ้คใใใใผใฟใฎๆฐใ้่จใใพใใ
df_missing.select(
pl.all().count().name.suffix("_count"),
pl.all().len().name.suffix("_len"),
)
# shape: (1, 4)
# โโโโโโโโโโโฌโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ A_count โ B_count โ A_len โ B_len โ
# โ --- โ --- โ --- โ --- โ
# โ u32 โ u32 โ u32 โ u32 โ
# โโโโโโโโโโโชโโโโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ 3 โ 5 โ 6 โ 6 โ
# โโโโโโโโโโโดโโโโโโโโโโดโโโโโโโโดโโโโโโโโ
ๆฌ ๆๅคใฎไผๆฌ
nullใพใใฏNaNใซๅฏพใใๆฐๅคๆผ็ฎใงใฏnullใพใใฏNaNใ็ถญๆใใใพใใnullใจNaNใฎ็ตใฟๅใใใงๆผ็ฎใๅฎ่กใใๅ ดๅใฏnullใๅชๅ
ใใใพใ๏ผๅพ่ฟฐใใ้่จ้ขๆฐใจใฎ้ใใซๆณจๆ๏ผใ
df_missing.with_columns(
A_plus_B=pl.col("A") + pl.col("B"), # ๅ ็ฎๆผ็ฎใซใใAใจBใฎๅ
sum_A_B=pl.sum_horizontal("A", "B"), # ้่จ้ขๆฐใซใใAใจBใฎๅ
)
# shape: (6, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโ
# โ A โ B โ A_plus_B โ sum_A_B โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ f64 โ f64 โ
# โโโโโโโโชโโโโโโโชโโโโโโโโโโโชโโโโโโโโโโก
# โ 1 โ NaN โ NaN โ NaN โ
# โ 2 โ 4.0 โ 6.0 โ 6.0 โ
# โ null โ 3.0 โ null โ 3.0 โ
# โ 4 โ 2.0 โ 6.0 โ 6.0 โ
# โ null โ NaN โ null โ NaN โ
# โ null โ null โ null โ 0.0 โ
# โโโโโโโโดโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโ
nullใซๅฏพใใๆฏ่ผๆผ็ฎใฎ็ตๆใฏๅธธใซnullใซใชใใพใใnullใจNaNใจใฎๆฏ่ผๆผ็ฎใฎ็ตๆใnullใซใชใใพใใNaNใจๆฐๅคใจใฎๆฏ่ผๆผ็ฎใฎ็ตๆใฏๅธธใซFalseใซใชใใพใใ
df_missing.with_columns(
gt=(pl.col("A") > pl.col("B")),
eq=(pl.col("A") == pl.col("B")),
)
# shape: (6, 4)
# โโโโโโโโฌโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ A โ B โ gt โ eq โ
# โ --- โ --- โ --- โ --- โ
# โ i64 โ f64 โ bool โ bool โ
# โโโโโโโโชโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ 1 โ NaN โ false โ false โ
# โ 2 โ 4.0 โ false โ false โ
# โ null โ 3.0 โ null โ null โ
# โ 4 โ 2.0 โ true โ false โ
# โ null โ NaN โ null โ null โ
# โ null โ null โ null โ null โ
# โโโโโโโโดโโโโโโโดโโโโโโโโดโโโโโโโโ
้่จ้ขๆฐใฏnullใ็ก่ฆใใฆ่จ็ฎใใพใใใNaNใๅซใๅ ดๅใฏNaNใซใชใใพใใ
df_missing.sum()
# shape: (1, 2)
# โโโโโโโฌโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโชโโโโโโก
# โ 7 โ NaN โ
# โโโโโโโดโโโโโโ
df_missing.describe()
# shape: (9, 3)
# โโโโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโ
# โ statistic โ A โ B โ
# โ --- โ --- โ --- โ
# โ str โ f64 โ f64 โ
# โโโโโโโโโโโโโโชโโโโโโโโโโโชโโโโโโก
# โ count โ 3.0 โ 5.0 โ
# โ null_count โ 3.0 โ 1.0 โ
# โ mean โ 2.333333 โ NaN โ
# โ std โ 1.527525 โ NaN โ
# โ min โ 1.0 โ 2.0 โ
# โ 25% โ 2.0 โ 3.0 โ
# โ 50% โ 2.0 โ 4.0 โ
# โ 75% โ 4.0 โ NaN โ
# โ max โ 4.0 โ 4.0 โ
# โโโโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโ
ๆฌ ๆๅคใฎ็ฉดๅใ
nullใไปใฎๅคใซ็ฝฎๆใใๅ ดๅใฏ.fill_null()ใกใฝใใใใNaNใไปใฎๅคใซ็ฝฎๆใใๅ ดๅใฏ.fill_nan()ใกใฝใใใไฝฟใใพใใ
df_missing.fill_null(99)
# shape: (6, 2)
# โโโโโโโฌโโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโชโโโโโโโก
# โ 1 โ NaN โ
# โ 2 โ 4.0 โ
# โ 99 โ 3.0 โ
# โ 4 โ 2.0 โ
# โ 99 โ NaN โ
# โ 99 โ 99.0 โ
# โโโโโโโดโโโโโโโ
df_missing.fill_nan(99)
# shape: (6, 2)
# โโโโโโโโฌโโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโชโโโโโโโก
# โ 1 โ 99.0 โ
# โ 2 โ 4.0 โ
# โ null โ 3.0 โ
# โ 4 โ 2.0 โ
# โ null โ 99.0 โ
# โ null โ null โ
# โโโโโโโโดโโโโโโโ
.fill_null()ใ.fill_nan()ใซใฏใจใฏในใใฌใใทใงใณใใทใชใผใบใๆธกใใใจใใงใใพใใ
df_missing.fill_null(pl.Series([11, 12, 13, 14, 15, 16]))
# shape: (6, 2)
# โโโโโโโฌโโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโชโโโโโโโก
# โ 1 โ NaN โ
# โ 2 โ 4.0 โ
# โ 13 โ 3.0 โ
# โ 4 โ 2.0 โ
# โ 15 โ NaN โ
# โ 16 โ null โ
# โโโโโโโดโโโโโโโ
df_missing.fill_nan(pl.col("A"))
# shape: (6, 2)
# โโโโโโโโฌโโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโโชโโโโโโโก
# โ 1 โ 1.0 โ
# โ 2 โ 4.0 โ
# โ null โ 3.0 โ
# โ 4 โ 2.0 โ
# โ null โ null โ
# โ null โ null โ
# โโโโโโโโดโโโโโโโ
.fill_null()ใกใฝใใใฏ็นๅฎใฎใญใผใฏใผใใไธใใใใจใใงใใพใใๅนณๅๅคใง็ฉดๅใใใๅ ดๅใฏstrategy="mean"ใๆๅฎใใพใใ
df_missing.fill_null(strategy="mean")
# shape: (6, 2)
# โโโโโโโฌโโโโโโ
# โ A โ B โ
# โ --- โ --- โ
# โ i64 โ f64 โ
# โโโโโโโชโโโโโโก
# โ 1 โ NaN โ
# โ 2 โ 4.0 โ
# โ 2 โ 3.0 โ
# โ 4 โ 2.0 โ
# โ 2 โ NaN โ
# โ 2 โ NaN โ
# โโโโโโโดโโโโโโ
strategy=ๅผๆฐใฏใ"mean"ใฎไปใ"forward"ใป"backward"ใป"min"ใป"max"ใป"zero"ใป"one"ใๅใๅ
ฅใใพใใ
ใใญในใใใผใฟใๆฑใ
ใทใชใผใบใใใณใจใฏในใใฌใใทใงใณใซใฏ.strใขใฏใปใตใไปใใๆๅญๅใกใฝใใใ็จๆใใใฆใใพใใ
df_str = pl.DataFrame(
{"orig": ["A", "B", "Aaba", "Baca", None, "CABA", "dog", "cat"]}
)
df_str.with_columns(
# ใทใชใผใบใฎๆไฝ
df_str.get_column("orig").str.len_bytes().alias("len"),
df_str.get_column("orig").str.to_lowercase().alias("lower"),
# ใจใฏในใใฌใใทใงใณใฎๆไฝ
pl.col("orig").str.to_uppercase().alias("upper"),
pl.col("orig").str.slice(1, 3).alias("slice"),
)
# shape: (8, 5)
# โโโโโโโโฌโโโโโโโฌโโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ orig โ len โ lower โ upper โ slice โ
# โ --- โ --- โ --- โ --- โ --- โ
# โ str โ u32 โ str โ str โ str โ
# โโโโโโโโชโโโโโโโชโโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ A โ 1 โ a โ A โ โ
# โ B โ 1 โ b โ B โ โ
# โ Aaba โ 4 โ aaba โ AABA โ aba โ
# โ Baca โ 4 โ baca โ BACA โ aca โ
# โ null โ null โ null โ null โ null โ
# โ CABA โ 4 โ caba โ CABA โ ABA โ
# โ dog โ 3 โ dog โ DOG โ og โ
# โ cat โ 3 โ cat โ CAT โ at โ
# โโโโโโโโดโโโโโโโดโโโโโโโโดโโโโโโโโดโโโโโโโโ
ๅ ็ฎๆผ็ฎๅญ+ใงๆๅญๅใ็ตๅใงใใพใใ
df_str.select(pl.col("orig") + "_" + pl.col("orig"))
# shape: (8, 1)
# โโโโโโโโโโโโโ
# โ orig โ
# โ --- โ
# โ str โ
# โโโโโโโโโโโโโก
# โ A_A โ
# โ B_B โ
# โ Aaba_Aaba โ
# โ Baca_Baca โ
# โ null โ
# โ CABA_CABA โ
# โ dog_dog โ
# โ cat_cat โ
# โโโโโโโโโโโโโ
ใใญในใใฎๆๅญๆฐใ็ฎๅบ
ๆๅญๆฐใๆฐใใใซใฏ.str.len_bytes()ใพใใฏ.str.len_chars()ใไฝฟใใพใใไธ่ฌ็ใช่ฑๆฐๅญใฎใฟใๆฑใฃใฆใใๅ ดๅใฏ.str.len_bytes()ใ็จใใใฎใ่ฏใใงใใใใใใฏๅฎ้ใซใฏใใคใๆฐใๆฐใใฆใใใใใ็ตๅๆๅญใๅ
จ่งๆๅญใไฝฟใฃใฆใใๅ ดๅใฏ.str.len_chars()ใไฝฟใๅฟ
่ฆใใใใพใใ่จ็ฎ้ๅบฆใฏ.str.len_bytes()ใฎๆนใ้ซ้ใงใใ
pl.DataFrame({"a": ["Tokyo", "ๆฑไบฌ", "Cafe", "Cafรฉ", "Cafeฬ", None]}).with_columns(
pl.col("a").str.len_bytes().alias("len_bytes"),
pl.col("a").str.len_chars().alias("len_chars"),
)
# shape: (6, 3)
# โโโโโโโโโฌโโโโโโโโโโโโฌโโโโโโโโโโโโ
# โ a โ len_bytes โ len_chars โ
# โ --- โ --- โ --- โ
# โ str โ u32 โ u32 โ
# โโโโโโโโโชโโโโโโโโโโโโชโโโโโโโโโโโโก
# โ Tokyo โ 5 โ 5 โ
# โ ๆฑไบฌ โ 6 โ 2 โ
# โ Cafe โ 4 โ 4 โ
# โ Cafรฉ โ 5 โ 4 โ
# โ Cafeฬ โ 6 โ 5 โ
# โ null โ null โ null โ
# โโโโโโโโโดโโโโโโโโโโโโดโโโโโโโโโโโโ
ๆญฃ่ฆ่กจ็พๆค็ดขใงไธ่ด้จๅใๆฝๅบ
.str.extract()ใกใฝใใใฏใใญใฃใใใฃใฐใซใผใ"()"ใๅซใๆญฃ่ฆ่กจ็พใๆธกใใจใใใใใใ้จๅใ่ฟใใพใใ
ใใใฉใซใใงใฏๆๅใฎใใใใฐใซใผใ๏ผใคใพใ"$1"๏ผใ่ฟใใพใใ"$2"ใๆฌฒใใๅ ดๅใฏใgroup_index=ใญใผใฏใผใใซ2ใๆๅฎใใพใใใฐใซใผใใ่คๆฐๅๅพใใใใจใฏใงใใพใใใ
pl.Series(["a1a2", "b1", "c1"]).str.extract(r"([ab])?(\d)")
# shape: (3,)
# Series: '' [str]
# [
# "a"
# "b"
# null
# ]
pl.Series(["a1a2", "b1", "c1"]).str.extract(r"([ab])?(\d)", group_index=2)
# shape: (3,)
# Series: '' [str]
# [
# "1"
# "1"
# "1"
# ]
็นๅฎใฎๆๅญๅใๅซใใใฉใใใๆค็ดข
.str.contains()ใกใฝใใใฏใๆธกใใใๆๅญๅใ ๅซใ ใใฉใใใฎ็ๅฝๅคใ่ฟใใพใใๆญฃ่ฆ่กจ็พใไฝฟ็จใงใใพใใ
polarsใฎๆๅญๅใกใฝใใใซใฏใใใใmatchใfullmatchใฏใใใพใใใฎใงใใใฎ.str.contains()ใกใฝใใใงไปฃ็จใใฆใใ ใใใ
pl.Series(["1", "2", "3a", "3b", "03c", "4dx"]).str.contains(r"[0-9][a-z]")
# shape: (6,)
# Series: '' [bool]
# [
# false
# false
# true
# true
# true
# true
# ]
ๆๅญๅใฎๅ
้ ญใๆซๅฐพใซใใใไธ่ดใ็ขบ่ชใใๅ ดๅใฏ.str.starts_with()ใ.str.end_with()ใไฝฟ็จใใใใจใๅฏ่ฝใงใใ
ๆญฃ่ฆ่กจ็พใซใใๆๅญๅใฎ็ฝฎๆ
ๆๅญๅใฎ็ฝฎๆใซใฏ.str.replace()ใกใฝใใใไฝฟใใพใใ
df_str["orig"].str.replace(r"^.a|dog", "XX-XX ")
# shape: (8,)
# Series: '' [str]
# [
# "A"
# "B"
# "XX-XX ba"
# "XX-XX ca"
# null
# "CABA"
# "XX-XX "
# "XX-XX t"
# ]
ๆ็ณปๅใใผใฟใๆฑใ
polarsใฎๆ็ณปๅใใผใฟใฏใPythonใฎdatetimeใฎ้
ๅใงใ๏ผไธๆนpandasใnumpyใฏ็ฌ่ชใฎใชใใธใงใฏใใไฝฟ็จใใพใ๏ผใ
ใชใใstrptime()ใstrftime()ใฎ้ใฎใใฉใผใใใๆๅญๅ๏ผ"%Y/%m/%d %H:%M:%S"ใชใฉ๏ผใซใคใใฆใฏใใกใใๅ็
งใใฆใใ ใใใ
ใพใใใใใคใใฎ้ขๆฐใงๆ้้้ใๆๅฎใใ้ใฎๆๅญๅ่กจ่จใฏไปฅไธใฎ้ใใงใใ
-
"y"๏ผๅนดใ"mo"๏ผๆใ"w"๏ผ้ฑใ"d"๏ผๆฅ -
"h"๏ผๆ้ใ"m"๏ผๅใ"s"๏ผ็งใ"ms"๏ผใใช็งใ"us"๏ผใใคใฏใญ็งใ"ns"๏ผใใ็ง -
"i"๏ผใคใณใใใฏใน
pl.date_range(), pl.datetime_range()้ขๆฐ
pl.date_range()้ขๆฐใจpl.datetime_range()้ขๆฐใฏใpandasใฎpd.date_range()้ขๆฐใซๅฏพๅฟใใพใใ
ๆฅๆใฎๅง็นใป็ต็นใฏPythonใฎdatetime.datetimeใฏใฉในใงใๆฅๆ้้ใฏๆๅญๅใญใผใฏใผใใพใใฏdatetime.timedeltaใงๆๅฎใใๅฟ
่ฆใใใใพใใใพใใeager=False๏ผใใใฉใซใ๏ผใงใจใฏในใใฌใใทใงใณใeager=Trueใงใทใชใผใบใ่ฟใใพใใ
pl.date_range(
datetime.datetime(2022, 1, 1),
datetime.datetime(2022, 1, 10),
"1d",
eager=True,
)
# shape: (10,)
# Series: 'literal' [date]
# [
# 2022-01-01
# 2022-01-02
# 2022-01-03
# 2022-01-04
# 2022-01-05
# 2022-01-06
# 2022-01-07
# 2022-01-08
# 2022-01-09
# 2022-01-10
# ]
pl.datetime_range(
datetime.datetime(2022, 1, 1),
datetime.datetime(2022, 1, 10),
datetime.timedelta(days=1, hours=12),
eager=True,
)
# shape: (7,)
# Series: 'literal' [datetime[ฮผs]]
# [
# 2022-01-01 00:00:00
# 2022-01-02 12:00:00
# 2022-01-04 00:00:00
# 2022-01-05 12:00:00
# 2022-01-07 00:00:00
# 2022-01-08 12:00:00
# 2022-01-10 00:00:00
# ]
ๆๅญๅใใๆ็ณปๅใซๅคๆใใ.str.strptime()
polarsใงใฏใใทใชใผใบใปใจใฏในใใฌใใทใงใณใฎๆๅญๅใกใฝใใใซstrptime()ใๅฎ่ฃ
ใใใฆใใพใใ็ฌฌไธๅผๆฐใซใใผใฟๅใ็ฌฌไบๅผๆฐใซใใฉใผใใใๆๅญๅใๆธกใใพใใ
df_drange = pl.DataFrame(
{
"drange_str": [
"2022-01-01 00:00:00",
"2022-01-02 12:00:00",
"2022-01-04 00:00:00",
"2022-01-05 12:00:00",
"2022-01-07 00:00:00",
"2022-01-08 12:00:00",
"2022-01-10 00:00:00",
]
}
)
df_drange.get_column("drange_str").dtype
# String
df_drange.get_column("drange_str").str.strptime(pl.Datetime).dtype
# Datetime(time_unit='us', time_zone=None)
new_column = pl.col("drange_str").str.strptime(pl.Datetime).alias("drange")
df_drange.with_columns(new_column)
# shape: (7, 2)
# โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโ
# โ drange_str โ drange โ
# โ --- โ --- โ
# โ str โ datetime[ฮผs] โ
# โโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโโโโก
# โ 2022-01-01 00:00:00 โ 2022-01-01 00:00:00 โ
# โ 2022-01-02 12:00:00 โ 2022-01-02 12:00:00 โ
# โ 2022-01-04 00:00:00 โ 2022-01-04 00:00:00 โ
# โ 2022-01-05 12:00:00 โ 2022-01-05 12:00:00 โ
# โ 2022-01-07 00:00:00 โ 2022-01-07 00:00:00 โ
# โ 2022-01-08 12:00:00 โ 2022-01-08 12:00:00 โ
# โ 2022-01-10 00:00:00 โ 2022-01-10 00:00:00 โ
# โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโ
ใชใใ.str.to_date()/.str.to_datetime()ใกใฝใใใงใๅๆงใฎๅคๆใๅฏ่ฝใงใใ
ๆ็ณปๅใใผใฟใใไปใฎใใผใฟใธใฎๅคๆ
ๅนดๆๆฅใปๆๅ็งใปใจใใใฏใฟใคใ ใธใฎๅคๆใฏ.dtใไปใใฆๅใกใฝใใใใ่กใใพใ๏ผpandasใจ้ใๅฑๆงใขใฏใปในใงใฏใใใพใใ๏ผใ
df_drange = df_drange.select(new_column)
df_drange.select(
pl.col("drange"),
pl.col("drange").dt.year().alias("year"),
pl.col("drange").dt.month().alias("month"),
pl.col("drange").dt.day().alias("day"),
pl.col("drange").dt.hour().alias("hour"),
pl.col("drange").dt.minute().alias("minute"),
pl.col("drange").dt.second().alias("second"),
pl.col("drange").dt.epoch().alias("epoch"),
)
# shape: (7, 8)
# โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโฌโโโโโโโโฌโโโโโโฌโโโโโโโฌโโโโโโโโโฌโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ
# โ drange โ year โ month โ day โ hour โ minute โ second โ epoch โ
# โ --- โ --- โ --- โ --- โ --- โ --- โ --- โ --- โ
# โ datetime[ฮผs] โ i32 โ i8 โ i8 โ i8 โ i8 โ i8 โ i64 โ
# โโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโชโโโโโโโโชโโโโโโชโโโโโโโชโโโโโโโโโชโโโโโโโโโชโโโโโโโโโโโโโโโโโโโก
# โ 2022-01-01 00:00:00 โ 2022 โ 1 โ 1 โ 0 โ 0 โ 0 โ 1640995200000000 โ
# โ 2022-01-02 12:00:00 โ 2022 โ 1 โ 2 โ 12 โ 0 โ 0 โ 1641124800000000 โ
# โ 2022-01-04 00:00:00 โ 2022 โ 1 โ 4 โ 0 โ 0 โ 0 โ 1641254400000000 โ
# โ 2022-01-05 12:00:00 โ 2022 โ 1 โ 5 โ 12 โ 0 โ 0 โ 1641384000000000 โ
# โ 2022-01-07 00:00:00 โ 2022 โ 1 โ 7 โ 0 โ 0 โ 0 โ 1641513600000000 โ
# โ 2022-01-08 12:00:00 โ 2022 โ 1 โ 8 โ 12 โ 0 โ 0 โ 1641643200000000 โ
# โ 2022-01-10 00:00:00 โ 2022 โ 1 โ 10 โ 0 โ 0 โ 0 โ 1641772800000000 โ
# โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโดโโโโโโโโดโโโโโโดโโโโโโโดโโโโโโโโโดโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
ๆๅญๅใธใฎๅคๆใฏ.dt.strftime()ใซใใฉใผใใใๆๅญๅใๆธกใใพใใ
df_drange.select(
pl.col("drange").dt.strftime("%Y/%m/%d %H:%M:%S").alias("str1"),
pl.col("drange").dt.strftime("%d-%m-%Y %H:%M").alias("str2"),
)
# shape: (7, 2)
# โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโ
# โ str1 โ str2 โ
# โ --- โ --- โ
# โ str โ str โ
# โโโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโโโก
# โ 2022/01/01 00:00:00 โ 01-01-2022 00:00 โ
# โ 2022/01/02 12:00:00 โ 02-01-2022 12:00 โ
# โ 2022/01/04 00:00:00 โ 04-01-2022 00:00 โ
# โ 2022/01/05 12:00:00 โ 05-01-2022 12:00 โ
# โ 2022/01/07 00:00:00 โ 07-01-2022 00:00 โ
# โ 2022/01/08 12:00:00 โ 08-01-2022 12:00 โ
# โ 2022/01/10 00:00:00 โ 10-01-2022 00:00 โ
# โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโ
ใชใตใณใใชใณใฐ
polarsใงใฏ.group_by_dynamic()ใงๆ็ณปๅใซๅบใฅใใใฐใซใผใ้่จใ่กใใพใใpandasใฎ.resample()ใซ็ธๅฝใใพใใ
url = "https://raw.githubusercontent.com/nkmk/python-snippets/77f7a51e776077396fd8f8f8c1801d54e9854479/notebook/data/src/sample_date.csv"
df = pl.read_csv(url, schema_overrides={"date": pl.Date}).sort("date")
# shape: (12, 3)
# โโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ date โ val_1 โ val_2 โ
# โ --- โ --- โ --- โ
# โ date โ i64 โ i64 โ
# โโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ 2017-11-01 โ 65 โ 76 โ
# โ 2017-11-07 โ 26 โ 66 โ
# โ 2017-11-18 โ 47 โ 47 โ
# โ 2017-11-27 โ 20 โ 38 โ
# โ 2017-12-05 โ 65 โ 85 โ
# โ โฆ โ โฆ โ โฆ โ
# โ 2017-12-29 โ 21 โ 8 โ
# โ 2018-01-03 โ 98 โ 76 โ
# โ 2018-01-08 โ 48 โ 64 โ
# โ 2018-01-19 โ 18 โ 48 โ
# โ 2018-01-23 โ 86 โ 70 โ
# โโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโ
.group_by_dynamic()ใฎ็ฌฌไธๅผๆฐใซใญใผๅ๏ผใฝใผใใใใฆใใๅฟ
่ฆใใใใพใ๏ผใevery=ๅผๆฐใซๆ้้้ใๆๅฎใใพใใ
df.group_by_dynamic("date", every="1y").agg(pl.col("val_1", "val_2").sum())
# shape: (2, 3)
# โโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ date โ val_1 โ val_2 โ
# โ --- โ --- โ --- โ
# โ date โ i64 โ i64 โ
# โโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ 2017-01-01 โ 279 โ 403 โ
# โ 2018-01-01 โ 250 โ 258 โ
# โโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโ
df.group_by_dynamic("date", every="1mo").agg(pl.col("val_1", "val_2").sum())
# shape: (3, 3)
# โโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ date โ val_1 โ val_2 โ
# โ --- โ --- โ --- โ
# โ date โ i64 โ i64 โ
# โโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ 2017-11-01 โ 158 โ 227 โ
# โ 2017-12-01 โ 121 โ 176 โ
# โ 2018-01-01 โ 250 โ 258 โ
# โโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโ
every=ๅผๆฐใฏๆ้้้ใงใใใperiod=ๅผๆฐใฏ้่จๅฏพ่ฑกใฎๆ้ๆ ใฎ้ทใใงใใevery="1mo", period="15d"ใฏใ15ๆฅ้ใฎๅคใๆๆฏใซๅ่จใใใจใใๆๅณใซใชใใพใใ
"""
month 11 12 01
day 01 02 03 ... 15 16 ... 30 01 02 03 ... 15 16 ... 31 01
every -----------1mo----------> -----------1mo---------->
period |<====15d====>| |<====15d====>|
"""
df.group_by_dynamic("date", every="1mo", period="15d").agg(
pl.col("val_1", "val_2").sum()
)
# shape: (3, 3)
# โโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโ
# โ date โ val_1 โ val_2 โ
# โ --- โ --- โ --- โ
# โ date โ i64 โ i64 โ
# โโโโโโโโโโโโโโชโโโโโโโโชโโโโโโโโก
# โ 2017-11-01 โ 91 โ 142 โ
# โ 2017-12-01 โ 69 โ 114 โ
# โ 2018-01-01 โ 146 โ 140 โ
# โโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโ