maxframe 0.1.0b5__cp38-cp38-macosx_11_0_arm64.whl
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.
Potentially problematic release.
This version of maxframe might be problematic. Click here for more details.
- maxframe/__init__.py +32 -0
- maxframe/_utils.cpython-38-darwin.so +0 -0
- maxframe/_utils.pxd +33 -0
- maxframe/_utils.pyx +547 -0
- maxframe/codegen.py +528 -0
- maxframe/config/__init__.py +15 -0
- maxframe/config/config.py +443 -0
- maxframe/config/tests/__init__.py +13 -0
- maxframe/config/tests/test_config.py +103 -0
- maxframe/config/tests/test_validators.py +34 -0
- maxframe/config/validators.py +57 -0
- maxframe/conftest.py +139 -0
- maxframe/core/__init__.py +65 -0
- maxframe/core/base.py +156 -0
- maxframe/core/entity/__init__.py +44 -0
- maxframe/core/entity/chunks.py +68 -0
- maxframe/core/entity/core.py +152 -0
- maxframe/core/entity/executable.py +337 -0
- maxframe/core/entity/fuse.py +73 -0
- maxframe/core/entity/objects.py +100 -0
- maxframe/core/entity/output_types.py +90 -0
- maxframe/core/entity/tileables.py +438 -0
- maxframe/core/entity/utils.py +24 -0
- maxframe/core/graph/__init__.py +17 -0
- maxframe/core/graph/builder/__init__.py +16 -0
- maxframe/core/graph/builder/base.py +86 -0
- maxframe/core/graph/builder/chunk.py +430 -0
- maxframe/core/graph/builder/tileable.py +34 -0
- maxframe/core/graph/builder/utils.py +41 -0
- maxframe/core/graph/core.cpython-38-darwin.so +0 -0
- maxframe/core/graph/core.pyx +467 -0
- maxframe/core/graph/entity.py +171 -0
- maxframe/core/graph/tests/__init__.py +13 -0
- maxframe/core/graph/tests/test_graph.py +205 -0
- maxframe/core/mode.py +96 -0
- maxframe/core/operator/__init__.py +34 -0
- maxframe/core/operator/base.py +450 -0
- maxframe/core/operator/core.py +276 -0
- maxframe/core/operator/fetch.py +53 -0
- maxframe/core/operator/fuse.py +29 -0
- maxframe/core/operator/objects.py +72 -0
- maxframe/core/operator/shuffle.py +111 -0
- maxframe/core/operator/tests/__init__.py +13 -0
- maxframe/core/operator/tests/test_core.py +64 -0
- maxframe/core/tests/__init__.py +13 -0
- maxframe/core/tests/test_mode.py +75 -0
- maxframe/dataframe/__init__.py +81 -0
- maxframe/dataframe/arithmetic/__init__.py +359 -0
- maxframe/dataframe/arithmetic/abs.py +33 -0
- maxframe/dataframe/arithmetic/add.py +60 -0
- maxframe/dataframe/arithmetic/arccos.py +28 -0
- maxframe/dataframe/arithmetic/arccosh.py +28 -0
- maxframe/dataframe/arithmetic/arcsin.py +28 -0
- maxframe/dataframe/arithmetic/arcsinh.py +28 -0
- maxframe/dataframe/arithmetic/arctan.py +28 -0
- maxframe/dataframe/arithmetic/arctanh.py +28 -0
- maxframe/dataframe/arithmetic/around.py +152 -0
- maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
- maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
- maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
- maxframe/dataframe/arithmetic/ceil.py +28 -0
- maxframe/dataframe/arithmetic/core.py +342 -0
- maxframe/dataframe/arithmetic/cos.py +28 -0
- maxframe/dataframe/arithmetic/cosh.py +28 -0
- maxframe/dataframe/arithmetic/degrees.py +28 -0
- maxframe/dataframe/arithmetic/docstring.py +442 -0
- maxframe/dataframe/arithmetic/equal.py +56 -0
- maxframe/dataframe/arithmetic/exp.py +28 -0
- maxframe/dataframe/arithmetic/exp2.py +28 -0
- maxframe/dataframe/arithmetic/expm1.py +28 -0
- maxframe/dataframe/arithmetic/floor.py +28 -0
- maxframe/dataframe/arithmetic/floordiv.py +64 -0
- maxframe/dataframe/arithmetic/greater.py +57 -0
- maxframe/dataframe/arithmetic/greater_equal.py +57 -0
- maxframe/dataframe/arithmetic/invert.py +33 -0
- maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
- maxframe/dataframe/arithmetic/less.py +57 -0
- maxframe/dataframe/arithmetic/less_equal.py +57 -0
- maxframe/dataframe/arithmetic/log.py +28 -0
- maxframe/dataframe/arithmetic/log10.py +28 -0
- maxframe/dataframe/arithmetic/log2.py +28 -0
- maxframe/dataframe/arithmetic/mod.py +60 -0
- maxframe/dataframe/arithmetic/multiply.py +60 -0
- maxframe/dataframe/arithmetic/negative.py +33 -0
- maxframe/dataframe/arithmetic/not_equal.py +56 -0
- maxframe/dataframe/arithmetic/power.py +68 -0
- maxframe/dataframe/arithmetic/radians.py +28 -0
- maxframe/dataframe/arithmetic/sin.py +28 -0
- maxframe/dataframe/arithmetic/sinh.py +28 -0
- maxframe/dataframe/arithmetic/sqrt.py +28 -0
- maxframe/dataframe/arithmetic/subtract.py +64 -0
- maxframe/dataframe/arithmetic/tan.py +28 -0
- maxframe/dataframe/arithmetic/tanh.py +28 -0
- maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
- maxframe/dataframe/arithmetic/truediv.py +64 -0
- maxframe/dataframe/arithmetic/trunc.py +28 -0
- maxframe/dataframe/arrays.py +864 -0
- maxframe/dataframe/core.py +2417 -0
- maxframe/dataframe/datasource/__init__.py +15 -0
- maxframe/dataframe/datasource/core.py +81 -0
- maxframe/dataframe/datasource/dataframe.py +59 -0
- maxframe/dataframe/datasource/date_range.py +504 -0
- maxframe/dataframe/datasource/from_index.py +54 -0
- maxframe/dataframe/datasource/from_records.py +107 -0
- maxframe/dataframe/datasource/from_tensor.py +419 -0
- maxframe/dataframe/datasource/index.py +117 -0
- maxframe/dataframe/datasource/read_csv.py +528 -0
- maxframe/dataframe/datasource/read_odps_query.py +299 -0
- maxframe/dataframe/datasource/read_odps_table.py +253 -0
- maxframe/dataframe/datasource/read_parquet.py +421 -0
- maxframe/dataframe/datasource/series.py +55 -0
- maxframe/dataframe/datasource/tests/__init__.py +13 -0
- maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
- maxframe/dataframe/datastore/__init__.py +26 -0
- maxframe/dataframe/datastore/core.py +19 -0
- maxframe/dataframe/datastore/to_csv.py +227 -0
- maxframe/dataframe/datastore/to_odps.py +162 -0
- maxframe/dataframe/extensions/__init__.py +41 -0
- maxframe/dataframe/extensions/accessor.py +50 -0
- maxframe/dataframe/extensions/reshuffle.py +83 -0
- maxframe/dataframe/extensions/tests/__init__.py +13 -0
- maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
- maxframe/dataframe/fetch/__init__.py +15 -0
- maxframe/dataframe/fetch/core.py +86 -0
- maxframe/dataframe/groupby/__init__.py +82 -0
- maxframe/dataframe/groupby/aggregation.py +350 -0
- maxframe/dataframe/groupby/apply.py +251 -0
- maxframe/dataframe/groupby/core.py +179 -0
- maxframe/dataframe/groupby/cum.py +124 -0
- maxframe/dataframe/groupby/fill.py +141 -0
- maxframe/dataframe/groupby/getitem.py +92 -0
- maxframe/dataframe/groupby/head.py +105 -0
- maxframe/dataframe/groupby/sample.py +214 -0
- maxframe/dataframe/groupby/tests/__init__.py +13 -0
- maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
- maxframe/dataframe/groupby/transform.py +255 -0
- maxframe/dataframe/indexing/__init__.py +84 -0
- maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
- maxframe/dataframe/indexing/align.py +349 -0
- maxframe/dataframe/indexing/at.py +83 -0
- maxframe/dataframe/indexing/getitem.py +204 -0
- maxframe/dataframe/indexing/iat.py +37 -0
- maxframe/dataframe/indexing/iloc.py +566 -0
- maxframe/dataframe/indexing/insert.py +86 -0
- maxframe/dataframe/indexing/loc.py +411 -0
- maxframe/dataframe/indexing/reindex.py +526 -0
- maxframe/dataframe/indexing/rename.py +462 -0
- maxframe/dataframe/indexing/rename_axis.py +209 -0
- maxframe/dataframe/indexing/reset_index.py +402 -0
- maxframe/dataframe/indexing/sample.py +221 -0
- maxframe/dataframe/indexing/set_axis.py +194 -0
- maxframe/dataframe/indexing/set_index.py +61 -0
- maxframe/dataframe/indexing/setitem.py +130 -0
- maxframe/dataframe/indexing/tests/__init__.py +13 -0
- maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
- maxframe/dataframe/indexing/where.py +308 -0
- maxframe/dataframe/initializer.py +288 -0
- maxframe/dataframe/merge/__init__.py +32 -0
- maxframe/dataframe/merge/append.py +121 -0
- maxframe/dataframe/merge/concat.py +325 -0
- maxframe/dataframe/merge/merge.py +593 -0
- maxframe/dataframe/merge/tests/__init__.py +13 -0
- maxframe/dataframe/merge/tests/test_merge.py +215 -0
- maxframe/dataframe/misc/__init__.py +134 -0
- maxframe/dataframe/misc/_duplicate.py +46 -0
- maxframe/dataframe/misc/accessor.py +276 -0
- maxframe/dataframe/misc/apply.py +692 -0
- maxframe/dataframe/misc/astype.py +236 -0
- maxframe/dataframe/misc/case_when.py +141 -0
- maxframe/dataframe/misc/check_monotonic.py +84 -0
- maxframe/dataframe/misc/cut.py +383 -0
- maxframe/dataframe/misc/datetimes.py +79 -0
- maxframe/dataframe/misc/describe.py +108 -0
- maxframe/dataframe/misc/diff.py +210 -0
- maxframe/dataframe/misc/drop.py +440 -0
- maxframe/dataframe/misc/drop_duplicates.py +248 -0
- maxframe/dataframe/misc/duplicated.py +292 -0
- maxframe/dataframe/misc/eval.py +728 -0
- maxframe/dataframe/misc/explode.py +171 -0
- maxframe/dataframe/misc/get_dummies.py +208 -0
- maxframe/dataframe/misc/isin.py +217 -0
- maxframe/dataframe/misc/map.py +236 -0
- maxframe/dataframe/misc/melt.py +162 -0
- maxframe/dataframe/misc/memory_usage.py +248 -0
- maxframe/dataframe/misc/pct_change.py +150 -0
- maxframe/dataframe/misc/pivot_table.py +262 -0
- maxframe/dataframe/misc/qcut.py +104 -0
- maxframe/dataframe/misc/select_dtypes.py +104 -0
- maxframe/dataframe/misc/shift.py +256 -0
- maxframe/dataframe/misc/stack.py +238 -0
- maxframe/dataframe/misc/string_.py +221 -0
- maxframe/dataframe/misc/tests/__init__.py +13 -0
- maxframe/dataframe/misc/tests/test_misc.py +468 -0
- maxframe/dataframe/misc/to_numeric.py +178 -0
- maxframe/dataframe/misc/transform.py +361 -0
- maxframe/dataframe/misc/transpose.py +136 -0
- maxframe/dataframe/misc/value_counts.py +182 -0
- maxframe/dataframe/missing/__init__.py +53 -0
- maxframe/dataframe/missing/checkna.py +223 -0
- maxframe/dataframe/missing/dropna.py +280 -0
- maxframe/dataframe/missing/fillna.py +275 -0
- maxframe/dataframe/missing/replace.py +439 -0
- maxframe/dataframe/missing/tests/__init__.py +13 -0
- maxframe/dataframe/missing/tests/test_missing.py +89 -0
- maxframe/dataframe/operators.py +273 -0
- maxframe/dataframe/plotting/__init__.py +40 -0
- maxframe/dataframe/plotting/core.py +78 -0
- maxframe/dataframe/plotting/tests/__init__.py +13 -0
- maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
- maxframe/dataframe/reduction/__init__.py +107 -0
- maxframe/dataframe/reduction/aggregation.py +344 -0
- maxframe/dataframe/reduction/all.py +78 -0
- maxframe/dataframe/reduction/any.py +78 -0
- maxframe/dataframe/reduction/core.py +837 -0
- maxframe/dataframe/reduction/count.py +59 -0
- maxframe/dataframe/reduction/cummax.py +30 -0
- maxframe/dataframe/reduction/cummin.py +30 -0
- maxframe/dataframe/reduction/cumprod.py +30 -0
- maxframe/dataframe/reduction/cumsum.py +30 -0
- maxframe/dataframe/reduction/custom_reduction.py +42 -0
- maxframe/dataframe/reduction/kurtosis.py +104 -0
- maxframe/dataframe/reduction/max.py +65 -0
- maxframe/dataframe/reduction/mean.py +61 -0
- maxframe/dataframe/reduction/min.py +65 -0
- maxframe/dataframe/reduction/nunique.py +141 -0
- maxframe/dataframe/reduction/prod.py +76 -0
- maxframe/dataframe/reduction/reduction_size.py +36 -0
- maxframe/dataframe/reduction/sem.py +69 -0
- maxframe/dataframe/reduction/skew.py +89 -0
- maxframe/dataframe/reduction/std.py +53 -0
- maxframe/dataframe/reduction/str_concat.py +48 -0
- maxframe/dataframe/reduction/sum.py +77 -0
- maxframe/dataframe/reduction/tests/__init__.py +13 -0
- maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
- maxframe/dataframe/reduction/unique.py +90 -0
- maxframe/dataframe/reduction/var.py +72 -0
- maxframe/dataframe/sort/__init__.py +34 -0
- maxframe/dataframe/sort/core.py +36 -0
- maxframe/dataframe/sort/sort_index.py +153 -0
- maxframe/dataframe/sort/sort_values.py +311 -0
- maxframe/dataframe/sort/tests/__init__.py +13 -0
- maxframe/dataframe/sort/tests/test_sort.py +81 -0
- maxframe/dataframe/statistics/__init__.py +33 -0
- maxframe/dataframe/statistics/corr.py +280 -0
- maxframe/dataframe/statistics/quantile.py +341 -0
- maxframe/dataframe/statistics/tests/__init__.py +13 -0
- maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
- maxframe/dataframe/tests/__init__.py +13 -0
- maxframe/dataframe/tests/test_initializer.py +29 -0
- maxframe/dataframe/tseries/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/__init__.py +13 -0
- maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
- maxframe/dataframe/tseries/to_datetime.py +297 -0
- maxframe/dataframe/ufunc/__init__.py +27 -0
- maxframe/dataframe/ufunc/tensor.py +54 -0
- maxframe/dataframe/ufunc/ufunc.py +52 -0
- maxframe/dataframe/utils.py +1267 -0
- maxframe/dataframe/window/__init__.py +29 -0
- maxframe/dataframe/window/aggregation.py +96 -0
- maxframe/dataframe/window/core.py +69 -0
- maxframe/dataframe/window/ewm.py +249 -0
- maxframe/dataframe/window/expanding.py +147 -0
- maxframe/dataframe/window/rolling.py +376 -0
- maxframe/dataframe/window/tests/__init__.py +13 -0
- maxframe/dataframe/window/tests/test_ewm.py +70 -0
- maxframe/dataframe/window/tests/test_expanding.py +66 -0
- maxframe/dataframe/window/tests/test_rolling.py +57 -0
- maxframe/env.py +33 -0
- maxframe/errors.py +21 -0
- maxframe/extension.py +81 -0
- maxframe/learn/__init__.py +17 -0
- maxframe/learn/contrib/__init__.py +17 -0
- maxframe/learn/contrib/pytorch/__init__.py +16 -0
- maxframe/learn/contrib/pytorch/run_function.py +110 -0
- maxframe/learn/contrib/pytorch/run_script.py +102 -0
- maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
- maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
- maxframe/learn/contrib/utils.py +52 -0
- maxframe/learn/contrib/xgboost/__init__.py +26 -0
- maxframe/learn/contrib/xgboost/classifier.py +86 -0
- maxframe/learn/contrib/xgboost/core.py +156 -0
- maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
- maxframe/learn/contrib/xgboost/predict.py +138 -0
- maxframe/learn/contrib/xgboost/regressor.py +78 -0
- maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
- maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
- maxframe/learn/contrib/xgboost/train.py +121 -0
- maxframe/learn/utils/__init__.py +15 -0
- maxframe/learn/utils/core.py +29 -0
- maxframe/lib/__init__.py +15 -0
- maxframe/lib/aio/__init__.py +27 -0
- maxframe/lib/aio/_runners.py +162 -0
- maxframe/lib/aio/_threads.py +35 -0
- maxframe/lib/aio/base.py +82 -0
- maxframe/lib/aio/file.py +85 -0
- maxframe/lib/aio/isolation.py +100 -0
- maxframe/lib/aio/lru.py +242 -0
- maxframe/lib/aio/parallelism.py +37 -0
- maxframe/lib/aio/tests/__init__.py +13 -0
- maxframe/lib/aio/tests/test_aio_file.py +55 -0
- maxframe/lib/compression.py +55 -0
- maxframe/lib/cython/__init__.py +13 -0
- maxframe/lib/cython/libcpp.pxd +30 -0
- maxframe/lib/filesystem/__init__.py +21 -0
- maxframe/lib/filesystem/_glob.py +173 -0
- maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
- maxframe/lib/filesystem/_oss_lib/common.py +198 -0
- maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
- maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
- maxframe/lib/filesystem/arrow.py +236 -0
- maxframe/lib/filesystem/base.py +263 -0
- maxframe/lib/filesystem/core.py +95 -0
- maxframe/lib/filesystem/fsmap.py +164 -0
- maxframe/lib/filesystem/hdfs.py +31 -0
- maxframe/lib/filesystem/local.py +112 -0
- maxframe/lib/filesystem/oss.py +157 -0
- maxframe/lib/filesystem/tests/__init__.py +13 -0
- maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
- maxframe/lib/filesystem/tests/test_oss.py +182 -0
- maxframe/lib/functools_compat.py +81 -0
- maxframe/lib/mmh3.cpython-38-darwin.so +0 -0
- maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
- maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
- maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
- maxframe/lib/sparse/__init__.py +861 -0
- maxframe/lib/sparse/array.py +1604 -0
- maxframe/lib/sparse/core.py +92 -0
- maxframe/lib/sparse/matrix.py +241 -0
- maxframe/lib/sparse/tests/__init__.py +15 -0
- maxframe/lib/sparse/tests/test_sparse.py +476 -0
- maxframe/lib/sparse/vector.py +150 -0
- maxframe/lib/tblib/LICENSE +20 -0
- maxframe/lib/tblib/__init__.py +327 -0
- maxframe/lib/tblib/cpython.py +83 -0
- maxframe/lib/tblib/decorators.py +44 -0
- maxframe/lib/tblib/pickling_support.py +90 -0
- maxframe/lib/tests/__init__.py +13 -0
- maxframe/lib/tests/test_wrapped_pickle.py +51 -0
- maxframe/lib/version.py +620 -0
- maxframe/lib/wrapped_pickle.py +139 -0
- maxframe/mixin.py +100 -0
- maxframe/odpsio/__init__.py +21 -0
- maxframe/odpsio/arrow.py +91 -0
- maxframe/odpsio/schema.py +364 -0
- maxframe/odpsio/tableio.py +322 -0
- maxframe/odpsio/tests/__init__.py +13 -0
- maxframe/odpsio/tests/test_arrow.py +88 -0
- maxframe/odpsio/tests/test_schema.py +297 -0
- maxframe/odpsio/tests/test_tableio.py +136 -0
- maxframe/odpsio/tests/test_volumeio.py +90 -0
- maxframe/odpsio/volumeio.py +95 -0
- maxframe/opcodes.py +590 -0
- maxframe/protocol.py +415 -0
- maxframe/remote/__init__.py +18 -0
- maxframe/remote/core.py +210 -0
- maxframe/remote/run_script.py +121 -0
- maxframe/serialization/__init__.py +26 -0
- maxframe/serialization/arrow.py +95 -0
- maxframe/serialization/core.cpython-38-darwin.so +0 -0
- maxframe/serialization/core.pxd +44 -0
- maxframe/serialization/core.pyi +61 -0
- maxframe/serialization/core.pyx +1094 -0
- maxframe/serialization/exception.py +86 -0
- maxframe/serialization/maxframe_objects.py +39 -0
- maxframe/serialization/numpy.py +91 -0
- maxframe/serialization/pandas.py +202 -0
- maxframe/serialization/scipy.py +71 -0
- maxframe/serialization/serializables/__init__.py +55 -0
- maxframe/serialization/serializables/core.py +262 -0
- maxframe/serialization/serializables/field.py +624 -0
- maxframe/serialization/serializables/field_type.py +589 -0
- maxframe/serialization/serializables/tests/__init__.py +13 -0
- maxframe/serialization/serializables/tests/test_field_type.py +121 -0
- maxframe/serialization/serializables/tests/test_serializable.py +250 -0
- maxframe/serialization/tests/__init__.py +13 -0
- maxframe/serialization/tests/test_serial.py +412 -0
- maxframe/session.py +1310 -0
- maxframe/tensor/__init__.py +183 -0
- maxframe/tensor/arithmetic/__init__.py +315 -0
- maxframe/tensor/arithmetic/abs.py +68 -0
- maxframe/tensor/arithmetic/absolute.py +68 -0
- maxframe/tensor/arithmetic/add.py +82 -0
- maxframe/tensor/arithmetic/angle.py +72 -0
- maxframe/tensor/arithmetic/arccos.py +104 -0
- maxframe/tensor/arithmetic/arccosh.py +91 -0
- maxframe/tensor/arithmetic/arcsin.py +94 -0
- maxframe/tensor/arithmetic/arcsinh.py +86 -0
- maxframe/tensor/arithmetic/arctan.py +106 -0
- maxframe/tensor/arithmetic/arctan2.py +128 -0
- maxframe/tensor/arithmetic/arctanh.py +86 -0
- maxframe/tensor/arithmetic/around.py +114 -0
- maxframe/tensor/arithmetic/bitand.py +95 -0
- maxframe/tensor/arithmetic/bitor.py +102 -0
- maxframe/tensor/arithmetic/bitxor.py +95 -0
- maxframe/tensor/arithmetic/cbrt.py +66 -0
- maxframe/tensor/arithmetic/ceil.py +71 -0
- maxframe/tensor/arithmetic/clip.py +165 -0
- maxframe/tensor/arithmetic/conj.py +74 -0
- maxframe/tensor/arithmetic/copysign.py +78 -0
- maxframe/tensor/arithmetic/core.py +544 -0
- maxframe/tensor/arithmetic/cos.py +85 -0
- maxframe/tensor/arithmetic/cosh.py +72 -0
- maxframe/tensor/arithmetic/deg2rad.py +72 -0
- maxframe/tensor/arithmetic/degrees.py +77 -0
- maxframe/tensor/arithmetic/divide.py +114 -0
- maxframe/tensor/arithmetic/equal.py +76 -0
- maxframe/tensor/arithmetic/exp.py +106 -0
- maxframe/tensor/arithmetic/exp2.py +67 -0
- maxframe/tensor/arithmetic/expm1.py +79 -0
- maxframe/tensor/arithmetic/fabs.py +74 -0
- maxframe/tensor/arithmetic/fix.py +69 -0
- maxframe/tensor/arithmetic/float_power.py +103 -0
- maxframe/tensor/arithmetic/floor.py +77 -0
- maxframe/tensor/arithmetic/floordiv.py +94 -0
- maxframe/tensor/arithmetic/fmax.py +105 -0
- maxframe/tensor/arithmetic/fmin.py +106 -0
- maxframe/tensor/arithmetic/fmod.py +99 -0
- maxframe/tensor/arithmetic/frexp.py +92 -0
- maxframe/tensor/arithmetic/greater.py +77 -0
- maxframe/tensor/arithmetic/greater_equal.py +69 -0
- maxframe/tensor/arithmetic/hypot.py +77 -0
- maxframe/tensor/arithmetic/i0.py +89 -0
- maxframe/tensor/arithmetic/imag.py +67 -0
- maxframe/tensor/arithmetic/invert.py +110 -0
- maxframe/tensor/arithmetic/isclose.py +115 -0
- maxframe/tensor/arithmetic/iscomplex.py +64 -0
- maxframe/tensor/arithmetic/isfinite.py +106 -0
- maxframe/tensor/arithmetic/isinf.py +103 -0
- maxframe/tensor/arithmetic/isnan.py +82 -0
- maxframe/tensor/arithmetic/isreal.py +63 -0
- maxframe/tensor/arithmetic/ldexp.py +99 -0
- maxframe/tensor/arithmetic/less.py +69 -0
- maxframe/tensor/arithmetic/less_equal.py +69 -0
- maxframe/tensor/arithmetic/log.py +92 -0
- maxframe/tensor/arithmetic/log10.py +85 -0
- maxframe/tensor/arithmetic/log1p.py +95 -0
- maxframe/tensor/arithmetic/log2.py +85 -0
- maxframe/tensor/arithmetic/logaddexp.py +80 -0
- maxframe/tensor/arithmetic/logaddexp2.py +78 -0
- maxframe/tensor/arithmetic/logical_and.py +81 -0
- maxframe/tensor/arithmetic/logical_not.py +74 -0
- maxframe/tensor/arithmetic/logical_or.py +82 -0
- maxframe/tensor/arithmetic/logical_xor.py +88 -0
- maxframe/tensor/arithmetic/lshift.py +82 -0
- maxframe/tensor/arithmetic/maximum.py +108 -0
- maxframe/tensor/arithmetic/minimum.py +108 -0
- maxframe/tensor/arithmetic/mod.py +104 -0
- maxframe/tensor/arithmetic/modf.py +83 -0
- maxframe/tensor/arithmetic/multiply.py +81 -0
- maxframe/tensor/arithmetic/nan_to_num.py +99 -0
- maxframe/tensor/arithmetic/negative.py +65 -0
- maxframe/tensor/arithmetic/nextafter.py +68 -0
- maxframe/tensor/arithmetic/not_equal.py +72 -0
- maxframe/tensor/arithmetic/positive.py +47 -0
- maxframe/tensor/arithmetic/power.py +106 -0
- maxframe/tensor/arithmetic/rad2deg.py +71 -0
- maxframe/tensor/arithmetic/radians.py +77 -0
- maxframe/tensor/arithmetic/real.py +70 -0
- maxframe/tensor/arithmetic/reciprocal.py +76 -0
- maxframe/tensor/arithmetic/rint.py +68 -0
- maxframe/tensor/arithmetic/rshift.py +81 -0
- maxframe/tensor/arithmetic/setimag.py +29 -0
- maxframe/tensor/arithmetic/setreal.py +29 -0
- maxframe/tensor/arithmetic/sign.py +81 -0
- maxframe/tensor/arithmetic/signbit.py +65 -0
- maxframe/tensor/arithmetic/sin.py +98 -0
- maxframe/tensor/arithmetic/sinc.py +102 -0
- maxframe/tensor/arithmetic/sinh.py +93 -0
- maxframe/tensor/arithmetic/spacing.py +72 -0
- maxframe/tensor/arithmetic/sqrt.py +81 -0
- maxframe/tensor/arithmetic/square.py +69 -0
- maxframe/tensor/arithmetic/subtract.py +81 -0
- maxframe/tensor/arithmetic/tan.py +88 -0
- maxframe/tensor/arithmetic/tanh.py +92 -0
- maxframe/tensor/arithmetic/tests/__init__.py +15 -0
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
- maxframe/tensor/arithmetic/truediv.py +104 -0
- maxframe/tensor/arithmetic/trunc.py +72 -0
- maxframe/tensor/arithmetic/utils.py +65 -0
- maxframe/tensor/array_utils.py +186 -0
- maxframe/tensor/base/__init__.py +34 -0
- maxframe/tensor/base/astype.py +119 -0
- maxframe/tensor/base/atleast_1d.py +74 -0
- maxframe/tensor/base/broadcast_to.py +89 -0
- maxframe/tensor/base/ravel.py +92 -0
- maxframe/tensor/base/tests/__init__.py +13 -0
- maxframe/tensor/base/tests/test_base.py +114 -0
- maxframe/tensor/base/transpose.py +125 -0
- maxframe/tensor/base/unique.py +205 -0
- maxframe/tensor/base/where.py +127 -0
- maxframe/tensor/core.py +724 -0
- maxframe/tensor/datasource/__init__.py +32 -0
- maxframe/tensor/datasource/arange.py +156 -0
- maxframe/tensor/datasource/array.py +415 -0
- maxframe/tensor/datasource/core.py +109 -0
- maxframe/tensor/datasource/empty.py +169 -0
- maxframe/tensor/datasource/from_dataframe.py +70 -0
- maxframe/tensor/datasource/from_dense.py +54 -0
- maxframe/tensor/datasource/from_sparse.py +47 -0
- maxframe/tensor/datasource/full.py +186 -0
- maxframe/tensor/datasource/ones.py +173 -0
- maxframe/tensor/datasource/scalar.py +40 -0
- maxframe/tensor/datasource/tests/__init__.py +13 -0
- maxframe/tensor/datasource/tests/test_datasource.py +278 -0
- maxframe/tensor/datasource/zeros.py +188 -0
- maxframe/tensor/fetch/__init__.py +15 -0
- maxframe/tensor/fetch/core.py +54 -0
- maxframe/tensor/indexing/__init__.py +47 -0
- maxframe/tensor/indexing/choose.py +196 -0
- maxframe/tensor/indexing/compress.py +124 -0
- maxframe/tensor/indexing/core.py +190 -0
- maxframe/tensor/indexing/extract.py +71 -0
- maxframe/tensor/indexing/fill_diagonal.py +183 -0
- maxframe/tensor/indexing/flatnonzero.py +60 -0
- maxframe/tensor/indexing/getitem.py +175 -0
- maxframe/tensor/indexing/nonzero.py +120 -0
- maxframe/tensor/indexing/setitem.py +132 -0
- maxframe/tensor/indexing/slice.py +29 -0
- maxframe/tensor/indexing/take.py +130 -0
- maxframe/tensor/indexing/tests/__init__.py +15 -0
- maxframe/tensor/indexing/tests/test_indexing.py +234 -0
- maxframe/tensor/indexing/unravel_index.py +103 -0
- maxframe/tensor/merge/__init__.py +15 -0
- maxframe/tensor/merge/stack.py +132 -0
- maxframe/tensor/merge/tests/__init__.py +13 -0
- maxframe/tensor/merge/tests/test_merge.py +52 -0
- maxframe/tensor/operators.py +123 -0
- maxframe/tensor/random/__init__.py +168 -0
- maxframe/tensor/random/beta.py +87 -0
- maxframe/tensor/random/binomial.py +137 -0
- maxframe/tensor/random/bytes.py +39 -0
- maxframe/tensor/random/chisquare.py +110 -0
- maxframe/tensor/random/choice.py +186 -0
- maxframe/tensor/random/core.py +234 -0
- maxframe/tensor/random/dirichlet.py +123 -0
- maxframe/tensor/random/exponential.py +94 -0
- maxframe/tensor/random/f.py +135 -0
- maxframe/tensor/random/gamma.py +128 -0
- maxframe/tensor/random/geometric.py +93 -0
- maxframe/tensor/random/gumbel.py +167 -0
- maxframe/tensor/random/hypergeometric.py +148 -0
- maxframe/tensor/random/laplace.py +133 -0
- maxframe/tensor/random/logistic.py +129 -0
- maxframe/tensor/random/lognormal.py +159 -0
- maxframe/tensor/random/logseries.py +122 -0
- maxframe/tensor/random/multinomial.py +133 -0
- maxframe/tensor/random/multivariate_normal.py +192 -0
- maxframe/tensor/random/negative_binomial.py +125 -0
- maxframe/tensor/random/noncentral_chisquare.py +132 -0
- maxframe/tensor/random/noncentral_f.py +126 -0
- maxframe/tensor/random/normal.py +143 -0
- maxframe/tensor/random/pareto.py +140 -0
- maxframe/tensor/random/permutation.py +104 -0
- maxframe/tensor/random/poisson.py +111 -0
- maxframe/tensor/random/power.py +142 -0
- maxframe/tensor/random/rand.py +82 -0
- maxframe/tensor/random/randint.py +121 -0
- maxframe/tensor/random/randn.py +96 -0
- maxframe/tensor/random/random_integers.py +123 -0
- maxframe/tensor/random/random_sample.py +86 -0
- maxframe/tensor/random/rayleigh.py +110 -0
- maxframe/tensor/random/shuffle.py +61 -0
- maxframe/tensor/random/standard_cauchy.py +105 -0
- maxframe/tensor/random/standard_exponential.py +72 -0
- maxframe/tensor/random/standard_gamma.py +120 -0
- maxframe/tensor/random/standard_normal.py +74 -0
- maxframe/tensor/random/standard_t.py +135 -0
- maxframe/tensor/random/tests/__init__.py +15 -0
- maxframe/tensor/random/tests/test_random.py +167 -0
- maxframe/tensor/random/triangular.py +119 -0
- maxframe/tensor/random/uniform.py +131 -0
- maxframe/tensor/random/vonmises.py +131 -0
- maxframe/tensor/random/wald.py +114 -0
- maxframe/tensor/random/weibull.py +140 -0
- maxframe/tensor/random/zipf.py +122 -0
- maxframe/tensor/rechunk/__init__.py +26 -0
- maxframe/tensor/rechunk/rechunk.py +43 -0
- maxframe/tensor/reduction/__init__.py +66 -0
- maxframe/tensor/reduction/all.py +103 -0
- maxframe/tensor/reduction/allclose.py +88 -0
- maxframe/tensor/reduction/any.py +105 -0
- maxframe/tensor/reduction/argmax.py +103 -0
- maxframe/tensor/reduction/argmin.py +103 -0
- maxframe/tensor/reduction/array_equal.py +64 -0
- maxframe/tensor/reduction/core.py +168 -0
- maxframe/tensor/reduction/count_nonzero.py +81 -0
- maxframe/tensor/reduction/cumprod.py +97 -0
- maxframe/tensor/reduction/cumsum.py +101 -0
- maxframe/tensor/reduction/max.py +120 -0
- maxframe/tensor/reduction/mean.py +123 -0
- maxframe/tensor/reduction/min.py +120 -0
- maxframe/tensor/reduction/nanargmax.py +82 -0
- maxframe/tensor/reduction/nanargmin.py +76 -0
- maxframe/tensor/reduction/nancumprod.py +91 -0
- maxframe/tensor/reduction/nancumsum.py +94 -0
- maxframe/tensor/reduction/nanmax.py +111 -0
- maxframe/tensor/reduction/nanmean.py +106 -0
- maxframe/tensor/reduction/nanmin.py +111 -0
- maxframe/tensor/reduction/nanprod.py +94 -0
- maxframe/tensor/reduction/nanstd.py +126 -0
- maxframe/tensor/reduction/nansum.py +115 -0
- maxframe/tensor/reduction/nanvar.py +149 -0
- maxframe/tensor/reduction/prod.py +130 -0
- maxframe/tensor/reduction/std.py +134 -0
- maxframe/tensor/reduction/sum.py +125 -0
- maxframe/tensor/reduction/tests/__init__.py +13 -0
- maxframe/tensor/reduction/tests/test_reduction.py +181 -0
- maxframe/tensor/reduction/var.py +176 -0
- maxframe/tensor/reshape/__init__.py +17 -0
- maxframe/tensor/reshape/reshape.py +188 -0
- maxframe/tensor/reshape/tests/__init__.py +15 -0
- maxframe/tensor/reshape/tests/test_reshape.py +37 -0
- maxframe/tensor/statistics/__init__.py +13 -0
- maxframe/tensor/statistics/percentile.py +175 -0
- maxframe/tensor/statistics/quantile.py +288 -0
- maxframe/tensor/ufunc/__init__.py +26 -0
- maxframe/tensor/ufunc/ufunc.py +200 -0
- maxframe/tensor/utils.py +718 -0
- maxframe/tests/__init__.py +13 -0
- maxframe/tests/test_codegen.py +69 -0
- maxframe/tests/test_protocol.py +144 -0
- maxframe/tests/test_utils.py +376 -0
- maxframe/tests/utils.py +164 -0
- maxframe/typing_.py +37 -0
- maxframe/udf.py +134 -0
- maxframe/utils.py +1114 -0
- maxframe-0.1.0b5.dist-info/METADATA +104 -0
- maxframe-0.1.0b5.dist-info/RECORD +647 -0
- maxframe-0.1.0b5.dist-info/WHEEL +5 -0
- maxframe-0.1.0b5.dist-info/top_level.txt +2 -0
- maxframe_client/__init__.py +17 -0
- maxframe_client/clients/__init__.py +13 -0
- maxframe_client/clients/framedriver.py +118 -0
- maxframe_client/clients/spe.py +104 -0
- maxframe_client/conftest.py +15 -0
- maxframe_client/fetcher.py +264 -0
- maxframe_client/session/__init__.py +22 -0
- maxframe_client/session/consts.py +36 -0
- maxframe_client/session/graph.py +119 -0
- maxframe_client/session/odps.py +482 -0
- maxframe_client/session/task.py +280 -0
- maxframe_client/session/tests/__init__.py +13 -0
- maxframe_client/session/tests/test_task.py +85 -0
- maxframe_client/tests/__init__.py +13 -0
- maxframe_client/tests/test_fetcher.py +89 -0
- maxframe_client/tests/test_session.py +255 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ...serialization.serializables import (
|
|
16
|
+
AnyField,
|
|
17
|
+
BoolField,
|
|
18
|
+
FieldTypes,
|
|
19
|
+
Int32Field,
|
|
20
|
+
Int64Field,
|
|
21
|
+
ListField,
|
|
22
|
+
StringField,
|
|
23
|
+
)
|
|
24
|
+
from ..operators import DataFrameOperator
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DataFrameSortOperator(DataFrameOperator):
|
|
28
|
+
axis = Int32Field("axis")
|
|
29
|
+
ascending = AnyField("ascending")
|
|
30
|
+
inplace = BoolField("inplace")
|
|
31
|
+
kind = StringField("kind")
|
|
32
|
+
na_position = StringField("na_position")
|
|
33
|
+
ignore_index = BoolField("ignore_index")
|
|
34
|
+
parallel_kind = StringField("parallel_kind")
|
|
35
|
+
psrs_kinds = ListField("psrs_kinds", FieldTypes.string)
|
|
36
|
+
nrows = Int64Field("nrows", default=None)
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import pandas as pd
|
|
16
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...core import OutputType
|
|
19
|
+
from ...serialization.serializables import BoolField, ListField
|
|
20
|
+
from ..operators import DATAFRAME_TYPE, DataFrameOperatorMixin
|
|
21
|
+
from ..utils import parse_index, validate_axis
|
|
22
|
+
from .core import DataFrameSortOperator
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class DataFrameSortIndex(DataFrameSortOperator, DataFrameOperatorMixin):
|
|
26
|
+
_op_type_ = opcodes.SORT_INDEX
|
|
27
|
+
|
|
28
|
+
level = ListField("level", default=None)
|
|
29
|
+
sort_remaining = BoolField("sort_remaining", default=None)
|
|
30
|
+
|
|
31
|
+
def _call_dataframe(self, df):
|
|
32
|
+
if self.ignore_index:
|
|
33
|
+
index_value = parse_index(pd.RangeIndex(df.shape[0]))
|
|
34
|
+
else:
|
|
35
|
+
index_value = df.index_value
|
|
36
|
+
if self.axis == 0:
|
|
37
|
+
return self.new_dataframe(
|
|
38
|
+
[df],
|
|
39
|
+
shape=df.shape,
|
|
40
|
+
dtypes=df.dtypes,
|
|
41
|
+
index_value=index_value,
|
|
42
|
+
columns_value=df.columns_value,
|
|
43
|
+
)
|
|
44
|
+
else:
|
|
45
|
+
dtypes = df.dtypes.sort_index(ascending=self.ascending)
|
|
46
|
+
columns_value = parse_index(dtypes.index, store_data=True)
|
|
47
|
+
return self.new_dataframe(
|
|
48
|
+
[df],
|
|
49
|
+
shape=df.shape,
|
|
50
|
+
dtypes=dtypes,
|
|
51
|
+
index_value=index_value,
|
|
52
|
+
columns_value=columns_value,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def _call_series(self, series):
|
|
56
|
+
if self.axis != 0: # pragma: no cover
|
|
57
|
+
raise TypeError(f"Invalid axis: {self.axis}")
|
|
58
|
+
if self.ignore_index:
|
|
59
|
+
index_value = parse_index(pd.RangeIndex(series.shape[0]))
|
|
60
|
+
else:
|
|
61
|
+
index_value = series.index_value
|
|
62
|
+
|
|
63
|
+
return self.new_series(
|
|
64
|
+
[series],
|
|
65
|
+
shape=series.shape,
|
|
66
|
+
dtype=series.dtype,
|
|
67
|
+
index_value=index_value,
|
|
68
|
+
name=series.name,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
def __call__(self, a):
|
|
72
|
+
if isinstance(a, DATAFRAME_TYPE):
|
|
73
|
+
self.output_types = [OutputType.dataframe]
|
|
74
|
+
return self._call_dataframe(a)
|
|
75
|
+
else:
|
|
76
|
+
self.output_types = [OutputType.series]
|
|
77
|
+
return self._call_series(a)
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def sort_index(
|
|
81
|
+
a,
|
|
82
|
+
axis=0,
|
|
83
|
+
level=None,
|
|
84
|
+
ascending=True,
|
|
85
|
+
inplace=False,
|
|
86
|
+
kind="quicksort",
|
|
87
|
+
na_position="last",
|
|
88
|
+
sort_remaining=True,
|
|
89
|
+
ignore_index: bool = False,
|
|
90
|
+
parallel_kind="PSRS",
|
|
91
|
+
psrs_kinds=None,
|
|
92
|
+
):
|
|
93
|
+
"""
|
|
94
|
+
Sort object by labels (along an axis).
|
|
95
|
+
|
|
96
|
+
Parameters
|
|
97
|
+
----------
|
|
98
|
+
a : Input DataFrame or Series.
|
|
99
|
+
axis : {0 or 'index', 1 or 'columns'}, default 0
|
|
100
|
+
The axis along which to sort. The value 0 identifies the rows,
|
|
101
|
+
and 1 identifies the columns.
|
|
102
|
+
level : int or level name or list of ints or list of level names
|
|
103
|
+
If not None, sort on values in specified index level(s).
|
|
104
|
+
ascending : bool, default True
|
|
105
|
+
Sort ascending vs. descending.
|
|
106
|
+
inplace : bool, default False
|
|
107
|
+
If True, perform operation in-place.
|
|
108
|
+
kind : {'quicksort', 'mergesort', 'heapsort'}, default 'quicksort'
|
|
109
|
+
Choice of sorting algorithm. See also ndarray.np.sort for more
|
|
110
|
+
information. `mergesort` is the only stable algorithm. For
|
|
111
|
+
DataFrames, this option is only applied when sorting on a single
|
|
112
|
+
column or label.
|
|
113
|
+
na_position : {'first', 'last'}, default 'last'
|
|
114
|
+
Puts NaNs at the beginning if `first`; `last` puts NaNs at the end.
|
|
115
|
+
Not implemented for MultiIndex.
|
|
116
|
+
sort_remaining : bool, default True
|
|
117
|
+
If True and sorting by level and index is multilevel, sort by other
|
|
118
|
+
levels too (in order) after sorting by specified level.
|
|
119
|
+
ignore_index : bool, default False
|
|
120
|
+
If True, the resulting axis will be labeled 0, 1, …, n - 1.
|
|
121
|
+
parallel_kind: {'PSRS'}, optional.
|
|
122
|
+
Parallel sorting algorithm, for the details, refer to:
|
|
123
|
+
http://csweb.cs.wfu.edu/bigiron/LittleFE-PSRS/build/html/PSRSalgorithm.html
|
|
124
|
+
psrs_kinds: Sorting algorithms during PSRS algorithm.
|
|
125
|
+
|
|
126
|
+
Returns
|
|
127
|
+
-------
|
|
128
|
+
sorted_obj : DataFrame or None
|
|
129
|
+
DataFrame with sorted index if inplace=False, None otherwise.
|
|
130
|
+
"""
|
|
131
|
+
if na_position not in ["last", "first"]: # pragma: no cover
|
|
132
|
+
raise TypeError(f"Invalid na_position: {na_position}")
|
|
133
|
+
# psrs_kinds = _validate_sort_psrs_kinds(psrs_kinds)
|
|
134
|
+
axis = validate_axis(axis, a)
|
|
135
|
+
level = level if isinstance(level, (list, tuple)) or level is None else [level]
|
|
136
|
+
op = DataFrameSortIndex(
|
|
137
|
+
level=level,
|
|
138
|
+
axis=axis,
|
|
139
|
+
ascending=ascending,
|
|
140
|
+
inplace=inplace,
|
|
141
|
+
kind=kind,
|
|
142
|
+
na_position=na_position,
|
|
143
|
+
sort_remaining=sort_remaining,
|
|
144
|
+
ignore_index=ignore_index,
|
|
145
|
+
parallel_kind=parallel_kind,
|
|
146
|
+
psrs_kinds=psrs_kinds,
|
|
147
|
+
gpu=a.op.is_gpu(),
|
|
148
|
+
)
|
|
149
|
+
sorted_a = op(a)
|
|
150
|
+
if inplace:
|
|
151
|
+
a.data = sorted_a.data
|
|
152
|
+
else:
|
|
153
|
+
return sorted_a
|
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import numpy as np
|
|
16
|
+
import pandas as pd
|
|
17
|
+
|
|
18
|
+
from ... import opcodes
|
|
19
|
+
from ...core import OutputType
|
|
20
|
+
from ...serialization.serializables import ListField
|
|
21
|
+
from ..core import IndexValue
|
|
22
|
+
from ..operators import DataFrameOperatorMixin
|
|
23
|
+
from ..utils import parse_index, validate_axis
|
|
24
|
+
from .core import DataFrameSortOperator
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DataFrameSortValues(DataFrameSortOperator, DataFrameOperatorMixin):
|
|
28
|
+
_op_type_ = opcodes.SORT_VALUES
|
|
29
|
+
|
|
30
|
+
by = ListField("by", default=None)
|
|
31
|
+
|
|
32
|
+
def __init__(self, output_types=None, **kw):
|
|
33
|
+
super().__init__(_output_types=output_types, **kw)
|
|
34
|
+
|
|
35
|
+
def __call__(self, a):
|
|
36
|
+
assert self.axis == 0
|
|
37
|
+
if self.ignore_index:
|
|
38
|
+
index_value = parse_index(pd.RangeIndex(a.shape[0]))
|
|
39
|
+
else:
|
|
40
|
+
if isinstance(a.index_value.value, IndexValue.RangeIndex):
|
|
41
|
+
index_value = parse_index(pd.Index([], dtype=np.int64))
|
|
42
|
+
else:
|
|
43
|
+
index_value = a.index_value
|
|
44
|
+
if a.ndim == 2:
|
|
45
|
+
return self.new_dataframe(
|
|
46
|
+
[a],
|
|
47
|
+
shape=a.shape,
|
|
48
|
+
dtypes=a.dtypes,
|
|
49
|
+
index_value=index_value,
|
|
50
|
+
columns_value=a.columns_value,
|
|
51
|
+
)
|
|
52
|
+
else:
|
|
53
|
+
return self.new_series(
|
|
54
|
+
[a], shape=a.shape, dtype=a.dtype, index_value=index_value, name=a.name
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def dataframe_sort_values(
|
|
59
|
+
df,
|
|
60
|
+
by,
|
|
61
|
+
axis=0,
|
|
62
|
+
ascending=True,
|
|
63
|
+
inplace=False,
|
|
64
|
+
kind="quicksort",
|
|
65
|
+
na_position="last",
|
|
66
|
+
ignore_index=False,
|
|
67
|
+
parallel_kind="PSRS",
|
|
68
|
+
psrs_kinds=None,
|
|
69
|
+
):
|
|
70
|
+
"""
|
|
71
|
+
Sort by the values along either axis.
|
|
72
|
+
|
|
73
|
+
Parameters
|
|
74
|
+
----------
|
|
75
|
+
df : MaxFrame DataFrame
|
|
76
|
+
Input dataframe.
|
|
77
|
+
by : str
|
|
78
|
+
Name or list of names to sort by.
|
|
79
|
+
axis : %(axes_single_arg)s, default 0
|
|
80
|
+
Axis to be sorted.
|
|
81
|
+
ascending : bool or list of bool, default True
|
|
82
|
+
Sort ascending vs. descending. Specify list for multiple sort
|
|
83
|
+
orders. If this is a list of bools, must match the length of
|
|
84
|
+
the by.
|
|
85
|
+
inplace : bool, default False
|
|
86
|
+
If True, perform operation in-place.
|
|
87
|
+
kind : {'quicksort', 'mergesort', 'heapsort'}, default 'quicksort'
|
|
88
|
+
Choice of sorting algorithm. See also ndarray.np.sort for more
|
|
89
|
+
information. `mergesort` is the only stable algorithm. For
|
|
90
|
+
DataFrames, this option is only applied when sorting on a single
|
|
91
|
+
column or label.
|
|
92
|
+
na_position : {'first', 'last'}, default 'last'
|
|
93
|
+
Puts NaNs at the beginning if `first`; `last` puts NaNs at the
|
|
94
|
+
end.
|
|
95
|
+
ignore_index : bool, default False
|
|
96
|
+
If True, the resulting axis will be labeled 0, 1, …, n - 1.
|
|
97
|
+
parallel_kind : {'PSRS'}, default 'PSRS'
|
|
98
|
+
Parallel sorting algorithm, for the details, refer to:
|
|
99
|
+
http://csweb.cs.wfu.edu/bigiron/LittleFE-PSRS/build/html/PSRSalgorithm.html
|
|
100
|
+
|
|
101
|
+
Returns
|
|
102
|
+
-------
|
|
103
|
+
sorted_obj : DataFrame or None
|
|
104
|
+
DataFrame with sorted values if inplace=False, None otherwise.
|
|
105
|
+
|
|
106
|
+
Examples
|
|
107
|
+
--------
|
|
108
|
+
>>> import maxframe.dataframe as md
|
|
109
|
+
>>> df = md.DataFrame({
|
|
110
|
+
... 'col1': ['A', 'A', 'B', np.nan, 'D', 'C'],
|
|
111
|
+
... 'col2': [2, 1, 9, 8, 7, 4],
|
|
112
|
+
... 'col3': [0, 1, 9, 4, 2, 3],
|
|
113
|
+
... })
|
|
114
|
+
>>> df.execute()
|
|
115
|
+
col1 col2 col3
|
|
116
|
+
0 A 2 0
|
|
117
|
+
1 A 1 1
|
|
118
|
+
2 B 9 9
|
|
119
|
+
3 NaN 8 4
|
|
120
|
+
4 D 7 2
|
|
121
|
+
5 C 4 3
|
|
122
|
+
|
|
123
|
+
Sort by col1
|
|
124
|
+
|
|
125
|
+
>>> df.sort_values(by=['col1']).execute()
|
|
126
|
+
col1 col2 col3
|
|
127
|
+
0 A 2 0
|
|
128
|
+
1 A 1 1
|
|
129
|
+
2 B 9 9
|
|
130
|
+
5 C 4 3
|
|
131
|
+
4 D 7 2
|
|
132
|
+
3 NaN 8 4
|
|
133
|
+
|
|
134
|
+
Sort by multiple columns
|
|
135
|
+
|
|
136
|
+
>>> df.sort_values(by=['col1', 'col2']).execute()
|
|
137
|
+
col1 col2 col3
|
|
138
|
+
1 A 1 1
|
|
139
|
+
0 A 2 0
|
|
140
|
+
2 B 9 9
|
|
141
|
+
5 C 4 3
|
|
142
|
+
4 D 7 2
|
|
143
|
+
3 NaN 8 4
|
|
144
|
+
|
|
145
|
+
Sort Descending
|
|
146
|
+
|
|
147
|
+
>>> df.sort_values(by='col1', ascending=False).execute()
|
|
148
|
+
col1 col2 col3
|
|
149
|
+
4 D 7 2
|
|
150
|
+
5 C 4 3
|
|
151
|
+
2 B 9 9
|
|
152
|
+
0 A 2 0
|
|
153
|
+
1 A 1 1
|
|
154
|
+
3 NaN 8 4
|
|
155
|
+
|
|
156
|
+
Putting NAs first
|
|
157
|
+
|
|
158
|
+
>>> df.sort_values(by='col1', ascending=False, na_position='first').execute()
|
|
159
|
+
col1 col2 col3
|
|
160
|
+
3 NaN 8 4
|
|
161
|
+
4 D 7 2
|
|
162
|
+
5 C 4 3
|
|
163
|
+
2 B 9 9
|
|
164
|
+
0 A 2 0
|
|
165
|
+
1 A 1 1
|
|
166
|
+
"""
|
|
167
|
+
|
|
168
|
+
if na_position not in ["last", "first"]: # pragma: no cover
|
|
169
|
+
raise TypeError(f"invalid na_position: {na_position}")
|
|
170
|
+
axis = validate_axis(axis, df)
|
|
171
|
+
if axis != 0:
|
|
172
|
+
raise NotImplementedError("Only support sort on axis 0")
|
|
173
|
+
# psrs_kinds = _validate_sort_psrs_kinds(psrs_kinds)
|
|
174
|
+
by = by if isinstance(by, (list, tuple)) else [by]
|
|
175
|
+
if isinstance(ascending, list): # pragma: no cover
|
|
176
|
+
if all(ascending):
|
|
177
|
+
# all are True, convert to True
|
|
178
|
+
ascending = True
|
|
179
|
+
elif not any(ascending):
|
|
180
|
+
# all are False, convert to False
|
|
181
|
+
ascending = False
|
|
182
|
+
op = DataFrameSortValues(
|
|
183
|
+
by=by,
|
|
184
|
+
axis=axis,
|
|
185
|
+
ascending=ascending,
|
|
186
|
+
inplace=inplace,
|
|
187
|
+
kind=kind,
|
|
188
|
+
na_position=na_position,
|
|
189
|
+
ignore_index=ignore_index,
|
|
190
|
+
parallel_kind=parallel_kind,
|
|
191
|
+
psrs_kinds=psrs_kinds,
|
|
192
|
+
gpu=df.op.is_gpu(),
|
|
193
|
+
output_types=[OutputType.dataframe],
|
|
194
|
+
)
|
|
195
|
+
sorted_df = op(df)
|
|
196
|
+
if inplace:
|
|
197
|
+
df.data = sorted_df.data
|
|
198
|
+
else:
|
|
199
|
+
return sorted_df
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def series_sort_values(
|
|
203
|
+
series,
|
|
204
|
+
axis=0,
|
|
205
|
+
ascending=True,
|
|
206
|
+
inplace=False,
|
|
207
|
+
kind="quicksort",
|
|
208
|
+
na_position="last",
|
|
209
|
+
ignore_index=False,
|
|
210
|
+
parallel_kind="PSRS",
|
|
211
|
+
psrs_kinds=None,
|
|
212
|
+
):
|
|
213
|
+
"""
|
|
214
|
+
Sort by the values.
|
|
215
|
+
|
|
216
|
+
Sort a Series in ascending or descending order by some
|
|
217
|
+
criterion.
|
|
218
|
+
|
|
219
|
+
Parameters
|
|
220
|
+
----------
|
|
221
|
+
series : input Series.
|
|
222
|
+
axis : {0 or 'index'}, default 0
|
|
223
|
+
Axis to direct sorting. The value 'index' is accepted for
|
|
224
|
+
compatibility with DataFrame.sort_values.
|
|
225
|
+
ascending : bool, default True
|
|
226
|
+
If True, sort values in ascending order, otherwise descending.
|
|
227
|
+
inplace : bool, default False
|
|
228
|
+
If True, perform operation in-place.
|
|
229
|
+
kind : {'quicksort', 'mergesort' or 'heapsort'}, default 'quicksort'
|
|
230
|
+
Choice of sorting algorithm. See also :func:`numpy.sort` for more
|
|
231
|
+
information. 'mergesort' is the only stable algorithm.
|
|
232
|
+
na_position : {'first' or 'last'}, default 'last'
|
|
233
|
+
Argument 'first' puts NaNs at the beginning, 'last' puts NaNs at
|
|
234
|
+
the end.
|
|
235
|
+
ignore_index : bool, default False
|
|
236
|
+
If True, the resulting axis will be labeled 0, 1, …, n - 1.
|
|
237
|
+
|
|
238
|
+
Returns
|
|
239
|
+
-------
|
|
240
|
+
Series
|
|
241
|
+
Series ordered by values.
|
|
242
|
+
|
|
243
|
+
Examples
|
|
244
|
+
--------
|
|
245
|
+
>>> import maxframe.dataframe as md
|
|
246
|
+
>>> raw = pd.Series([np.nan, 1, 3, 10, 5])
|
|
247
|
+
>>> s = md.Series(raw)
|
|
248
|
+
>>> s.execute()
|
|
249
|
+
0 NaN
|
|
250
|
+
1 1.0
|
|
251
|
+
2 3.0
|
|
252
|
+
3 10.0
|
|
253
|
+
4 5.0
|
|
254
|
+
dtype: float64
|
|
255
|
+
|
|
256
|
+
Sort values ascending order (default behaviour)
|
|
257
|
+
|
|
258
|
+
>>> s.sort_values(ascending=True).execute()
|
|
259
|
+
1 1.0
|
|
260
|
+
2 3.0
|
|
261
|
+
4 5.0
|
|
262
|
+
3 10.0
|
|
263
|
+
0 NaN
|
|
264
|
+
dtype: float64
|
|
265
|
+
|
|
266
|
+
Sort values descending order
|
|
267
|
+
|
|
268
|
+
>>> s.sort_values(ascending=False).execute()
|
|
269
|
+
3 10.0
|
|
270
|
+
4 5.0
|
|
271
|
+
2 3.0
|
|
272
|
+
1 1.0
|
|
273
|
+
0 NaN
|
|
274
|
+
dtype: float64
|
|
275
|
+
|
|
276
|
+
Sort values inplace
|
|
277
|
+
|
|
278
|
+
>>> s.sort_values(ascending=False, inplace=True)
|
|
279
|
+
>>> s.execute()
|
|
280
|
+
3 10.0
|
|
281
|
+
4 5.0
|
|
282
|
+
2 3.0
|
|
283
|
+
1 1.0
|
|
284
|
+
0 NaN
|
|
285
|
+
dtype: float64
|
|
286
|
+
|
|
287
|
+
Sort values putting NAs first
|
|
288
|
+
"""
|
|
289
|
+
if na_position not in ["last", "first"]: # pragma: no cover
|
|
290
|
+
raise TypeError(f"invalid na_position: {na_position}")
|
|
291
|
+
axis = validate_axis(axis, series)
|
|
292
|
+
if axis != 0:
|
|
293
|
+
raise NotImplementedError("Only support sort on axis 0")
|
|
294
|
+
# psrs_kinds = _validate_sort_psrs_kinds(psrs_kinds)
|
|
295
|
+
op = DataFrameSortValues(
|
|
296
|
+
axis=axis,
|
|
297
|
+
ascending=ascending,
|
|
298
|
+
inplace=inplace,
|
|
299
|
+
kind=kind,
|
|
300
|
+
na_position=na_position,
|
|
301
|
+
ignore_index=ignore_index,
|
|
302
|
+
parallel_kind=parallel_kind,
|
|
303
|
+
psrs_kinds=psrs_kinds,
|
|
304
|
+
output_types=[OutputType.series],
|
|
305
|
+
gpu=series.op.is_gpu(),
|
|
306
|
+
)
|
|
307
|
+
sorted_series = op(series)
|
|
308
|
+
if inplace:
|
|
309
|
+
series.data = sorted_series.data
|
|
310
|
+
else:
|
|
311
|
+
return sorted_series
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
import numpy as np
|
|
16
|
+
import pandas as pd
|
|
17
|
+
|
|
18
|
+
from ...initializer import DataFrame
|
|
19
|
+
from ..sort_index import DataFrameSortIndex, sort_index
|
|
20
|
+
from ..sort_values import DataFrameSortValues, dataframe_sort_values
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def test_sort_values():
|
|
24
|
+
raw = pd.DataFrame(
|
|
25
|
+
{
|
|
26
|
+
"a": np.random.rand(10),
|
|
27
|
+
"b": np.random.randint(1000, size=10),
|
|
28
|
+
"c": np.random.rand(10),
|
|
29
|
+
"d": [np.random.bytes(10) for _ in range(10)],
|
|
30
|
+
"e": [pd.Timestamp(f"201{i}") for i in range(10)],
|
|
31
|
+
"f": [pd.Timedelta(f"{i} days") for i in range(10)],
|
|
32
|
+
},
|
|
33
|
+
)
|
|
34
|
+
df = DataFrame(raw)
|
|
35
|
+
sorted_df = dataframe_sort_values(df, by="c")
|
|
36
|
+
|
|
37
|
+
assert sorted_df.shape == raw.shape
|
|
38
|
+
assert isinstance(sorted_df.op, DataFrameSortValues)
|
|
39
|
+
|
|
40
|
+
df = DataFrame(raw, chunk_size=6)
|
|
41
|
+
sorted_df = dataframe_sort_values(df, by="c")
|
|
42
|
+
|
|
43
|
+
assert sorted_df.shape == raw.shape
|
|
44
|
+
assert isinstance(sorted_df.op, DataFrameSortValues)
|
|
45
|
+
|
|
46
|
+
df = DataFrame(raw, chunk_size=3)
|
|
47
|
+
sorted_df = dataframe_sort_values(df, by=["a", "c"])
|
|
48
|
+
|
|
49
|
+
assert sorted_df.shape == raw.shape
|
|
50
|
+
assert isinstance(sorted_df.op, DataFrameSortValues)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
def test_sort_index():
|
|
54
|
+
raw = pd.DataFrame(
|
|
55
|
+
np.random.rand(10, 10), columns=np.random.rand(10), index=np.random.rand(10)
|
|
56
|
+
)
|
|
57
|
+
df = DataFrame(raw)
|
|
58
|
+
sorted_df = sort_index(df)
|
|
59
|
+
|
|
60
|
+
assert sorted_df.shape == raw.shape
|
|
61
|
+
assert isinstance(sorted_df.op, DataFrameSortIndex)
|
|
62
|
+
assert sorted_df.op.level is None
|
|
63
|
+
|
|
64
|
+
df = DataFrame(raw, chunk_size=6)
|
|
65
|
+
sorted_df = sort_index(df)
|
|
66
|
+
|
|
67
|
+
assert sorted_df.shape == raw.shape
|
|
68
|
+
assert isinstance(sorted_df.op, DataFrameSortIndex)
|
|
69
|
+
|
|
70
|
+
df = DataFrame(raw, chunk_size=3)
|
|
71
|
+
sorted_df = sort_index(df)
|
|
72
|
+
|
|
73
|
+
assert sorted_df.shape == raw.shape
|
|
74
|
+
assert isinstance(sorted_df.op, DataFrameSortIndex)
|
|
75
|
+
|
|
76
|
+
# support on axis 1
|
|
77
|
+
df = DataFrame(raw, chunk_size=4)
|
|
78
|
+
sorted_df = sort_index(df, axis=1)
|
|
79
|
+
|
|
80
|
+
assert sorted_df.shape == raw.shape
|
|
81
|
+
assert isinstance(sorted_df.op, DataFrameSortIndex)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def _install():
|
|
17
|
+
from ..core import DATAFRAME_TYPE, SERIES_TYPE
|
|
18
|
+
from .corr import df_corr, df_corrwith, series_autocorr, series_corr
|
|
19
|
+
from .quantile import quantile_dataframe, quantile_series
|
|
20
|
+
|
|
21
|
+
for t in SERIES_TYPE:
|
|
22
|
+
t.quantile = quantile_series
|
|
23
|
+
t.corr = series_corr
|
|
24
|
+
t.autocorr = series_autocorr
|
|
25
|
+
|
|
26
|
+
for t in DATAFRAME_TYPE:
|
|
27
|
+
t.quantile = quantile_dataframe
|
|
28
|
+
t.corr = df_corr
|
|
29
|
+
t.corrwith = df_corrwith
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
_install()
|
|
33
|
+
del _install
|