Modin 0.24.0
This release upgrades the pandas version to 2.1, updates the minimum supported python version up to 3.9, introduces ModinDataLoader to improve interaction with PyTorch, fixes several issues with interchange protocol that solved known compatibility issues with Plotly, Seaborn and Altair, includes new version of HDK 0.8. It also includes some other new features, and many bug fixes.
Key Features and Updates Since 0.23.0
- Stability and Bugfixes
- FIX-#0000: Don't test experimental xgboost with Ray nightly build (#6424)
- FIX-#0000: Fix xgboost tests with
ray>2.6.0(#6425) - FIX-#1930: Fix one of the cases of heterogeneous data for
read_csv(#5507) - FIX-#4347:
read_excel: defaults to pandas for unsupported types of 'io' (#6462) - FIX-#4580: Fix access by row label in
queryandeval(#6488) - FIX-#4687: Change
Column.null_countto return a built-inintinstead of NumPy scalar (#6526) - FIX-#5164: Fix
unwrap_partitionsfor virtual partitions whenaxis=None(#6560) - FIX-#5536: Remove branch disabling
__getattribute__for experimental mode (#6529) - FIX-#5627: Stop checking
temp_df.dtype == 'category'(#6360) - FIX-#5972: Compute correct dtype for
Series.str.find/index/rfind/rindex(#6426) - FIX-#6219: Don't default to pandas for
copyon empty DataFrame/Series objects (#6371) - FIX-#6299:
__array__method always returns array of vanilla numpy (#6300) - FIX-#6334: Improve error message if HDK isn't installed in the environment (#6358)
- FIX-#6347: Remove 'modin in the cloud' experimental feature (#6408)
- FIX-#6364: Make reshuffling work with
BenchmarkMode.put(True)(#6365) - FIX-#6367: Enable support for
groupby.size()in reshuffling groupby (#6370) - FIX-#6368: Apply deferred indices before map-reduce groupby (#6369)
- FIX-#6372: Precompute dtypes for
sumoperation (#6421) - FIX-#6375: Don't initialize engines at import time (#6374)
- FIX-#6386: Don't make unnecessary
astypecalls formodin.array.sumop (#6395) - FIX-#6392: Compute dtypes for the
DataFrame.mean()result (#6520) - FIX-#6394: Preserve dtypes for
__setitem__op when using not hashable key (#6547) - FIX-#6396: Set
__factorytoNonein case of any problems during initialization (#6397) - FIX-#6402: Allow datetime and timedelta types in
diff(#6403) - FIX-#6405: Apply
disable_loggingto__getattr__(#6406) - FIX-#6410: Add a link to @modin_project twitter (#6411)
- FIX-#6414: Fix
read_featherwithpyarrow<11.0(#6415) - FIX-#6427: Make code compatible with
flake8==6.1.0(#6428) - FIX-#6429: Exclude
pymssql==2.2.8from environments (#6430) - FIX-#6436: Support
~in paths in IO functions correctly (#6448) - FIX-#6443: Cast boolean columns before
sum|mean|mediangroupby aggregations (#6444) - FIX-#6446: Stop requiring modin-xgboost approval (#6447)
- FIX-#6456: Create fake xgboost module for building docs (#6457)
- FIX-#6459: Support
fastparquet>=2023.1.0(#6458) - FIX-#6465: Fix
groupby.apply()for UDFs that change the output's shape (#6506) - FIX-#6479: HDK CalciteBuilder: Do not call
is_bool_dtype()for categorical (#6480) - FIX-#6483: Default to pandas for
__array_ufunc__(#6486) - FIX-#6509: Fix 'reshuffling' in case of a string key (#6510)
- FIX-#6514:
test_sort_cols_strfrom test_dataframe.py crashed on HDK 0.7.0 and python 3.9 (#6515) - FIX-#6516: HDK: test_dataframe.py is crashed if Calcite is disabled (#6517)
- FIX-#6518: Fix interchange protocol for string columns (#6523)
- FIX-#6519: Consider
botocoreas an optional dependency (#6521) - FIX-#6532: Fix
read_excelso that it doesn't userich_textparam for oldopenpyxl(#6534) - FIX-#6535: Pin
s3fs<2023.9.0(#6536) - FIX-#6537: Unpin
s3fs<2023.9.0(#6544) - FIX-#6540: Correct handling of range indices and index names in
read_parquet(#6545) - FIX-#6541: Fix
ValueError: buffer source array is read-onlyforiloc(#6538) - FIX-#6549: Remove usage of
dfsqlmodule (#6550) - FIX-#6552: Avoid
FutureWarnings ingroupbyunless necessary (#6595) - FIX-#6553: Fix
read_csvwithiterator=True(#6554) - FIX-#6558: Normalize the number of partitions after
.read_parquet()(#6559) - FIX-#6561: Remove
MODIN_OMNISCI_*env vars in favor ofMODIN_HDK_*(#6562) - FIX-#6565: Don't implement
mapfunction viaapplymap(#6566) - FIX-#6572: Execute simple queries row-wise in pandas backend (#6575)
- FIX-#6582: Avoid
FutureWarnings inbfill/backfill/ffill/padunless necessary (#6599) - FIX-#6587: Use different env files for unidist engine for windows and linux (#6588)
- FIX-#6601:
sort_valuesshouldn't affect source dataframe/series (#6603)
- Performance enhancements
- PERF-#6332: Don't materialize axes in
concatoperation (#6381) - PERF-#6373: Preserve dtypes cache for
_repartition(#6376) - PERF-#6378: Use
numpy.arrayoperations in internals ofiloc/locoperation (#6393) - PERF-#6388: Avoid masking in
__getitem__when the number of rows to be taken > 90% (#6423) - PERF-#6398: Improved performance of list-like objects insertion into DataFrames (#6476)
- PERF-#6433: Implement
.dropna()using map-reduce pattern (#6472) - PERF-#6437: Preserve dtypes for
reindex(#6438) - PERF-#6464: Improve reshuffling for multi-column groupby in low-cardinality cases (#6533)
- PERF-#6466: Verify indices equality without triggering any computations (#6491)
- PERF-#6478: Do not propagate new columns if they're identical to the previous ones (#6481)
- PERF-#6524: Add a 'column' shape hint for the results of
qc.to_datetime()(#6525) - PERF-#6583: Remove redundant index reassignment in
query()(#6584) - PERF-#6590: Chunk axes independently in
.from_pandas()(#6591)
- PERF-#6332: Don't materialize axes in
- Refactor Codebase
- REFACTOR-#4278: Remove unused arguments from
BasePandasDataset.apply(#6451) - REFACTOR-#4902: Use
isort(#6551) - REFACTOR-#6470: Remove
Patcherinternal class (#6471) - REFACTOR-#6489: Enforce API-layer bool/integer argument for
__invert__(#6490) - REFACTOR-#6569: Use
contextlib.nullcontextinstead of custom one (#6570) - REFACTOR-#6576: Don't use deprecated
is_int64_dtypeandis_period_dtypefunction (#6577)
- REFACTOR-#4278: Remove unused arguments from
- Update testing suite
- TEST-#0000: Download ray wheel for python 3.9 (#6513)
- TEST-#2008: Reduce runtime of CI checks a lot (#6356)
- TEST-#4270: Revert disabling
time_groupby_agg_nuniqueASV bench (#6564) - TEST-#4348: Use
psycopg2-binaryfor testing and developing purpose (#6573) - TEST-#4477: Add tests for
df.evalwith scalar andgroupby.transofmcall in the expr (#6546) - TEST-#4643: Add interchange test for empty dataframe (#6454)
- TEST-#5008: Set benchmark mode within unit test instead of with environment variable (#6359)
- TEST-#6349: Update minimum versions for test dependencies in general environments (#6350)
- TEST-#6439: Create HDK environment manually for ASV (#6431)
- TEST-#6449: Run tests in test_dmatrix.py only for Ray engine (#6450)
- TEST-#6460: Don't use
reprto force materialization (#6461) - TEST-#6469: Pin
numexpr<2.8.5(#6474) - TEST-#6477: Update ASV to 0.5.1 (#6432)
- TEST-#6497: Remove
boto3from environments to speedup creation (#6496) - TEST-#6505: Update python version for ASV benchmarks on HDK (#6504)
- TEST-#6593: Adapt tests for pandas 2.1.1 (#6592)
- Documentation improvements
- New Features
- FEAT-#1611: Add some datetime extraction functions for HDK (#6568)
- FEAT-#5645: Add support for modin's numpy array in
dataframe.insertfunction (#6400) - FEAT-#6139:
DataLoaderinterplay. (#6140) - FEAT-#6377: HDK: Do not keep reference to arrow table imported to HDK (#6380)
- FEAT-#6389: Make sure git ignores logs in
.modinfolder (#6390) - FEAT-#6401: Support compression param and more file extensions in
to_parquet(#6404) - FEAT-#6407: Update minimum dependency versions (#6342)
- FEAT-#6417: Add support for filters to
read_parquet(#6442) - FEAT-#6434: HDK: Do not convert dictionary columns to string when importing arrow tables (#6435)
- FEAT-#6440: Use different HDK parameters for different queries (#6441)
- FEAT-#6484: HDK: Add support for
nlargest/nsmallestgroupby aggregation (#6485) - FEAT-#6500: HDK: Add support for
datetime64toint64cast (#6501) - FEAT-#6502: HDK: Add
enable_multifrag_execution_result=1HDK launch parameter (#6503) - FEAT-#6511: Update the minimum supported python version up to 3.9 (#6508)
- FEAT-#6522: Update to pandas 2.1.0 (#6512)
- FEAT-#6527: HDK: Add support for the quantile group by aggregation. (#6528)
- FEAT-#6597: Bump pyhdk version to 0.8 (#6598)
Contributors
@AndreyPavlenko
@RehanSD
@YarShev
@anmyachev
@dchigarev
@mvashishtha
@vnlitvinov
@abykovsk
@zmbc
@noloerino
@rentruewang