maxframe 0.1.0b5__cp311-cp311-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-311-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-311-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-311-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-311-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,236 @@
|
|
|
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 inspect
|
|
16
|
+
from collections.abc import MutableMapping
|
|
17
|
+
|
|
18
|
+
import numpy as np
|
|
19
|
+
import pandas as pd
|
|
20
|
+
|
|
21
|
+
from ... import opcodes
|
|
22
|
+
from ...core import OutputType
|
|
23
|
+
from ...serialization.serializables import AnyField, KeyField, StringField
|
|
24
|
+
from ...utils import quiet_stdio
|
|
25
|
+
from ..core import SERIES_TYPE
|
|
26
|
+
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
27
|
+
from ..utils import build_series
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class DataFrameMap(DataFrameOperator, DataFrameOperatorMixin):
|
|
31
|
+
_op_type_ = opcodes.MAP
|
|
32
|
+
|
|
33
|
+
input = KeyField("input", default=None)
|
|
34
|
+
arg = AnyField("arg", default=None)
|
|
35
|
+
na_action = StringField("na_action", default=None)
|
|
36
|
+
|
|
37
|
+
def __init__(self, output_types=None, memory_scale=None, **kw):
|
|
38
|
+
super().__init__(_output_types=output_types, _memory_scale=memory_scale, **kw)
|
|
39
|
+
if not self.output_types:
|
|
40
|
+
self.output_types = [OutputType.series]
|
|
41
|
+
|
|
42
|
+
def _set_inputs(self, inputs):
|
|
43
|
+
super()._set_inputs(inputs)
|
|
44
|
+
self.input = self._inputs[0]
|
|
45
|
+
if len(inputs) == 2:
|
|
46
|
+
self.arg = self._inputs[1]
|
|
47
|
+
|
|
48
|
+
def __call__(self, series, dtype, skip_infer=False):
|
|
49
|
+
if dtype is None and not skip_infer:
|
|
50
|
+
inferred_dtype = None
|
|
51
|
+
if callable(self.arg):
|
|
52
|
+
# arg is a function, try to inspect the signature
|
|
53
|
+
sig = inspect.signature(self.arg)
|
|
54
|
+
return_type = sig.return_annotation
|
|
55
|
+
if return_type is not inspect._empty:
|
|
56
|
+
inferred_dtype = np.dtype(return_type)
|
|
57
|
+
else:
|
|
58
|
+
try:
|
|
59
|
+
with quiet_stdio():
|
|
60
|
+
# try to infer dtype by calling the function
|
|
61
|
+
inferred_dtype = (
|
|
62
|
+
build_series(series)
|
|
63
|
+
.map(self.arg, na_action=self.na_action)
|
|
64
|
+
.dtype
|
|
65
|
+
)
|
|
66
|
+
except: # noqa: E722 # nosec
|
|
67
|
+
pass
|
|
68
|
+
else:
|
|
69
|
+
if isinstance(self.arg, MutableMapping):
|
|
70
|
+
inferred_dtype = pd.Series(self.arg).dtype
|
|
71
|
+
else:
|
|
72
|
+
inferred_dtype = self.arg.dtype
|
|
73
|
+
if inferred_dtype is not None and np.issubdtype(inferred_dtype, np.number):
|
|
74
|
+
if np.issubdtype(inferred_dtype, np.inexact):
|
|
75
|
+
# for the inexact e.g. float
|
|
76
|
+
# we can make the decision,
|
|
77
|
+
# but for int, due to the nan which may occur,
|
|
78
|
+
# we cannot infer the dtype
|
|
79
|
+
dtype = inferred_dtype
|
|
80
|
+
else:
|
|
81
|
+
dtype = inferred_dtype
|
|
82
|
+
|
|
83
|
+
if dtype is None:
|
|
84
|
+
if not skip_infer:
|
|
85
|
+
raise ValueError(
|
|
86
|
+
"cannot infer dtype, it needs to be specified manually for `map`"
|
|
87
|
+
)
|
|
88
|
+
else:
|
|
89
|
+
dtype = np.int64 if dtype is int else dtype
|
|
90
|
+
dtype = np.dtype(dtype)
|
|
91
|
+
|
|
92
|
+
inputs = [series]
|
|
93
|
+
if isinstance(self.arg, SERIES_TYPE):
|
|
94
|
+
inputs.append(self.arg)
|
|
95
|
+
|
|
96
|
+
if isinstance(series, SERIES_TYPE):
|
|
97
|
+
return self.new_series(
|
|
98
|
+
inputs,
|
|
99
|
+
shape=series.shape,
|
|
100
|
+
dtype=dtype,
|
|
101
|
+
index_value=series.index_value,
|
|
102
|
+
name=series.name,
|
|
103
|
+
)
|
|
104
|
+
else:
|
|
105
|
+
return self.new_index(
|
|
106
|
+
inputs,
|
|
107
|
+
shape=series.shape,
|
|
108
|
+
dtype=dtype,
|
|
109
|
+
index_value=series.index_value,
|
|
110
|
+
name=series.name,
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
def series_map(
|
|
115
|
+
series, arg, na_action=None, dtype=None, memory_scale=None, skip_infer=False
|
|
116
|
+
):
|
|
117
|
+
"""
|
|
118
|
+
Map values of Series according to input correspondence.
|
|
119
|
+
|
|
120
|
+
Used for substituting each value in a Series with another value,
|
|
121
|
+
that may be derived from a function, a ``dict`` or
|
|
122
|
+
a :class:`Series`.
|
|
123
|
+
|
|
124
|
+
Parameters
|
|
125
|
+
----------
|
|
126
|
+
arg : function, collections.abc.Mapping subclass or Series
|
|
127
|
+
Mapping correspondence.
|
|
128
|
+
na_action : {None, 'ignore'}, default None
|
|
129
|
+
If 'ignore', propagate NaN values, without passing them to the
|
|
130
|
+
mapping correspondence.
|
|
131
|
+
dtype : np.dtype, default None
|
|
132
|
+
Specify return type of the function. Must be specified when
|
|
133
|
+
we cannot decide the return type of the function.
|
|
134
|
+
memory_scale : float
|
|
135
|
+
Specify the scale of memory uses in the function versus
|
|
136
|
+
input size.
|
|
137
|
+
skip_infer: bool, default False
|
|
138
|
+
Whether infer dtypes when dtypes or output_type is not specified
|
|
139
|
+
|
|
140
|
+
Returns
|
|
141
|
+
-------
|
|
142
|
+
Series
|
|
143
|
+
Same index as caller.
|
|
144
|
+
|
|
145
|
+
See Also
|
|
146
|
+
--------
|
|
147
|
+
Series.apply : For applying more complex functions on a Series.
|
|
148
|
+
DataFrame.apply : Apply a function row-/column-wise.
|
|
149
|
+
DataFrame.applymap : Apply a function elementwise on a whole DataFrame.
|
|
150
|
+
|
|
151
|
+
Notes
|
|
152
|
+
-----
|
|
153
|
+
When ``arg`` is a dictionary, values in Series that are not in the
|
|
154
|
+
dictionary (as keys) are converted to ``NaN``. However, if the
|
|
155
|
+
dictionary is a ``dict`` subclass that defines ``__missing__`` (i.e.
|
|
156
|
+
provides a method for default values), then this default is used
|
|
157
|
+
rather than ``NaN``.
|
|
158
|
+
|
|
159
|
+
Examples
|
|
160
|
+
--------
|
|
161
|
+
>>> import maxframe.tensor as mt
|
|
162
|
+
>>> import maxframe.dataframe as md
|
|
163
|
+
>>> s = md.Series(['cat', 'dog', mt.nan, 'rabbit'])
|
|
164
|
+
>>> s.execute()
|
|
165
|
+
0 cat
|
|
166
|
+
1 dog
|
|
167
|
+
2 NaN
|
|
168
|
+
3 rabbit
|
|
169
|
+
dtype: object
|
|
170
|
+
|
|
171
|
+
``map`` accepts a ``dict`` or a ``Series``. Values that are not found
|
|
172
|
+
in the ``dict`` are converted to ``NaN``, unless the dict has a default
|
|
173
|
+
value (e.g. ``defaultdict``):
|
|
174
|
+
|
|
175
|
+
>>> s.map({'cat': 'kitten', 'dog': 'puppy'}).execute()
|
|
176
|
+
0 kitten
|
|
177
|
+
1 puppy
|
|
178
|
+
2 NaN
|
|
179
|
+
3 NaN
|
|
180
|
+
dtype: object
|
|
181
|
+
|
|
182
|
+
It also accepts a function:
|
|
183
|
+
|
|
184
|
+
>>> s.map('I am a {}'.format).execute()
|
|
185
|
+
0 I am a cat
|
|
186
|
+
1 I am a dog
|
|
187
|
+
2 I am a nan
|
|
188
|
+
3 I am a rabbit
|
|
189
|
+
dtype: object
|
|
190
|
+
|
|
191
|
+
To avoid applying the function to missing values (and keep them as
|
|
192
|
+
``NaN``) ``na_action='ignore'`` can be used:
|
|
193
|
+
|
|
194
|
+
>>> s.map('I am a {}'.format, na_action='ignore').execute()
|
|
195
|
+
0 I am a cat
|
|
196
|
+
1 I am a dog
|
|
197
|
+
2 NaN
|
|
198
|
+
3 I am a rabbit
|
|
199
|
+
dtype: object
|
|
200
|
+
"""
|
|
201
|
+
op = DataFrameMap(arg=arg, na_action=na_action, memory_scale=memory_scale)
|
|
202
|
+
return op(series, dtype=dtype, skip_infer=skip_infer)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def index_map(
|
|
206
|
+
idx, mapper, na_action=None, dtype=None, memory_scale=None, skip_infer=False
|
|
207
|
+
):
|
|
208
|
+
"""
|
|
209
|
+
Map values using input correspondence (a dict, Series, or function).
|
|
210
|
+
|
|
211
|
+
Parameters
|
|
212
|
+
----------
|
|
213
|
+
mapper : function, dict, or Series
|
|
214
|
+
Mapping correspondence.
|
|
215
|
+
na_action : {None, 'ignore'}
|
|
216
|
+
If 'ignore', propagate NA values, without passing them to the
|
|
217
|
+
mapping correspondence.
|
|
218
|
+
dtype : np.dtype, default None
|
|
219
|
+
Specify return type of the function. Must be specified when
|
|
220
|
+
we cannot decide the return type of the function.
|
|
221
|
+
memory_scale : float
|
|
222
|
+
Specify the scale of memory uses in the function versus
|
|
223
|
+
input size.
|
|
224
|
+
skip_infer: bool, default False
|
|
225
|
+
Whether infer dtypes when dtypes or output_type is not specified
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
Returns
|
|
229
|
+
-------
|
|
230
|
+
applied : Union[Index, MultiIndex], inferred
|
|
231
|
+
The output of the mapping function applied to the index.
|
|
232
|
+
If the function returns a tuple with more than one element
|
|
233
|
+
a MultiIndex will be returned.
|
|
234
|
+
"""
|
|
235
|
+
op = DataFrameMap(arg=mapper, na_action=na_action, memory_scale=memory_scale)
|
|
236
|
+
return op(idx, dtype=dtype, skip_infer=skip_infer)
|
|
@@ -0,0 +1,162 @@
|
|
|
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 ...serialization.serializables import AnyField, StringField
|
|
20
|
+
from ..operators import DataFrameOperator, DataFrameOperatorMixin, OutputType
|
|
21
|
+
from ..utils import build_empty_df, parse_index
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class DataFrameMelt(DataFrameOperator, DataFrameOperatorMixin):
|
|
25
|
+
_op_type_ = opcodes.MELT
|
|
26
|
+
|
|
27
|
+
id_vars = AnyField("id_vars", default=None)
|
|
28
|
+
value_vars = AnyField("value_vars", default=None)
|
|
29
|
+
var_name = StringField("var_name", default=None)
|
|
30
|
+
value_name = StringField("value_name", default=None)
|
|
31
|
+
col_level = AnyField("col_level", default=None)
|
|
32
|
+
|
|
33
|
+
def __call__(self, df):
|
|
34
|
+
empty_result = build_empty_df(df.dtypes).melt(
|
|
35
|
+
id_vars=self.id_vars,
|
|
36
|
+
value_vars=self.value_vars,
|
|
37
|
+
var_name=self.var_name,
|
|
38
|
+
value_name=self.value_name,
|
|
39
|
+
col_level=self.col_level,
|
|
40
|
+
)
|
|
41
|
+
self._output_types = [OutputType.dataframe]
|
|
42
|
+
return self.new_tileable(
|
|
43
|
+
[df],
|
|
44
|
+
shape=(np.nan, len(empty_result.columns)),
|
|
45
|
+
dtypes=empty_result.dtypes,
|
|
46
|
+
index_value=parse_index(pd.RangeIndex(-1), df.key, df.index_value.key),
|
|
47
|
+
columns_value=parse_index(empty_result.columns, store_data=True),
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def melt(
|
|
52
|
+
frame,
|
|
53
|
+
id_vars=None,
|
|
54
|
+
value_vars=None,
|
|
55
|
+
var_name=None,
|
|
56
|
+
value_name="value",
|
|
57
|
+
col_level=None,
|
|
58
|
+
):
|
|
59
|
+
"""
|
|
60
|
+
Unpivot a DataFrame from wide to long format, optionally leaving identifiers set.
|
|
61
|
+
|
|
62
|
+
This function is useful to massage a DataFrame into a format where one
|
|
63
|
+
or more columns are identifier variables (`id_vars`), while all other
|
|
64
|
+
columns, considered measured variables (`value_vars`), are "unpivoted" to
|
|
65
|
+
the row axis, leaving just two non-identifier columns, 'variable' and
|
|
66
|
+
'value'.
|
|
67
|
+
|
|
68
|
+
Parameters
|
|
69
|
+
----------
|
|
70
|
+
id_vars : tuple, list, or ndarray, optional
|
|
71
|
+
Column(s) to use as identifier variables.
|
|
72
|
+
value_vars : tuple, list, or ndarray, optional
|
|
73
|
+
Column(s) to unpivot. If not specified, uses all columns that
|
|
74
|
+
are not set as `id_vars`.
|
|
75
|
+
var_name : scalar
|
|
76
|
+
Name to use for the 'variable' column. If None it uses
|
|
77
|
+
``frame.columns.name`` or 'variable'.
|
|
78
|
+
value_name : scalar, default 'value'
|
|
79
|
+
Name to use for the 'value' column.
|
|
80
|
+
col_level : int or str, optional
|
|
81
|
+
If columns are a MultiIndex then use this level to melt.
|
|
82
|
+
|
|
83
|
+
Returns
|
|
84
|
+
-------
|
|
85
|
+
DataFrame
|
|
86
|
+
Unpivoted DataFrame.
|
|
87
|
+
|
|
88
|
+
See Also
|
|
89
|
+
--------
|
|
90
|
+
melt
|
|
91
|
+
pivot_table
|
|
92
|
+
DataFrame.pivot
|
|
93
|
+
Series.explode
|
|
94
|
+
|
|
95
|
+
Examples
|
|
96
|
+
--------
|
|
97
|
+
>>> import maxframe.dataframe as md
|
|
98
|
+
>>> df = md.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
|
|
99
|
+
... 'B': {0: 1, 1: 3, 2: 5},
|
|
100
|
+
... 'C': {0: 2, 1: 4, 2: 6}})
|
|
101
|
+
>>> df.execute()
|
|
102
|
+
A B C
|
|
103
|
+
0 a 1 2
|
|
104
|
+
1 b 3 4
|
|
105
|
+
2 c 5 6
|
|
106
|
+
|
|
107
|
+
>>> df.melt(id_vars=['A'], value_vars=['B']).execute()
|
|
108
|
+
A variable value
|
|
109
|
+
0 a B 1
|
|
110
|
+
1 b B 3
|
|
111
|
+
2 c B 5
|
|
112
|
+
|
|
113
|
+
>>> df.melt(id_vars=['A'], value_vars=['B', 'C']).execute()
|
|
114
|
+
A variable value
|
|
115
|
+
0 a B 1
|
|
116
|
+
1 b B 3
|
|
117
|
+
2 c B 5
|
|
118
|
+
3 a C 2
|
|
119
|
+
4 b C 4
|
|
120
|
+
5 c C 6
|
|
121
|
+
|
|
122
|
+
The names of 'variable' and 'value' columns can be customized:
|
|
123
|
+
|
|
124
|
+
>>> df.melt(id_vars=['A'], value_vars=['B'],
|
|
125
|
+
... var_name='myVarname', value_name='myValname').execute()
|
|
126
|
+
A myVarname myValname
|
|
127
|
+
0 a B 1
|
|
128
|
+
1 b B 3
|
|
129
|
+
2 c B 5
|
|
130
|
+
|
|
131
|
+
If you have multi-index columns:
|
|
132
|
+
|
|
133
|
+
>>> df = md.DataFrame({('A', 'D'): {0: 'a', 1: 'b', 2: 'c'},
|
|
134
|
+
... ('B', 'E'): {0: 1, 1: 3, 2: 5},
|
|
135
|
+
... ('C', 'F'): {0: 2, 1: 4, 2: 6}})
|
|
136
|
+
>>> df.execute()
|
|
137
|
+
A B C
|
|
138
|
+
D E F
|
|
139
|
+
0 a 1 2
|
|
140
|
+
1 b 3 4
|
|
141
|
+
2 c 5 6
|
|
142
|
+
|
|
143
|
+
>>> df.melt(col_level=0, id_vars=['A'], value_vars=['B']).execute()
|
|
144
|
+
A variable value
|
|
145
|
+
0 a B 1
|
|
146
|
+
1 b B 3
|
|
147
|
+
2 c B 5
|
|
148
|
+
|
|
149
|
+
>>> df.melt(id_vars=[('A', 'D')], value_vars=[('B', 'E')]).execute()
|
|
150
|
+
(A, D) variable_0 variable_1 value
|
|
151
|
+
0 a B E 1
|
|
152
|
+
1 b B E 3
|
|
153
|
+
2 c B E 5
|
|
154
|
+
"""
|
|
155
|
+
op = DataFrameMelt(
|
|
156
|
+
id_vars=id_vars,
|
|
157
|
+
value_vars=value_vars,
|
|
158
|
+
var_name=var_name,
|
|
159
|
+
value_name=value_name,
|
|
160
|
+
col_level=col_level,
|
|
161
|
+
)
|
|
162
|
+
return op(frame)
|
|
@@ -0,0 +1,248 @@
|
|
|
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
|
+
|
|
17
|
+
from ... import opcodes
|
|
18
|
+
from ...serialization.serializables import BoolField, Int64Field
|
|
19
|
+
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
20
|
+
from ..utils import parse_index
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class DataFrameMemoryUsage(DataFrameOperator, DataFrameOperatorMixin):
|
|
24
|
+
_op_type_ = opcodes.MEMORY_USAGE
|
|
25
|
+
|
|
26
|
+
# raw arguments of memory_usage method
|
|
27
|
+
index = BoolField("index", default=None)
|
|
28
|
+
deep = BoolField("deep", default=None)
|
|
29
|
+
|
|
30
|
+
# size of range index, when set, the value will be prepended to the result series
|
|
31
|
+
# if the input is a dataframe, or added to the result when the input is a series
|
|
32
|
+
range_index_size = Int64Field("range_index_size", default=None)
|
|
33
|
+
|
|
34
|
+
def _adapt_index(self, input_index, index=0):
|
|
35
|
+
"""
|
|
36
|
+
When ``index=True`` is passed, an extra column will be prepended to the result series
|
|
37
|
+
Thus we need to update the index of initial chunk for returned dataframe chunks
|
|
38
|
+
"""
|
|
39
|
+
if not self.index or index != 0:
|
|
40
|
+
return input_index
|
|
41
|
+
idx_data = input_index.to_pandas().insert(0, "Index")
|
|
42
|
+
return parse_index(idx_data, store_data=True)
|
|
43
|
+
|
|
44
|
+
def _adapt_nsplits(self, input_nsplit):
|
|
45
|
+
"""
|
|
46
|
+
When ``index=True`` is passed, the size of returned series is one element larger
|
|
47
|
+
than the number of columns, which affects ``nsplits``.
|
|
48
|
+
"""
|
|
49
|
+
if not self.index:
|
|
50
|
+
return (input_nsplit[-1],)
|
|
51
|
+
nsplits_list = list(input_nsplit[-1])
|
|
52
|
+
nsplits_list[0] += 1
|
|
53
|
+
return (tuple(nsplits_list),)
|
|
54
|
+
|
|
55
|
+
def __call__(self, df_or_series):
|
|
56
|
+
"""
|
|
57
|
+
Return output object of memory_usage() call
|
|
58
|
+
"""
|
|
59
|
+
if df_or_series.ndim == 1:
|
|
60
|
+
# the input data is a series, a Scalar will be returned
|
|
61
|
+
return self.new_scalar([df_or_series], dtype=np.dtype(np.int_))
|
|
62
|
+
else:
|
|
63
|
+
# the input data is a DataFrame, a Scalar will be returned
|
|
64
|
+
# calculate shape of returning series given ``op.index``
|
|
65
|
+
new_shape = (
|
|
66
|
+
(df_or_series.shape[-1] + 1,)
|
|
67
|
+
if self.index
|
|
68
|
+
else (df_or_series.shape[-1],)
|
|
69
|
+
)
|
|
70
|
+
return self.new_series(
|
|
71
|
+
[df_or_series],
|
|
72
|
+
index_value=self._adapt_index(df_or_series.columns_value),
|
|
73
|
+
shape=new_shape,
|
|
74
|
+
dtype=np.dtype(np.int_),
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def df_memory_usage(df, index=True, deep=False):
|
|
79
|
+
"""
|
|
80
|
+
Return the memory usage of each column in bytes.
|
|
81
|
+
|
|
82
|
+
The memory usage can optionally include the contribution of
|
|
83
|
+
the index and elements of `object` dtype.
|
|
84
|
+
|
|
85
|
+
This value is displayed in `DataFrame.info` by default. This can be
|
|
86
|
+
suppressed by setting ``pandas.options.display.memory_usage`` to False.
|
|
87
|
+
|
|
88
|
+
Parameters
|
|
89
|
+
----------
|
|
90
|
+
index : bool, default True
|
|
91
|
+
Specifies whether to include the memory usage of the DataFrame's
|
|
92
|
+
index in returned Series. If ``index=True``, the memory usage of
|
|
93
|
+
the index is the first item in the output.
|
|
94
|
+
deep : bool, default False
|
|
95
|
+
If True, introspect the data deeply by interrogating
|
|
96
|
+
`object` dtypes for system-level memory consumption, and include
|
|
97
|
+
it in the returned values.
|
|
98
|
+
|
|
99
|
+
Returns
|
|
100
|
+
-------
|
|
101
|
+
Series
|
|
102
|
+
A Series whose index is the original column names and whose values
|
|
103
|
+
is the memory usage of each column in bytes.
|
|
104
|
+
|
|
105
|
+
See Also
|
|
106
|
+
--------
|
|
107
|
+
numpy.ndarray.nbytes : Total bytes consumed by the elements of an
|
|
108
|
+
ndarray.
|
|
109
|
+
Series.memory_usage : Bytes consumed by a Series.
|
|
110
|
+
Categorical : Memory-efficient array for string values with
|
|
111
|
+
many repeated values.
|
|
112
|
+
DataFrame.info : Concise summary of a DataFrame.
|
|
113
|
+
|
|
114
|
+
Examples
|
|
115
|
+
--------
|
|
116
|
+
>>> import maxframe.tensor as mt
|
|
117
|
+
>>> import maxframe.dataframe as md
|
|
118
|
+
>>> dtypes = ['int64', 'float64', 'complex128', 'object', 'bool']
|
|
119
|
+
>>> data = dict([(t, mt.ones(shape=5000).astype(t))
|
|
120
|
+
... for t in dtypes])
|
|
121
|
+
>>> df = md.DataFrame(data)
|
|
122
|
+
>>> df.head().execute()
|
|
123
|
+
int64 float64 complex128 object bool
|
|
124
|
+
0 1 1.0 1.000000+0.000000j 1 True
|
|
125
|
+
1 1 1.0 1.000000+0.000000j 1 True
|
|
126
|
+
2 1 1.0 1.000000+0.000000j 1 True
|
|
127
|
+
3 1 1.0 1.000000+0.000000j 1 True
|
|
128
|
+
4 1 1.0 1.000000+0.000000j 1 True
|
|
129
|
+
|
|
130
|
+
>>> df.memory_usage().execute()
|
|
131
|
+
Index 128
|
|
132
|
+
int64 40000
|
|
133
|
+
float64 40000
|
|
134
|
+
complex128 80000
|
|
135
|
+
object 40000
|
|
136
|
+
bool 5000
|
|
137
|
+
dtype: int64
|
|
138
|
+
|
|
139
|
+
>>> df.memory_usage(index=False).execute()
|
|
140
|
+
int64 40000
|
|
141
|
+
float64 40000
|
|
142
|
+
complex128 80000
|
|
143
|
+
object 40000
|
|
144
|
+
bool 5000
|
|
145
|
+
dtype: int64
|
|
146
|
+
|
|
147
|
+
The memory footprint of `object` dtype columns is ignored by default:
|
|
148
|
+
|
|
149
|
+
>>> df.memory_usage(deep=True).execute()
|
|
150
|
+
Index 128
|
|
151
|
+
int64 40000
|
|
152
|
+
float64 40000
|
|
153
|
+
complex128 80000
|
|
154
|
+
object 160000
|
|
155
|
+
bool 5000
|
|
156
|
+
dtype: int64
|
|
157
|
+
|
|
158
|
+
Use a Categorical for efficient storage of an object-dtype column with
|
|
159
|
+
many repeated values.
|
|
160
|
+
|
|
161
|
+
>>> df['object'].astype('category').memory_usage(deep=True).execute()
|
|
162
|
+
5216
|
|
163
|
+
"""
|
|
164
|
+
op = DataFrameMemoryUsage(index=index, deep=deep)
|
|
165
|
+
return op(df)
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def series_memory_usage(series, index=True, deep=False):
|
|
169
|
+
"""
|
|
170
|
+
Return the memory usage of the Series.
|
|
171
|
+
|
|
172
|
+
The memory usage can optionally include the contribution of
|
|
173
|
+
the index and of elements of `object` dtype.
|
|
174
|
+
|
|
175
|
+
Parameters
|
|
176
|
+
----------
|
|
177
|
+
index : bool, default True
|
|
178
|
+
Specifies whether to include the memory usage of the Series index.
|
|
179
|
+
deep : bool, default False
|
|
180
|
+
If True, introspect the data deeply by interrogating
|
|
181
|
+
`object` dtypes for system-level memory consumption, and include
|
|
182
|
+
it in the returned value.
|
|
183
|
+
|
|
184
|
+
Returns
|
|
185
|
+
-------
|
|
186
|
+
int
|
|
187
|
+
Bytes of memory consumed.
|
|
188
|
+
|
|
189
|
+
See Also
|
|
190
|
+
--------
|
|
191
|
+
numpy.ndarray.nbytes : Total bytes consumed by the elements of the
|
|
192
|
+
array.
|
|
193
|
+
DataFrame.memory_usage : Bytes consumed by a DataFrame.
|
|
194
|
+
|
|
195
|
+
Examples
|
|
196
|
+
--------
|
|
197
|
+
>>> import maxframe.dataframe as md
|
|
198
|
+
>>> s = md.Series(range(3))
|
|
199
|
+
>>> s.memory_usage().execute()
|
|
200
|
+
152
|
|
201
|
+
|
|
202
|
+
Not including the index gives the size of the rest of the data, which
|
|
203
|
+
is necessarily smaller:
|
|
204
|
+
|
|
205
|
+
>>> s.memory_usage(index=False).execute()
|
|
206
|
+
24
|
|
207
|
+
|
|
208
|
+
The memory footprint of `object` values is ignored by default:
|
|
209
|
+
|
|
210
|
+
>>> s = md.Series(["a", "b"])
|
|
211
|
+
>>> s.values.execute()
|
|
212
|
+
array(['a', 'b'], dtype=object)
|
|
213
|
+
|
|
214
|
+
>>> s.memory_usage().execute()
|
|
215
|
+
144
|
|
216
|
+
|
|
217
|
+
>>> s.memory_usage(deep=True).execute()
|
|
218
|
+
260
|
|
219
|
+
"""
|
|
220
|
+
op = DataFrameMemoryUsage(index=index, deep=deep)
|
|
221
|
+
return op(series)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def index_memory_usage(index, deep=False):
|
|
225
|
+
"""
|
|
226
|
+
Memory usage of the values.
|
|
227
|
+
|
|
228
|
+
Parameters
|
|
229
|
+
----------
|
|
230
|
+
deep : bool
|
|
231
|
+
Introspect the data deeply, interrogate
|
|
232
|
+
`object` dtypes for system-level memory consumption.
|
|
233
|
+
|
|
234
|
+
Returns
|
|
235
|
+
-------
|
|
236
|
+
bytes used
|
|
237
|
+
|
|
238
|
+
See Also
|
|
239
|
+
--------
|
|
240
|
+
numpy.ndarray.nbytes
|
|
241
|
+
|
|
242
|
+
Notes
|
|
243
|
+
-----
|
|
244
|
+
Memory usage does not include memory consumed by elements that
|
|
245
|
+
are not components of the array if deep=False
|
|
246
|
+
"""
|
|
247
|
+
op = DataFrameMemoryUsage(index=False, deep=deep)
|
|
248
|
+
return op(index)
|