polars-df 0.15.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +274 -0
  3. data/Cargo.lock +1465 -867
  4. data/Cargo.toml +3 -0
  5. data/LICENSE.txt +2 -2
  6. data/README.md +87 -37
  7. data/ext/polars/Cargo.toml +47 -16
  8. data/ext/polars/src/c_api/allocator.rs +7 -0
  9. data/ext/polars/src/c_api/mod.rs +1 -0
  10. data/ext/polars/src/catalog/mod.rs +1 -0
  11. data/ext/polars/src/catalog/unity.rs +470 -0
  12. data/ext/polars/src/conversion/any_value.rs +99 -84
  13. data/ext/polars/src/conversion/categorical.rs +30 -0
  14. data/ext/polars/src/conversion/chunked_array.rs +71 -62
  15. data/ext/polars/src/conversion/datetime.rs +63 -0
  16. data/ext/polars/src/conversion/mod.rs +796 -312
  17. data/ext/polars/src/dataframe/construction.rs +6 -18
  18. data/ext/polars/src/dataframe/export.rs +30 -39
  19. data/ext/polars/src/dataframe/general.rs +294 -362
  20. data/ext/polars/src/dataframe/io.rs +33 -150
  21. data/ext/polars/src/dataframe/map.rs +175 -0
  22. data/ext/polars/src/dataframe/mod.rs +37 -5
  23. data/ext/polars/src/dataframe/serde.rs +23 -8
  24. data/ext/polars/src/error.rs +44 -7
  25. data/ext/polars/src/exceptions.rs +21 -8
  26. data/ext/polars/src/expr/array.rs +86 -22
  27. data/ext/polars/src/expr/binary.rs +50 -1
  28. data/ext/polars/src/expr/bitwise.rs +39 -0
  29. data/ext/polars/src/expr/categorical.rs +20 -0
  30. data/ext/polars/src/expr/datatype.rs +51 -0
  31. data/ext/polars/src/expr/datetime.rs +99 -41
  32. data/ext/polars/src/expr/extension.rs +12 -0
  33. data/ext/polars/src/expr/general.rs +252 -128
  34. data/ext/polars/src/expr/list.rs +56 -60
  35. data/ext/polars/src/expr/meta.rs +30 -35
  36. data/ext/polars/src/expr/mod.rs +28 -6
  37. data/ext/polars/src/expr/name.rs +29 -14
  38. data/ext/polars/src/expr/rolling.rs +111 -3
  39. data/ext/polars/src/expr/selector.rs +219 -0
  40. data/ext/polars/src/expr/serde.rs +28 -0
  41. data/ext/polars/src/expr/string.rs +118 -20
  42. data/ext/polars/src/expr/struct.rs +14 -1
  43. data/ext/polars/src/file.rs +194 -86
  44. data/ext/polars/src/functions/aggregation.rs +13 -12
  45. data/ext/polars/src/functions/business.rs +2 -3
  46. data/ext/polars/src/functions/eager.rs +3 -2
  47. data/ext/polars/src/functions/io.rs +90 -18
  48. data/ext/polars/src/functions/lazy.rs +267 -118
  49. data/ext/polars/src/functions/meta.rs +8 -7
  50. data/ext/polars/src/functions/misc.rs +1 -1
  51. data/ext/polars/src/functions/mod.rs +2 -1
  52. data/ext/polars/src/functions/range.rs +88 -31
  53. data/ext/polars/src/functions/strings.rs +6 -0
  54. data/ext/polars/src/functions/utils.rs +8 -0
  55. data/ext/polars/src/interop/arrow/mod.rs +52 -1
  56. data/ext/polars/src/interop/arrow/{to_ruby.rs → to_rb.rs} +37 -7
  57. data/ext/polars/src/interop/arrow/to_rust.rs +43 -0
  58. data/ext/polars/src/interop/numo/to_numo_df.rs +1 -1
  59. data/ext/polars/src/interop/numo/to_numo_series.rs +72 -50
  60. data/ext/polars/src/io/cloud_options.rs +107 -0
  61. data/ext/polars/src/io/mod.rs +4 -0
  62. data/ext/polars/src/io/scan_options.rs +113 -0
  63. data/ext/polars/src/io/sink_options.rs +46 -0
  64. data/ext/polars/src/io/sink_output.rs +21 -0
  65. data/ext/polars/src/lazyframe/exitable.rs +39 -0
  66. data/ext/polars/src/lazyframe/general.rs +846 -368
  67. data/ext/polars/src/lazyframe/mod.rs +58 -5
  68. data/ext/polars/src/lazyframe/optflags.rs +59 -0
  69. data/ext/polars/src/lazyframe/serde.rs +36 -4
  70. data/ext/polars/src/lazyframe/sink.rs +46 -0
  71. data/ext/polars/src/lazygroupby.rs +38 -9
  72. data/ext/polars/src/lib.rs +574 -165
  73. data/ext/polars/src/map/lazy.rs +44 -74
  74. data/ext/polars/src/map/mod.rs +18 -254
  75. data/ext/polars/src/map/series.rs +241 -1087
  76. data/ext/polars/src/on_startup.rs +192 -9
  77. data/ext/polars/src/prelude.rs +1 -0
  78. data/ext/polars/src/rb_modules.rs +10 -57
  79. data/ext/polars/src/ruby/exceptions.rs +26 -0
  80. data/ext/polars/src/ruby/gvl.rs +104 -0
  81. data/ext/polars/src/ruby/lazy.rs +46 -0
  82. data/ext/polars/src/ruby/mod.rs +11 -0
  83. data/ext/polars/src/ruby/numo.rs +52 -0
  84. data/ext/polars/src/ruby/plan_callback.rs +198 -0
  85. data/ext/polars/src/ruby/rb_modules.rs +16 -0
  86. data/ext/polars/src/ruby/ruby_convert_registry.rs +51 -0
  87. data/ext/polars/src/ruby/ruby_function.rs +11 -0
  88. data/ext/polars/src/ruby/ruby_udf.rs +164 -0
  89. data/ext/polars/src/ruby/thread.rs +65 -0
  90. data/ext/polars/src/ruby/utils.rs +39 -0
  91. data/ext/polars/src/series/aggregation.rs +116 -91
  92. data/ext/polars/src/series/arithmetic.rs +16 -22
  93. data/ext/polars/src/series/comparison.rs +101 -222
  94. data/ext/polars/src/series/construction.rs +80 -70
  95. data/ext/polars/src/series/export.rs +98 -56
  96. data/ext/polars/src/series/general.rs +323 -440
  97. data/ext/polars/src/series/import.rs +22 -5
  98. data/ext/polars/src/series/map.rs +103 -0
  99. data/ext/polars/src/series/mod.rs +57 -15
  100. data/ext/polars/src/series/scatter.rs +139 -82
  101. data/ext/polars/src/sql.rs +16 -9
  102. data/ext/polars/src/testing/frame.rs +31 -0
  103. data/ext/polars/src/testing/mod.rs +5 -0
  104. data/ext/polars/src/testing/series.rs +31 -0
  105. data/ext/polars/src/timeout.rs +105 -0
  106. data/ext/polars/src/utils.rs +105 -4
  107. data/lib/polars/array_expr.rb +500 -22
  108. data/lib/polars/array_name_space.rb +384 -10
  109. data/lib/polars/batched_csv_reader.rb +48 -66
  110. data/lib/polars/binary_expr.rb +217 -0
  111. data/lib/polars/binary_name_space.rb +155 -1
  112. data/lib/polars/cat_expr.rb +224 -0
  113. data/lib/polars/cat_name_space.rb +132 -32
  114. data/lib/polars/catalog/unity/catalog_info.rb +20 -0
  115. data/lib/polars/catalog/unity/column_info.rb +31 -0
  116. data/lib/polars/catalog/unity/namespace_info.rb +21 -0
  117. data/lib/polars/catalog/unity/table_info.rb +50 -0
  118. data/lib/polars/catalog.rb +448 -0
  119. data/lib/polars/collect_batches.rb +22 -0
  120. data/lib/polars/config.rb +3 -3
  121. data/lib/polars/convert.rb +201 -36
  122. data/lib/polars/data_frame.rb +2851 -1017
  123. data/lib/polars/data_frame_plot.rb +173 -0
  124. data/lib/polars/data_type_expr.rb +52 -0
  125. data/lib/polars/data_type_group.rb +6 -0
  126. data/lib/polars/data_types.rb +118 -18
  127. data/lib/polars/date_time_expr.rb +426 -84
  128. data/lib/polars/date_time_name_space.rb +384 -111
  129. data/lib/polars/dynamic_group_by.rb +102 -10
  130. data/lib/polars/exceptions.rb +50 -5
  131. data/lib/polars/expr.rb +2159 -915
  132. data/lib/polars/extension_expr.rb +39 -0
  133. data/lib/polars/extension_name_space.rb +39 -0
  134. data/lib/polars/functions/aggregation/horizontal.rb +11 -6
  135. data/lib/polars/functions/aggregation/vertical.rb +2 -3
  136. data/lib/polars/functions/as_datatype.rb +290 -8
  137. data/lib/polars/functions/business.rb +95 -0
  138. data/lib/polars/functions/col.rb +6 -5
  139. data/lib/polars/functions/datatype.rb +62 -0
  140. data/lib/polars/functions/eager.rb +426 -24
  141. data/lib/polars/functions/escape_regex.rb +21 -0
  142. data/lib/polars/functions/lazy.rb +813 -195
  143. data/lib/polars/functions/lit.rb +21 -10
  144. data/lib/polars/functions/range/int_range.rb +74 -2
  145. data/lib/polars/functions/range/linear_space.rb +195 -0
  146. data/lib/polars/functions/range/time_range.rb +1 -1
  147. data/lib/polars/functions/repeat.rb +7 -12
  148. data/lib/polars/functions/whenthen.rb +2 -2
  149. data/lib/polars/group_by.rb +188 -58
  150. data/lib/polars/iceberg_dataset.rb +108 -0
  151. data/lib/polars/in_process_query.rb +37 -0
  152. data/lib/polars/io/cloud.rb +18 -0
  153. data/lib/polars/io/csv.rb +336 -128
  154. data/lib/polars/io/database.rb +19 -4
  155. data/lib/polars/io/delta.rb +134 -0
  156. data/lib/polars/io/iceberg.rb +34 -0
  157. data/lib/polars/io/ipc.rb +63 -63
  158. data/lib/polars/io/json.rb +16 -0
  159. data/lib/polars/io/lines.rb +172 -0
  160. data/lib/polars/io/ndjson.rb +176 -20
  161. data/lib/polars/io/parquet.rb +173 -95
  162. data/lib/polars/io/scan_options.rb +55 -0
  163. data/lib/polars/io/sink_options.rb +27 -0
  164. data/lib/polars/io/utils.rb +17 -0
  165. data/lib/polars/lazy_frame.rb +3017 -622
  166. data/lib/polars/lazy_group_by.rb +436 -2
  167. data/lib/polars/list_expr.rb +551 -59
  168. data/lib/polars/list_name_space.rb +465 -51
  169. data/lib/polars/meta_expr.rb +146 -24
  170. data/lib/polars/name_expr.rb +87 -2
  171. data/lib/polars/query_opt_flags.rb +264 -0
  172. data/lib/polars/rolling_group_by.rb +90 -5
  173. data/lib/polars/scan_cast_options.rb +86 -0
  174. data/lib/polars/schema.rb +128 -0
  175. data/lib/polars/selector.rb +245 -0
  176. data/lib/polars/selectors.rb +1048 -201
  177. data/lib/polars/series.rb +2522 -774
  178. data/lib/polars/series_plot.rb +72 -0
  179. data/lib/polars/slice.rb +1 -1
  180. data/lib/polars/sql_context.rb +13 -6
  181. data/lib/polars/string_cache.rb +19 -72
  182. data/lib/polars/string_expr.rb +561 -107
  183. data/lib/polars/string_name_space.rb +781 -109
  184. data/lib/polars/struct_expr.rb +139 -18
  185. data/lib/polars/struct_name_space.rb +19 -1
  186. data/lib/polars/testing.rb +24 -273
  187. data/lib/polars/utils/constants.rb +2 -0
  188. data/lib/polars/utils/construction/data_frame.rb +410 -0
  189. data/lib/polars/utils/construction/series.rb +350 -0
  190. data/lib/polars/utils/construction/utils.rb +9 -0
  191. data/lib/polars/utils/convert.rb +18 -8
  192. data/lib/polars/utils/deprecation.rb +11 -0
  193. data/lib/polars/utils/parse.rb +62 -9
  194. data/lib/polars/utils/reduce_balanced.rb +43 -0
  195. data/lib/polars/utils/serde.rb +22 -0
  196. data/lib/polars/utils/unstable.rb +19 -0
  197. data/lib/polars/utils/various.rb +86 -1
  198. data/lib/polars/utils.rb +63 -48
  199. data/lib/polars/version.rb +1 -1
  200. data/lib/polars.rb +85 -2
  201. metadata +80 -28
  202. data/ext/polars/src/allocator.rs +0 -13
  203. data/ext/polars/src/batched_csv.rs +0 -138
  204. data/ext/polars/src/functions/string_cache.rs +0 -25
  205. data/ext/polars/src/map/dataframe.rs +0 -338
  206. data/lib/polars/plot.rb +0 -109
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a0cb16ed469de5f91350a64df092c73e535dbe83dd3f556623a8c1c556a4d143
4
- data.tar.gz: 43e9d863d7e538e051c20409d16b289a9b8bf5bbc46bb1e957f015c25bd3f46e
3
+ metadata.gz: 2166cba9f090e8a98fdd28f09ef84bda7130502339522fb724f994581191ffa0
4
+ data.tar.gz: bfdd2939e545302b8a050c706112ae59a297054d048daa4551fd1227589eeba6
5
5
  SHA512:
