maxframe 0.1.0b5__cp39-cp39-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-39-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-39-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-39-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-39-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 +3 -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,402 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
import pandas as pd
|
|
19
|
+
|
|
20
|
+
from ... import opcodes
|
|
21
|
+
from ...core import OutputType
|
|
22
|
+
from ...serialization.serializables import AnyField, BoolField
|
|
23
|
+
from ...utils import no_default
|
|
24
|
+
from ..operators import DATAFRAME_TYPE, DataFrameOperator, DataFrameOperatorMixin
|
|
25
|
+
from ..utils import build_empty_df, build_empty_series, parse_index
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class DataFrameResetIndex(DataFrameOperator, DataFrameOperatorMixin):
|
|
29
|
+
_op_type_ = opcodes.RESET_INDEX
|
|
30
|
+
|
|
31
|
+
level = AnyField("level", default=None)
|
|
32
|
+
drop = BoolField("drop", default=False)
|
|
33
|
+
name = AnyField("name", default=None)
|
|
34
|
+
col_level = AnyField("col_level", default=0)
|
|
35
|
+
col_fill = AnyField("col_fill", default="")
|
|
36
|
+
|
|
37
|
+
def __init__(self, output_types=None, **kwargs):
|
|
38
|
+
super().__init__(_output_types=output_types, **kwargs)
|
|
39
|
+
|
|
40
|
+
@classmethod
|
|
41
|
+
def _get_out_index(cls, df, out_shape):
|
|
42
|
+
if isinstance(df.index, pd.RangeIndex):
|
|
43
|
+
range_value = -1 if np.isnan(out_shape[0]) else out_shape[0]
|
|
44
|
+
index_value = parse_index(pd.RangeIndex(range_value))
|
|
45
|
+
else:
|
|
46
|
+
index_value = parse_index(df.index)
|
|
47
|
+
return index_value
|
|
48
|
+
|
|
49
|
+
def _call_series(self, a):
|
|
50
|
+
if self.drop:
|
|
51
|
+
range_value = -1 if np.isnan(a.shape[0]) else a.shape[0]
|
|
52
|
+
index_value = parse_index(pd.RangeIndex(range_value))
|
|
53
|
+
return self.new_series(
|
|
54
|
+
[a], shape=a.shape, dtype=a.dtype, name=a.name, index_value=index_value
|
|
55
|
+
)
|
|
56
|
+
else:
|
|
57
|
+
empty_series = build_empty_series(
|
|
58
|
+
dtype=a.dtype, index=a.index_value.to_pandas()[:0], name=a.name
|
|
59
|
+
)
|
|
60
|
+
empty_df = empty_series.reset_index(level=self.level, name=self.name)
|
|
61
|
+
shape = (a.shape[0], len(empty_df.dtypes))
|
|
62
|
+
index_value = self._get_out_index(empty_df, shape)
|
|
63
|
+
return self.new_dataframe(
|
|
64
|
+
[a],
|
|
65
|
+
shape=shape,
|
|
66
|
+
index_value=index_value,
|
|
67
|
+
columns_value=parse_index(empty_df.columns),
|
|
68
|
+
dtypes=empty_df.dtypes,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
def _call_dataframe(self, a):
|
|
72
|
+
if self.drop:
|
|
73
|
+
shape = a.shape
|
|
74
|
+
columns_value = a.columns_value
|
|
75
|
+
dtypes = a.dtypes
|
|
76
|
+
range_value = -1 if np.isnan(a.shape[0]) else a.shape[0]
|
|
77
|
+
index_value = parse_index(pd.RangeIndex(range_value))
|
|
78
|
+
else:
|
|
79
|
+
empty_df = build_empty_df(a.dtypes)
|
|
80
|
+
empty_df.index = a.index_value.to_pandas()[:0]
|
|
81
|
+
empty_df = empty_df.reset_index(
|
|
82
|
+
level=self.level, col_level=self.col_level, col_fill=self.col_fill
|
|
83
|
+
)
|
|
84
|
+
shape = (a.shape[0], len(empty_df.columns))
|
|
85
|
+
columns_value = parse_index(empty_df.columns, store_data=True)
|
|
86
|
+
dtypes = empty_df.dtypes
|
|
87
|
+
index_value = self._get_out_index(empty_df, shape)
|
|
88
|
+
return self.new_dataframe(
|
|
89
|
+
[a],
|
|
90
|
+
shape=shape,
|
|
91
|
+
columns_value=columns_value,
|
|
92
|
+
index_value=index_value,
|
|
93
|
+
dtypes=dtypes,
|
|
94
|
+
)
|
|
95
|
+
|
|
96
|
+
def __call__(self, a):
|
|
97
|
+
if isinstance(a, DATAFRAME_TYPE):
|
|
98
|
+
return self._call_dataframe(a)
|
|
99
|
+
else:
|
|
100
|
+
return self._call_series(a)
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def df_reset_index(
|
|
104
|
+
df,
|
|
105
|
+
level=None,
|
|
106
|
+
drop=False,
|
|
107
|
+
inplace=False,
|
|
108
|
+
col_level=0,
|
|
109
|
+
col_fill="",
|
|
110
|
+
):
|
|
111
|
+
"""
|
|
112
|
+
Reset the index, or a level of it.
|
|
113
|
+
|
|
114
|
+
Reset the index of the DataFrame, and use the default one instead.
|
|
115
|
+
If the DataFrame has a MultiIndex, this method can remove one or more
|
|
116
|
+
levels.
|
|
117
|
+
|
|
118
|
+
Parameters
|
|
119
|
+
----------
|
|
120
|
+
level : int, str, tuple, or list, default None
|
|
121
|
+
Only remove the given levels from the index. Removes all levels by
|
|
122
|
+
default.
|
|
123
|
+
drop : bool, default False
|
|
124
|
+
Do not try to insert index into dataframe columns. This resets
|
|
125
|
+
the index to the default integer index.
|
|
126
|
+
inplace : bool, default False
|
|
127
|
+
Modify the DataFrame in place (do not create a new object).
|
|
128
|
+
col_level : int or str, default 0
|
|
129
|
+
If the columns have multiple levels, determines which level the
|
|
130
|
+
labels are inserted into. By default it is inserted into the first
|
|
131
|
+
level.
|
|
132
|
+
col_fill : object, default ''
|
|
133
|
+
If the columns have multiple levels, determines how the other
|
|
134
|
+
levels are named. If None then the index name is repeated.
|
|
135
|
+
|
|
136
|
+
Returns
|
|
137
|
+
-------
|
|
138
|
+
DataFrame or None
|
|
139
|
+
DataFrame with the new index or None if ``inplace=True``.
|
|
140
|
+
|
|
141
|
+
See Also
|
|
142
|
+
--------
|
|
143
|
+
DataFrame.set_index : Opposite of reset_index.
|
|
144
|
+
DataFrame.reindex : Change to new indices or expand indices.
|
|
145
|
+
DataFrame.reindex_like : Change to same indices as other DataFrame.
|
|
146
|
+
|
|
147
|
+
Examples
|
|
148
|
+
--------
|
|
149
|
+
>>> import maxframe.tensor as mt
|
|
150
|
+
>>> import maxframe.dataframe as md
|
|
151
|
+
>>> df = md.DataFrame([('bird', 389.0),
|
|
152
|
+
... ('bird', 24.0),
|
|
153
|
+
... ('mammal', 80.5),
|
|
154
|
+
... ('mammal', mt.nan)],
|
|
155
|
+
... index=['falcon', 'parrot', 'lion', 'monkey'],
|
|
156
|
+
... columns=('class', 'max_speed'))
|
|
157
|
+
>>> df.execute()
|
|
158
|
+
class max_speed
|
|
159
|
+
falcon bird 389.0
|
|
160
|
+
parrot bird 24.0
|
|
161
|
+
lion mammal 80.5
|
|
162
|
+
monkey mammal NaN
|
|
163
|
+
|
|
164
|
+
When we reset the index, the old index is added as a column, and a
|
|
165
|
+
new sequential index is used:
|
|
166
|
+
|
|
167
|
+
>>> df.reset_index().execute()
|
|
168
|
+
index class max_speed
|
|
169
|
+
0 falcon bird 389.0
|
|
170
|
+
1 parrot bird 24.0
|
|
171
|
+
2 lion mammal 80.5
|
|
172
|
+
3 monkey mammal NaN
|
|
173
|
+
|
|
174
|
+
We can use the `drop` parameter to avoid the old index being added as
|
|
175
|
+
a column:
|
|
176
|
+
|
|
177
|
+
>>> df.reset_index(drop=True).execute()
|
|
178
|
+
class max_speed
|
|
179
|
+
0 bird 389.0
|
|
180
|
+
1 bird 24.0
|
|
181
|
+
2 mammal 80.5
|
|
182
|
+
3 mammal NaN
|
|
183
|
+
|
|
184
|
+
You can also use `reset_index` with `MultiIndex`.
|
|
185
|
+
|
|
186
|
+
>>> import pandas as pd
|
|
187
|
+
>>> index = pd.MultiIndex.from_tuples([('bird', 'falcon'),
|
|
188
|
+
... ('bird', 'parrot'),
|
|
189
|
+
... ('mammal', 'lion'),
|
|
190
|
+
... ('mammal', 'monkey')],
|
|
191
|
+
... names=['class', 'name'])
|
|
192
|
+
>>> columns = pd.MultiIndex.from_tuples([('speed', 'max'),
|
|
193
|
+
... ('species', 'type')])
|
|
194
|
+
>>> df = md.DataFrame([(389.0, 'fly'),
|
|
195
|
+
... ( 24.0, 'fly'),
|
|
196
|
+
... ( 80.5, 'run'),
|
|
197
|
+
... (mt.nan, 'jump')],
|
|
198
|
+
... index=index,
|
|
199
|
+
... columns=columns)
|
|
200
|
+
>>> df.execute()
|
|
201
|
+
speed species
|
|
202
|
+
max type
|
|
203
|
+
class name
|
|
204
|
+
bird falcon 389.0 fly
|
|
205
|
+
parrot 24.0 fly
|
|
206
|
+
mammal lion 80.5 run
|
|
207
|
+
monkey NaN jump
|
|
208
|
+
|
|
209
|
+
If the index has multiple levels, we can reset a subset of them:
|
|
210
|
+
|
|
211
|
+
>>> df.reset_index(level='class').execute()
|
|
212
|
+
class speed species
|
|
213
|
+
max type
|
|
214
|
+
name
|
|
215
|
+
falcon bird 389.0 fly
|
|
216
|
+
parrot bird 24.0 fly
|
|
217
|
+
lion mammal 80.5 run
|
|
218
|
+
monkey mammal NaN jump
|
|
219
|
+
|
|
220
|
+
If we are not dropping the index, by default, it is placed in the top
|
|
221
|
+
level. We can place it in another level:
|
|
222
|
+
|
|
223
|
+
>>> df.reset_index(level='class', col_level=1).execute()
|
|
224
|
+
speed species
|
|
225
|
+
class max type
|
|
226
|
+
name
|
|
227
|
+
falcon bird 389.0 fly
|
|
228
|
+
parrot bird 24.0 fly
|
|
229
|
+
lion mammal 80.5 run
|
|
230
|
+
monkey mammal NaN jump
|
|
231
|
+
|
|
232
|
+
When the index is inserted under another level, we can specify under
|
|
233
|
+
which one with the parameter `col_fill`:
|
|
234
|
+
|
|
235
|
+
>>> df.reset_index(level='class', col_level=1, col_fill='species').execute()
|
|
236
|
+
species speed species
|
|
237
|
+
class max type
|
|
238
|
+
name
|
|
239
|
+
falcon bird 389.0 fly
|
|
240
|
+
parrot bird 24.0 fly
|
|
241
|
+
lion mammal 80.5 run
|
|
242
|
+
monkey mammal NaN jump
|
|
243
|
+
|
|
244
|
+
If we specify a nonexistent level for `col_fill`, it is created:
|
|
245
|
+
|
|
246
|
+
>>> df.reset_index(level='class', col_level=1, col_fill='genus').execute()
|
|
247
|
+
genus speed species
|
|
248
|
+
class max type
|
|
249
|
+
name
|
|
250
|
+
falcon bird 389.0 fly
|
|
251
|
+
parrot bird 24.0 fly
|
|
252
|
+
lion mammal 80.5 run
|
|
253
|
+
monkey mammal NaN jump
|
|
254
|
+
"""
|
|
255
|
+
op = DataFrameResetIndex(
|
|
256
|
+
level=level,
|
|
257
|
+
drop=drop,
|
|
258
|
+
col_level=col_level,
|
|
259
|
+
col_fill=col_fill,
|
|
260
|
+
output_types=[OutputType.dataframe],
|
|
261
|
+
)
|
|
262
|
+
ret = op(df)
|
|
263
|
+
if not inplace:
|
|
264
|
+
return ret
|
|
265
|
+
else:
|
|
266
|
+
df.data = ret.data
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
def series_reset_index(
|
|
270
|
+
series,
|
|
271
|
+
level=None,
|
|
272
|
+
drop=False,
|
|
273
|
+
name=no_default,
|
|
274
|
+
inplace=False,
|
|
275
|
+
):
|
|
276
|
+
"""
|
|
277
|
+
Generate a new DataFrame or Series with the index reset.
|
|
278
|
+
|
|
279
|
+
This is useful when the index needs to be treated as a column, or
|
|
280
|
+
when the index is meaningless and needs to be reset to the default
|
|
281
|
+
before another operation.
|
|
282
|
+
|
|
283
|
+
Parameters
|
|
284
|
+
----------
|
|
285
|
+
level : int, str, tuple, or list, default optional
|
|
286
|
+
For a Series with a MultiIndex, only remove the specified levels
|
|
287
|
+
from the index. Removes all levels by default.
|
|
288
|
+
drop : bool, default False
|
|
289
|
+
Just reset the index, without inserting it as a column in
|
|
290
|
+
the new DataFrame.
|
|
291
|
+
name : object, optional
|
|
292
|
+
The name to use for the column containing the original Series
|
|
293
|
+
values. Uses ``self.name`` by default. This argument is ignored
|
|
294
|
+
when `drop` is True.
|
|
295
|
+
inplace : bool, default False
|
|
296
|
+
Modify the Series in place (do not create a new object).
|
|
297
|
+
|
|
298
|
+
Returns
|
|
299
|
+
-------
|
|
300
|
+
Series or DataFrame
|
|
301
|
+
When `drop` is False (the default), a DataFrame is returned.
|
|
302
|
+
The newly created columns will come first in the DataFrame,
|
|
303
|
+
followed by the original Series values.
|
|
304
|
+
When `drop` is True, a `Series` is returned.
|
|
305
|
+
In either case, if ``inplace=True``, no value is returned.
|
|
306
|
+
|
|
307
|
+
See Also
|
|
308
|
+
--------
|
|
309
|
+
DataFrame.reset_index: Analogous function for DataFrame.
|
|
310
|
+
|
|
311
|
+
Examples
|
|
312
|
+
--------
|
|
313
|
+
>>> import maxframe.tensor as mt
|
|
314
|
+
>>> import maxframe.dataframe as md
|
|
315
|
+
>>> s = md.Series([1, 2, 3, 4], name='foo',
|
|
316
|
+
... index=md.Index(['a', 'b', 'c', 'd'], name='idx'))
|
|
317
|
+
|
|
318
|
+
Generate a DataFrame with default index.
|
|
319
|
+
|
|
320
|
+
>>> s.reset_index().execute()
|
|
321
|
+
idx foo
|
|
322
|
+
0 a 1
|
|
323
|
+
1 b 2
|
|
324
|
+
2 c 3
|
|
325
|
+
3 d 4
|
|
326
|
+
|
|
327
|
+
To specify the name of the new column use `name`.
|
|
328
|
+
|
|
329
|
+
>>> s.reset_index(name='values').execute()
|
|
330
|
+
idx values
|
|
331
|
+
0 a 1
|
|
332
|
+
1 b 2
|
|
333
|
+
2 c 3
|
|
334
|
+
3 d 4
|
|
335
|
+
|
|
336
|
+
To generate a new Series with the default set `drop` to True.
|
|
337
|
+
|
|
338
|
+
>>> s.reset_index(drop=True).execute()
|
|
339
|
+
0 1
|
|
340
|
+
1 2
|
|
341
|
+
2 3
|
|
342
|
+
3 4
|
|
343
|
+
Name: foo, dtype: int64
|
|
344
|
+
|
|
345
|
+
To update the Series in place, without generating a new one
|
|
346
|
+
set `inplace` to True. Note that it also requires ``drop=True``.
|
|
347
|
+
|
|
348
|
+
>>> s.reset_index(inplace=True, drop=True)
|
|
349
|
+
>>> s.execute()
|
|
350
|
+
0 1
|
|
351
|
+
1 2
|
|
352
|
+
2 3
|
|
353
|
+
3 4
|
|
354
|
+
Name: foo, dtype: int64
|
|
355
|
+
|
|
356
|
+
The `level` parameter is interesting for Series with a multi-level
|
|
357
|
+
index.
|
|
358
|
+
|
|
359
|
+
>>> import numpy as np
|
|
360
|
+
>>> import pandas as pd
|
|
361
|
+
>>> arrays = [np.array(['bar', 'bar', 'baz', 'baz']),
|
|
362
|
+
... np.array(['one', 'two', 'one', 'two'])]
|
|
363
|
+
>>> s2 = md.Series(
|
|
364
|
+
... range(4), name='foo',
|
|
365
|
+
... index=pd.MultiIndex.from_arrays(arrays,
|
|
366
|
+
... names=['a', 'b']))
|
|
367
|
+
|
|
368
|
+
To remove a specific level from the Index, use `level`.
|
|
369
|
+
|
|
370
|
+
>>> s2.reset_index(level='a').execute()
|
|
371
|
+
a foo
|
|
372
|
+
b
|
|
373
|
+
one bar 0
|
|
374
|
+
two bar 1
|
|
375
|
+
one baz 2
|
|
376
|
+
two baz 3
|
|
377
|
+
|
|
378
|
+
If `level` is not set, all levels are removed from the Index.
|
|
379
|
+
|
|
380
|
+
>>> s2.reset_index().execute()
|
|
381
|
+
a b foo
|
|
382
|
+
0 bar one 0
|
|
383
|
+
1 bar two 1
|
|
384
|
+
2 baz one 2
|
|
385
|
+
3 baz two 3
|
|
386
|
+
"""
|
|
387
|
+
if name is no_default:
|
|
388
|
+
name = series.name if series.name is not None else 0
|
|
389
|
+
|
|
390
|
+
op = DataFrameResetIndex(
|
|
391
|
+
level=level,
|
|
392
|
+
drop=drop,
|
|
393
|
+
name=name,
|
|
394
|
+
output_types=[OutputType.series if drop else OutputType.dataframe],
|
|
395
|
+
)
|
|
396
|
+
ret = op(series)
|
|
397
|
+
if not inplace:
|
|
398
|
+
return ret
|
|
399
|
+
elif ret.ndim == 2:
|
|
400
|
+
raise TypeError("Cannot reset_index inplace on a Series to create a DataFrame")
|
|
401
|
+
else:
|
|
402
|
+
series.data = ret.data
|
|
@@ -0,0 +1,221 @@
|
|
|
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 copy
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
from ... import opcodes
|
|
20
|
+
from ...core import ENTITY_TYPE, get_output_types
|
|
21
|
+
from ...serialization.serializables import (
|
|
22
|
+
AnyField,
|
|
23
|
+
BoolField,
|
|
24
|
+
Float64Field,
|
|
25
|
+
Int8Field,
|
|
26
|
+
Int64Field,
|
|
27
|
+
)
|
|
28
|
+
from ...tensor.random import RandomStateField
|
|
29
|
+
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
30
|
+
from ..utils import parse_index, validate_axis
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class DataFrameSample(DataFrameOperator, DataFrameOperatorMixin):
|
|
34
|
+
_op_type_ = opcodes.RAND_SAMPLE
|
|
35
|
+
|
|
36
|
+
size = Int64Field("size", default=None)
|
|
37
|
+
frac = Float64Field("frac", default=None)
|
|
38
|
+
replace = BoolField("replace", default=False)
|
|
39
|
+
weights = AnyField("weights", default=None)
|
|
40
|
+
axis = Int8Field("axis", default=None)
|
|
41
|
+
seed = Int64Field("seed", default=None)
|
|
42
|
+
random_state = RandomStateField("random_state", default=None)
|
|
43
|
+
|
|
44
|
+
def __init__(self, random_state=None, seed=None, **kw):
|
|
45
|
+
if random_state is None:
|
|
46
|
+
random_state = np.random.RandomState(seed)
|
|
47
|
+
super().__init__(random_state=random_state, seed=seed, **kw)
|
|
48
|
+
|
|
49
|
+
def _set_inputs(self, inputs):
|
|
50
|
+
super()._set_inputs(inputs)
|
|
51
|
+
it = iter(inputs)
|
|
52
|
+
next(it)
|
|
53
|
+
if isinstance(self.weights, ENTITY_TYPE):
|
|
54
|
+
self.weights = next(it)
|
|
55
|
+
|
|
56
|
+
def __call__(self, df):
|
|
57
|
+
params = df.params
|
|
58
|
+
new_shape = list(df.shape)
|
|
59
|
+
|
|
60
|
+
if self.frac is not None and not np.isnan(df.shape[self.axis]):
|
|
61
|
+
self.size = int(self.frac * df.shape[self.axis])
|
|
62
|
+
self.frac = None
|
|
63
|
+
|
|
64
|
+
if self.size is not None:
|
|
65
|
+
new_shape[self.axis] = self.size
|
|
66
|
+
params["shape"] = tuple(new_shape)
|
|
67
|
+
params["index_value"] = parse_index(df.index_value.to_pandas()[:0])
|
|
68
|
+
|
|
69
|
+
input_dfs = [df]
|
|
70
|
+
if isinstance(self.weights, ENTITY_TYPE):
|
|
71
|
+
input_dfs.append(self.weights)
|
|
72
|
+
|
|
73
|
+
self._output_types = get_output_types(df)
|
|
74
|
+
return self.new_tileable(input_dfs, **params)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def sample(
|
|
78
|
+
df_or_series,
|
|
79
|
+
n=None,
|
|
80
|
+
frac=None,
|
|
81
|
+
replace=False,
|
|
82
|
+
weights=None,
|
|
83
|
+
random_state=None,
|
|
84
|
+
axis=None,
|
|
85
|
+
always_multinomial=False,
|
|
86
|
+
):
|
|
87
|
+
"""
|
|
88
|
+
Return a random sample of items from an axis of object.
|
|
89
|
+
|
|
90
|
+
You can use `random_state` for reproducibility.
|
|
91
|
+
|
|
92
|
+
Parameters
|
|
93
|
+
----------
|
|
94
|
+
n : int, optional
|
|
95
|
+
Number of items from axis to return. Cannot be used with `frac`.
|
|
96
|
+
Default = 1 if `frac` = None.
|
|
97
|
+
frac : float, optional
|
|
98
|
+
Fraction of axis items to return. Cannot be used with `n`.
|
|
99
|
+
replace : bool, default False
|
|
100
|
+
Allow or disallow sampling of the same row more than once.
|
|
101
|
+
weights : str or ndarray-like, optional
|
|
102
|
+
Default 'None' results in equal probability weighting.
|
|
103
|
+
If passed a Series, will align with target object on index. Index
|
|
104
|
+
values in weights not found in sampled object will be ignored and
|
|
105
|
+
index values in sampled object not in weights will be assigned
|
|
106
|
+
weights of zero.
|
|
107
|
+
If called on a DataFrame, will accept the name of a column
|
|
108
|
+
when axis = 0.
|
|
109
|
+
Unless weights are a Series, weights must be same length as axis
|
|
110
|
+
being sampled.
|
|
111
|
+
If weights do not sum to 1, they will be normalized to sum to 1.
|
|
112
|
+
Missing values in the weights column will be treated as zero.
|
|
113
|
+
Infinite values not allowed.
|
|
114
|
+
random_state : int, array-like, BitGenerator, np.random.RandomState, optional
|
|
115
|
+
If int, array-like, or BitGenerator (NumPy>=1.17), seed for
|
|
116
|
+
random number generator
|
|
117
|
+
If np.random.RandomState, use as numpy RandomState object.
|
|
118
|
+
axis : {0 or ‘index’, 1 or ‘columns’, None}, default None
|
|
119
|
+
Axis to sample. Accepts axis number or name. Default is stat axis
|
|
120
|
+
for given data type (0 for Series and DataFrames).
|
|
121
|
+
always_multinomial : bool, default False
|
|
122
|
+
If True, always treat distribution of sample counts between data chunks
|
|
123
|
+
as multinomial distribution. This will accelerate sampling when data
|
|
124
|
+
is huge, but may affect randomness of samples when number of instances
|
|
125
|
+
is not very large.
|
|
126
|
+
|
|
127
|
+
Returns
|
|
128
|
+
-------
|
|
129
|
+
Series or DataFrame
|
|
130
|
+
A new object of same type as caller containing `n` items randomly
|
|
131
|
+
sampled from the caller object.
|
|
132
|
+
|
|
133
|
+
See Also
|
|
134
|
+
--------
|
|
135
|
+
DataFrameGroupBy.sample: Generates random samples from each group of a
|
|
136
|
+
DataFrame object.
|
|
137
|
+
SeriesGroupBy.sample: Generates random samples from each group of a
|
|
138
|
+
Series object.
|
|
139
|
+
numpy.random.choice: Generates a random sample from a given 1-D numpy
|
|
140
|
+
array.
|
|
141
|
+
|
|
142
|
+
Notes
|
|
143
|
+
-----
|
|
144
|
+
If `frac` > 1, `replacement` should be set to `True`.
|
|
145
|
+
|
|
146
|
+
Examples
|
|
147
|
+
--------
|
|
148
|
+
>>> import maxframe.dataframe as md
|
|
149
|
+
>>> df = md.DataFrame({'num_legs': [2, 4, 8, 0],
|
|
150
|
+
... 'num_wings': [2, 0, 0, 0],
|
|
151
|
+
... 'num_specimen_seen': [10, 2, 1, 8]},
|
|
152
|
+
... index=['falcon', 'dog', 'spider', 'fish'])
|
|
153
|
+
>>> df.execute()
|
|
154
|
+
num_legs num_wings num_specimen_seen
|
|
155
|
+
falcon 2 2 10
|
|
156
|
+
dog 4 0 2
|
|
157
|
+
spider 8 0 1
|
|
158
|
+
fish 0 0 8
|
|
159
|
+
|
|
160
|
+
Extract 3 random elements from the ``Series`` ``df['num_legs']``:
|
|
161
|
+
Note that we use `random_state` to ensure the reproducibility of
|
|
162
|
+
the examples.
|
|
163
|
+
|
|
164
|
+
>>> df['num_legs'].sample(n=3, random_state=1).execute()
|
|
165
|
+
fish 0
|
|
166
|
+
spider 8
|
|
167
|
+
falcon 2
|
|
168
|
+
Name: num_legs, dtype: int64
|
|
169
|
+
|
|
170
|
+
A random 50% sample of the ``DataFrame`` with replacement:
|
|
171
|
+
|
|
172
|
+
>>> df.sample(frac=0.5, replace=True, random_state=1).execute()
|
|
173
|
+
num_legs num_wings num_specimen_seen
|
|
174
|
+
dog 4 0 2
|
|
175
|
+
fish 0 0 8
|
|
176
|
+
|
|
177
|
+
An upsample sample of the ``DataFrame`` with replacement:
|
|
178
|
+
Note that `replace` parameter has to be `True` for `frac` parameter > 1.
|
|
179
|
+
|
|
180
|
+
>>> df.sample(frac=2, replace=True, random_state=1).execute()
|
|
181
|
+
num_legs num_wings num_specimen_seen
|
|
182
|
+
dog 4 0 2
|
|
183
|
+
fish 0 0 8
|
|
184
|
+
falcon 2 2 10
|
|
185
|
+
falcon 2 2 10
|
|
186
|
+
fish 0 0 8
|
|
187
|
+
dog 4 0 2
|
|
188
|
+
fish 0 0 8
|
|
189
|
+
dog 4 0 2
|
|
190
|
+
|
|
191
|
+
Using a DataFrame column as weights. Rows with larger value in the
|
|
192
|
+
`num_specimen_seen` column are more likely to be sampled.
|
|
193
|
+
|
|
194
|
+
>>> df.sample(n=2, weights='num_specimen_seen', random_state=1).execute()
|
|
195
|
+
num_legs num_wings num_specimen_seen
|
|
196
|
+
falcon 2 2 10
|
|
197
|
+
fish 0 0 8
|
|
198
|
+
|
|
199
|
+
"""
|
|
200
|
+
axis = validate_axis(axis or 0, df_or_series)
|
|
201
|
+
if axis == 1:
|
|
202
|
+
raise NotImplementedError("Currently cannot sample over columns")
|
|
203
|
+
if frac is not None and frac < 0 or n is not None and n < 0:
|
|
204
|
+
raise ValueError(
|
|
205
|
+
"A negative number of rows requested. Please provide positive value."
|
|
206
|
+
)
|
|
207
|
+
rs = copy.deepcopy(
|
|
208
|
+
random_state.to_numpy() if hasattr(random_state, "to_numpy") else random_state
|
|
209
|
+
)
|
|
210
|
+
if isinstance(rs, (int, np.ndarray)):
|
|
211
|
+
rs = np.random.RandomState(rs)
|
|
212
|
+
op = DataFrameSample(
|
|
213
|
+
size=n,
|
|
214
|
+
frac=frac,
|
|
215
|
+
replace=replace,
|
|
216
|
+
weights=weights,
|
|
217
|
+
random_state=rs,
|
|
218
|
+
axis=axis,
|
|
219
|
+
always_multinomial=always_multinomial,
|
|
220
|
+
)
|
|
221
|
+
return op(df_or_series)
|