6
- metadata.gz: fb5c8ce3bd83555e15bf829f286005612f8a9347afb87e8721fdd1bc1f58fe7219482a9c05993cd4a23f462fdca6da0b398818af0aa2915e3f260dff4337ccb3
7
- data.tar.gz: 222daf0503fa45c63f7e835fa9dff3be62270c8c171def499b57cdd5fa94ffead34b759492d16749beca4f61ba732716922cea0a9becd2ef0a0d93f8ff591930
6
+ metadata.gz: 189165a0d01be7174c29ebe5678c9e7bc0cd88e6f0bada0e424967b17b3e56f649645a4bd9de7b409f270390f82be94faf7d12a3bd3ca39de2cc04705382eb78
7
+ data.tar.gz: 1daf4e9a15adb6f09497ac729ef5ff4fb33de85df5b65d79bfca5de976c9f09d371e7564c00814c9cf20dc606b413fb708de3ea1aeb44c337e1aacaebd09a457
data/CHANGELOG.md CHANGED
@@ -1,3 +1,277 @@
1
+ ## 0.26.0 (2026-06-04)
2
+
3
+ - Updated Polars to 0.54.4
4
+ - Added `truncate` method to `Series` and `Expr`
5
+ - Added `gather` method to `DataFrame` and `LazyFrame`
6
+ - Added `is_empty` method to `Expr`
7
+ - Added `get` method to `BinaryNameSpace`
8
+ - Added `maintain_order` option to `implode` and `merge_sorted` methods
9
+ - Added `holidays` option to `add_business_days` and `is_business_day` methods
10
+ - Added `column_naming` option to `pivot` method
11
+ - Added `dtype` option to `reinterpret` method
12
+ - Added `nulls_last` option to `set_sorted` method
13
+ - Added support for non-UTC time zones when converting datetime values to Ruby
14
+ - Made `bigdecimal` optional
15
+ - Fixed `unpivot` method when `on` option is `nil`
16
+
17
+ Changed defaults
18
+
19
+ - Changed default `name` for `read_lines` and `scan_lines` methods from `lines` to `line`
20
+ - Changed default `how` for `align_frames` method from `left` to `full`
21
+ - Changed default `min_samples` for `rolling_sum_by` method from `1` to `0`
22
+ - Changed default `with_replacement` for `sample` method from `true` to `false` for `Expr`
23
+ - Changed default `base` for `entropy` method from `2` to `Math::E` for `Expr`
24
+ - Changed default `normalize` for `entropy` method from `false` to `true` for `Series`
25
+ - Changed default `delimiter` for `join` method from `-` to empty string for `StringExpr` and `StringNameSpace`
26
+
27
+ ## 0.25.1 (2026-03-23)
28
+
29
+ - Added `explain_all` method to `Polars`
30
+ - Fixed `storage_options` option for `scan_parquet` and `scan_ipc` methods
31
+ - Fixed `Struct` construction with `nil` values
32
+ - Fixed `read_database` method for JSON columns
33
+
34
+ ## 0.25.0 (2026-02-18)
35
+
36
+ - Updated Polars to 0.53.0
37
+ - Added `Float16` type
38
+ - Changed `each` method for `GroupBy` to always return `Array` keys
39
+
40
+ Added methods
41
+
42
+ - Added `self_dtype` method to `Polars`
43
+ - Added `map_batches` method to `Polars`, `Expr`, and `LazyFrame`
44
+ - Added `map_groups` method to `Polars`, `GroupBy`, `DynamicGroupBy`, `RollingGroupBy`, and `LazyGroupBy`
45
+ - Added `map_columns` method to `DataFrame`
46
+ - Added `map_elements` and `pipe` methods to `Expr`
47
+ - Added `pivot` method to `LazyFrame`
48
+ - Added `sql` method to `Series`
49
+ - Added `having` method to `GroupBy`, `DynamicGroupBy`, `RollingGroupBy`, and `LazyGroupBy`
50
+ - Added `mean` method to `ArrayNameSpace`
51
+ - Added `slice`, `head`, and `tail` methods to `BinaryExpr` and `BinaryNameSpace`
52
+ - Added `get` method to `BinaryExpr`
53
+ - Added `as_expression` method to `MetaExpr`
54
+ - Added `map_fields` method to `NameExpr`
55
+
56
+ Added options
57
+
58
+ - Added `compression`, `compression_level`, and `check_extension` options to `write_csv` method
59
+ - Added `empty_as_null` and `keep_nulls` options to `explode` method
60
+ - Added `ignore_nulls` option to `first` and `last` methods
61
+ - Added `leftmost` option to `find_many`, `extract_many`, and `replace_many` methods
62
+ - Added `maintain_order` option to `mode` method
63
+ - Added `strict` option to `concat` and `union` methods for `Polars`
64
+ - Added `null_on_oob` option to `get` method for `Expr`
65
+ - Added `literal` and `strict` options to `split` method for `StringExpr`
66
+
67
+ ## 0.24.0 (2026-02-04)
68
+
69
+ - Added support for Ruby 4.0
70
+ - Added support for streaming engine
71
+ - Added support for releasing GVL
72
+ - Added experimental support for background queries
73
+ - Improved exception classes
74
+ - Changed `schema` method to return `Schema` instead of `Hash`
75
+ - Changed `partition_by(as_dict: true)` method to always return `Array` keys
76
+ - Removed support for string and symbol data types (`:i32`, `:f64`, etc.)
77
+ - Dropped support for Ruby < 3.3
78
+
79
+ Changed defaults
80
+
81
+ - Changed default `statistics` for `write_parquet` method from `false` to `true`
82
+ - Changed default `compression` for `sink_ipc` method from `zstd` to `uncompressed`
83
+ - Changed default `raise_if_empty` for `read_csv` method from `false` to `true`
84
+ - Changed default `eager` for `ones` and `zeros` method from `true` to `false`
85
+ - Changed default `ignore_nulls` for `ewm_mean`, `ewm_std`, and `ewm_var` methods from `true` to `false`
86
+ - Changed default `null_on_oob` for `get` method from `true` to `false`
87
+ - Changed default `maintain_order` for `unique` method from `true` to `false` for `DataFrame` and `LazyFrame`
88
+ - Changed default `keep` for `unique` method from `first` to `any` for `DataFrame` and `LazyFrame`
89
+ - Changed default `null_equal` for `equals` method from `false` to `true` for `Series`
90
+ - Changed default `strict` for `decode` method from `false` to `true` for `StringNameSpace`
91
+
92
+ Added methods
93
+
94
+ - Added `plot` method to `Series`
95
+ - Added `concat_arr`, `escape_regex`, `int_ranges`, and `linear_spaces` methods to `Polars`
96
+ - Added `rolling_rank` and `rolling_rank_by` methods to `Series` and `Expr`
97
+ - Added `days_in_month` method to `DateTimeExpr` and `DateTimeNameSpace`
98
+ - Added `agg` and `item` methods to `ListExpr` and `ListNameSpace`
99
+ - Added `agg` and `eval` methods to `ArrayExpr` and `ArrayNameSpace`
100
+ - Added `replace` method to `NameExpr`
101
+
102
+ Added options
103
+
104
+ - Added more options to `read_csv` and `scan_csv` methods
105
+ - Added more options to `read_ndjson` and `scan_ndjson` methods
106
+ - Added more options to `write_csv` method
107
+ - Added more options to `sort` method
108
+ - Added more options to `over` method
109
+ - Added `ambiguous` option to `strptime` method
110
+
111
+ Renamed options
112
+
113
+ - Renamed `reverse` option to `descending`
114
+ - Renamed `sep` option to `separator`
115
+ - Renamed `row_count_name` option to `row_index_name`
116
+ - Renamed `row_count_offset` option to `row_index_offset`
117
+ - Renamed `comment_char` option to `comment_prefix` for `read_csv`, `read_csv_batched`, and `scan_csv` methods
118
+ - Renamed `dtypes` option to `schema_overrides` for `read_csv`, `read_csv_batched`, and `scan_csv` methods
119
+ - Renamed `parse_dates` option to `try_parse_dates` for `read_csv`, `read_csv_batched`, and `scan_csv` methods
120
+ - Renamed `min_periods` option to `min_samples`
121
+ - Renamed `by` option to `group_by` for `group_by_dynamic`, `rolling`, and `upsample` methods
122
+ - Renamed `frac` option to `fraction` for `sample` methods
123
+ - Renamed `drop_nulls` option to `ignore_nulls` for `all` and `any` methods
124
+ - Renamed `join_nulls` option to `nulls_equal` for `join` method
125
+ - Renamed `strict` option to `check_dtypes` for `equals` method
126
+ - Renamed `quote` option to `quote_char` for `write_csv` method
127
+ - Renamed `data_pagesize_limit` option to `data_page_size` for `sink_parquet` method
128
+ - Renamed `unit` option to `time_unit` for `from_epoch` method
129
+ - Renamed `eager_execution` option to `eager` for `SQLContext` constructor
130
+
131
+ Removed methods
132
+
133
+ - Removed `take` and `take_every` methods (use `gather` and `gather_every` instead)
134
+ - Removed `clip_min` and `clip_max` methods (use `clip` instead)
135
+ - Removed `argsort` and `argsort_by` methods (use `arg_sort` and `arg_sort_by` instead)
136
+ - Removed `shift_and_fill` methods (use `shift(fill_value:)` instead)
137
+ - Removed `group`, `groupby`, `groupby_dynamic`, and `groupby_rolling` methods (use `group_by*` instead)
138
+ - Removed `group_by_rolling` methods (use `rolling` instead)
139
+ - Removed `asin`, `asinh`, `acos`, `acosh`, `atan`, and `atanh` methods (use `arc*` instead)
140
+ - Removed `days`, `hours`, `minutes`, `seconds`, `milliseconds`, `microseconds`, and `nanoseconds` methods (use `total_*` instead)
141
+ - Removed `cumsum`, `cumsum_horizontal`, `cumprod`, `cummin`, `cummax`, `cumcount`, and `cumfold` methods (use `cum_*` instead)
142
+ - Removed `with_column` methods (use `with_columns` instead)
143
+ - Removed `where` method (use `filter` instead)
144
+ - Removed `series_equal` and `frame_equal` methods (use `equals` instead)
145
+ - Removed `apply` methods (use `map_elements` or `map_rows` instead)
146
+ - Removed `lengths` methods (use `len` or `len_bytes` instead)
147
+ - Removed `keep_name`, `prefix`, `suffix`, and `map_alias` methods (use `name` methods instead)
148
+ - Removed `ljust` and `rjust` methods (use `pad_end` and `pad_start` instead)
149
+ - Removed `lstrip` and `rstrip` methods (use `strip_chars_start` and `strip_chars_end` instead)
150
+ - Removed `strip` method (use `strip_chars` instead)
151
+ - Removed `n_chars` method (use `len_chars` instead)
152
+ - Removed `parse_int` method (use `to_integer` instead)
153
+ - Removed `json_extract` method (use `json_decode` instead)
154
+ - Removed `cleared` methods (use `clear` instead)
155
+ - Removed `melt` method (use `unpivot` instead)
156
+ - Removed `count_match` methods (use `count_matches` instead)
157
+ - Removed `is_numeric`, `is_datelike`, `is_temporal`, `is_float`, `is_bool`, `is_boolean`, and `is_utf8` methods from `Series` (use `dtype` methods instead)
158
+ - Removed `numeric?`, `datelike?`, `temporal?`, `float?`, `bool?`, `boolean?`, and `utf8?` methods from `Series` (use `dtype` methods instead)
159
+ - Removed `is_first` method (use `is_first_distinct` instead)
160
+ - Removed `approx_unique` method (use `approx_n_unique` instead)
161
+ - Removed `set_at_idx` method (use `scatter` instead)
162
+ - Removed `insert_at_idx` and `replace_at_idx` methods (use `insert_column` and `replace_column` instead)
163
+ - Removed `find_idx_by_name` method (use `get_column_index` instead)
164
+ - Removed `avg` method (use `mean` instead)
165
+ - Removed `arctan2d` method (use `arctan2` + `degrees` instead)
166
+ - Removed `read_sql` method (use `read_database` instead)
167
+ - Removed `with_row_count` methods (use `with_row_index` instead)
168
+ - Removed `has_validity` method (use `has_nulls` instead)
169
+ - Removed `shrink_dtype` method from `Expr` (use `Series#shrink_dtype` instead)
170
+ - Removed `replace` method from `DataFrame` (use `[]=` instead)
171
+ - Removed `read_json` and `write_json` methods from `LazyFrame` (use `deserialize` and `serialize` instead)
172
+ - Removed `fetch` method from `LazyFrame` (use `head` + `collect` instead)
173
+ - Removed `with_context` method from `LazyFrame` (use `Polars.concat(how: "horizontal")` instead)
174
+ - Removed `with_time_unit` method from `DateTimeExpr` and `DateTimeNameSpace` (use `cast(Polars::Int64).cast(Polars::Datetime.new(...))` instead)
175
+ - Removed `datetime` method from `DateTimeExpr` (use `replace_time_zone` instead)
176
+ - Removed `mean` and `median` methods from `DateTimeNameSpace` (use `Series#mean` and `Series#median` instead)
177
+ - Removed `concat` method from `StringExpr` and `StringNameSpace` (use `join("-")` instead)
178
+ - Removed `describe_plan` and `describe_optimized_plan` methods (use `explain` instead)
179
+ - Removed `plot` method from `GroupBy` (use `DataFrame#plot` instead)
180
+
181
+ Removed options
182
+
183
+ - Removed `dtype_if_empty` option from `Series` constructor
184
+ - Removed `warn_if_unsorted` option from `rolling_*_by` methods
185
+ - Removed `in_place` option from `rename` method
186
+ - Removed `append_chunks` option from `append` method
187
+ - Removed `name` option from `repeat` method
188
+ - Removed `utc` option from `strptime` method
189
+ - Removed `truncate` option from `group_by_dynamic` methods
190
+ - Removed `eager` option from `from_epoch` method
191
+ - Removed `string_cache` option from `collect` and `collect_all` methods
192
+
193
+ ## 0.23.0 (2025-11-04)
194
+
195
+ - Updated Polars to 0.52.0
196
+
197
+ ## 0.22.0 (2025-09-17)
198
+
199
+ - Updated Polars to 0.51.0
200
+ - Added `serialize` and `deserialize` methods to `DataFrame`
201
+ - Added `storage_options` and `retries` options to `sink_ipc` method
202
+ - Added `business_day_count` method to `Polars`
203
+ - Added experimental support for Iceberg
204
+ - Added experimental `cast_options` option to `scan_parquet` method
205
+ - Changed `read_parquet_schema` method to return `Schema`
206
+ - Fixed `Object` type
207
+
208
+ ## 0.21.1 (2025-08-18)
209
+
210
+ - Added `read_parquet_metadata` method to `Polars`
211
+ - Added more methods to `Series` and `Expr`
212
+ - Added more methods to `DataFrame` and `LazyFrame`
213
+ - Added more methods to `ArrayExpr` and `ArrayNameSpace`
214
+ - Added more methods to `BinaryExpr` and `BinaryNameSpace`
215
+ - Added more methods to `CatExpr` and `CatNameSpace`
216
+ - Added more methods to `DateTimeExpr` and `DateTimeNameSpace`
217
+ - Added more methods to `ListExpr` and `ListNameSpace`
218
+ - Added more methods to `MetaExpr`
219
+ - Added more methods to `NameExpr`
220
+ - Added more methods to `StringExpr` and `StringNameSpace`
221
+ - Added more methods to `StructExpr` and `StructNameSpace`
222
+ - Fixed `subset` option for `drop_nulls` method
223
+
224
+ ## 0.21.0 (2025-08-03)
225
+
226
+ - Updated Polars to 0.50.0
227
+ - Added `Catalog` class
228
+ - Added `rows_by_key` method to `DataFrame`
229
+ - Added set methods to `ListExpr` and `ListNameSpace`
230
+ - Added `filter` method to `ListExpr` and `ListNameSpace`
231
+ - Added `extra_columns` option to `scan_parquet` method
232
+ - Removed `columns` option from `DataFrame` constructor (use `schema` instead)
233
+ - Removed `has_header` option from `write_csv` method (use `include_header` instead)
234
+
235
+ ## 0.20.0 (2025-06-23)
236
+
237
+ - Updated Polars to 0.49.1
238
+
239
+ ## 0.19.0 (2025-05-20)
240
+
241
+ - Updated Polars to 0.48.0
242
+
243
+ ## 0.18.0 (2025-05-05)
244
+
245
+ - Updated Polars to 0.47.1
246
+
247
+ ## 0.17.1 (2025-04-12)
248
+
249
+ - Added support for horizontal concatenation of `LazyFrame`s
250
+ - Added `diagonal_relaxed` and `align` strategies to `concat` method
251
+ - Added `interpolate_by` method to `Series` and `Expr`
252
+ - Added `iter_columns` and `iter_slices` methods to `DataFrame`
253
+ - Added `maintain_order` option to `join` method
254
+ - Added `collect_schema` method to `DataFrame`
255
+ - Added `write_database` method to `DataFrame` (experimental)
256
+ - Fixed error with `to_numo` method for `Boolean` series with null values
257
+ - Fixed error with `slice` method and negative offset
258
+
259
+ ## 0.17.0 (2025-01-28)
260
+
261
+ - Updated Polars to 0.46.0
262
+ - Changed `write_json` method for `DataFrame` to be row-oriented
263
+ - Fixed error with `Series` constructor and `strict: false`
264
+
265
+ ## 0.16.0 (2024-12-29)
266
+
267
+ - Updated Polars to 0.45.1
268
+ - Added support for Ruby 3.4
269
+ - Added experimental support for Delta Lake
270
+ - Added `by_name` selector
271
+ - Added `thread_pool_size` method to `Polars`
272
+ - Removed `axis` option from `min`, `max`, `sum`, and `mean` methods (use `*_horizontal` instead)
273
+ - Dropped support for Ruby < 3.2
274
+
1
275
  ## 0.15.0 (2024-11-20)
2
276
 
3
277
  - Updated Polars to 0.44.2