maxframe 0.1.0b5__cp310-cp310-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-310-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-310-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-310-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-310-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,210 @@
|
|
|
1
|
+
# Copyright 1999-2024 Alibaba Group Holding Ltd.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from ... import opcodes
|
|
16
|
+
from ...serialization.serializables import AnyField, Int8Field, Int64Field
|
|
17
|
+
from ..core import DATAFRAME_TYPE, OutputType
|
|
18
|
+
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
19
|
+
from ..utils import build_empty_df, build_empty_series, validate_axis
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class DataFrameDiff(DataFrameOperatorMixin, DataFrameOperator):
|
|
23
|
+
_op_type_ = opcodes.DIFF
|
|
24
|
+
|
|
25
|
+
periods = Int64Field("periods", default=None)
|
|
26
|
+
axis = Int8Field("axis", default=None)
|
|
27
|
+
|
|
28
|
+
bool_columns = AnyField("bool_columns", default=None)
|
|
29
|
+
|
|
30
|
+
def __call__(self, df_or_series):
|
|
31
|
+
params = df_or_series.params.copy()
|
|
32
|
+
|
|
33
|
+
if isinstance(df_or_series, DATAFRAME_TYPE):
|
|
34
|
+
self.output_types = [OutputType.dataframe]
|
|
35
|
+
mock_obj = build_empty_df(df_or_series.dtypes)
|
|
36
|
+
params["dtypes"] = mock_obj.diff().dtypes
|
|
37
|
+
else:
|
|
38
|
+
self.output_types = [OutputType.series]
|
|
39
|
+
mock_obj = build_empty_series(df_or_series.dtype, name=df_or_series.name)
|
|
40
|
+
params["dtype"] = mock_obj.diff().dtype
|
|
41
|
+
|
|
42
|
+
return self.new_tileable([df_or_series], **params)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def df_diff(df, periods=1, axis=0):
|
|
46
|
+
"""
|
|
47
|
+
First discrete difference of element.
|
|
48
|
+
Calculates the difference of a DataFrame element compared with another
|
|
49
|
+
element in the DataFrame (default is the element in the same column
|
|
50
|
+
of the previous row).
|
|
51
|
+
|
|
52
|
+
Parameters
|
|
53
|
+
----------
|
|
54
|
+
periods : int, default 1
|
|
55
|
+
Periods to shift for calculating difference, accepts negative
|
|
56
|
+
values.
|
|
57
|
+
axis : {0 or 'index', 1 or 'columns'}, default 0
|
|
58
|
+
Take difference over rows (0) or columns (1).
|
|
59
|
+
|
|
60
|
+
Returns
|
|
61
|
+
-------
|
|
62
|
+
DataFrame
|
|
63
|
+
|
|
64
|
+
See Also
|
|
65
|
+
--------
|
|
66
|
+
Series.diff : First discrete difference for a Series.
|
|
67
|
+
DataFrame.pct_change : Percent change over given number of periods.
|
|
68
|
+
DataFrame.shift : Shift index by desired number of periods with an
|
|
69
|
+
optional time freq.
|
|
70
|
+
|
|
71
|
+
Notes
|
|
72
|
+
-----
|
|
73
|
+
For boolean dtypes, this uses :meth:`operator.xor` rather than
|
|
74
|
+
:meth:`operator.sub`.
|
|
75
|
+
|
|
76
|
+
Examples
|
|
77
|
+
--------
|
|
78
|
+
Difference with previous row
|
|
79
|
+
|
|
80
|
+
>>> import maxframe.dataframe as md
|
|
81
|
+
>>> df = md.DataFrame({'a': [1, 2, 3, 4, 5, 6],
|
|
82
|
+
... 'b': [1, 1, 2, 3, 5, 8],
|
|
83
|
+
... 'c': [1, 4, 9, 16, 25, 36]})
|
|
84
|
+
>>> df.execute()
|
|
85
|
+
a b c
|
|
86
|
+
0 1 1 1
|
|
87
|
+
1 2 1 4
|
|
88
|
+
2 3 2 9
|
|
89
|
+
3 4 3 16
|
|
90
|
+
4 5 5 25
|
|
91
|
+
5 6 8 36
|
|
92
|
+
|
|
93
|
+
>>> df.diff().execute()
|
|
94
|
+
a b c
|
|
95
|
+
0 NaN NaN NaN
|
|
96
|
+
1 1.0 0.0 3.0
|
|
97
|
+
2 1.0 1.0 5.0
|
|
98
|
+
3 1.0 1.0 7.0
|
|
99
|
+
4 1.0 2.0 9.0
|
|
100
|
+
5 1.0 3.0 11.0
|
|
101
|
+
|
|
102
|
+
Difference with previous column
|
|
103
|
+
|
|
104
|
+
>>> df.diff(axis=1).execute()
|
|
105
|
+
a b c
|
|
106
|
+
0 NaN 0.0 0.0
|
|
107
|
+
1 NaN -1.0 3.0
|
|
108
|
+
2 NaN -1.0 7.0
|
|
109
|
+
3 NaN -1.0 13.0
|
|
110
|
+
4 NaN 0.0 20.0
|
|
111
|
+
5 NaN 2.0 28.0
|
|
112
|
+
|
|
113
|
+
Difference with 3rd previous row
|
|
114
|
+
|
|
115
|
+
>>> df.diff(periods=3).execute()
|
|
116
|
+
a b c
|
|
117
|
+
0 NaN NaN NaN
|
|
118
|
+
1 NaN NaN NaN
|
|
119
|
+
2 NaN NaN NaN
|
|
120
|
+
3 3.0 2.0 15.0
|
|
121
|
+
4 3.0 4.0 21.0
|
|
122
|
+
5 3.0 6.0 27.0
|
|
123
|
+
|
|
124
|
+
Difference with following row
|
|
125
|
+
|
|
126
|
+
>>> df.diff(periods=-1).execute()
|
|
127
|
+
a b c
|
|
128
|
+
0 -1.0 0.0 -3.0
|
|
129
|
+
1 -1.0 -1.0 -5.0
|
|
130
|
+
2 -1.0 -1.0 -7.0
|
|
131
|
+
3 -1.0 -2.0 -9.0
|
|
132
|
+
4 -1.0 -3.0 -11.0
|
|
133
|
+
5 NaN NaN NaN
|
|
134
|
+
"""
|
|
135
|
+
axis = validate_axis(axis, df)
|
|
136
|
+
op = DataFrameDiff(periods=periods, axis=axis)
|
|
137
|
+
return op(df)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def series_diff(series, periods=1):
|
|
141
|
+
"""
|
|
142
|
+
First discrete difference of element.
|
|
143
|
+
Calculates the difference of a Series element compared with another
|
|
144
|
+
element in the Series (default is element in previous row).
|
|
145
|
+
|
|
146
|
+
Parameters
|
|
147
|
+
----------
|
|
148
|
+
periods : int, default 1
|
|
149
|
+
Periods to shift for calculating difference, accepts negative
|
|
150
|
+
values.
|
|
151
|
+
|
|
152
|
+
Returns
|
|
153
|
+
-------
|
|
154
|
+
Series
|
|
155
|
+
First differences of the Series.
|
|
156
|
+
|
|
157
|
+
See Also
|
|
158
|
+
--------
|
|
159
|
+
Series.pct_change :
|
|
160
|
+
Percent change over given number of periods.
|
|
161
|
+
Series.shift :
|
|
162
|
+
Shift index by desired number of periods with an optional time freq.
|
|
163
|
+
DataFrame.diff :
|
|
164
|
+
First discrete difference of object.
|
|
165
|
+
|
|
166
|
+
Notes
|
|
167
|
+
-----
|
|
168
|
+
For boolean dtypes, this uses :meth:`operator.xor` rather than
|
|
169
|
+
:meth:`operator.sub`.
|
|
170
|
+
|
|
171
|
+
Examples
|
|
172
|
+
--------
|
|
173
|
+
|
|
174
|
+
Difference with previous row
|
|
175
|
+
|
|
176
|
+
>>> import maxframe.dataframe as md
|
|
177
|
+
>>> s = md.Series([1, 1, 2, 3, 5, 8])
|
|
178
|
+
>>> s.diff().execute()
|
|
179
|
+
0 NaN
|
|
180
|
+
1 0.0
|
|
181
|
+
2 1.0
|
|
182
|
+
3 1.0
|
|
183
|
+
4 2.0
|
|
184
|
+
5 3.0
|
|
185
|
+
dtype: float64
|
|
186
|
+
|
|
187
|
+
Difference with 3rd previous row
|
|
188
|
+
|
|
189
|
+
>>> s.diff(periods=3).execute()
|
|
190
|
+
0 NaN
|
|
191
|
+
1 NaN
|
|
192
|
+
2 NaN
|
|
193
|
+
3 2.0
|
|
194
|
+
4 4.0
|
|
195
|
+
5 6.0
|
|
196
|
+
dtype: float64
|
|
197
|
+
|
|
198
|
+
Difference with following row
|
|
199
|
+
|
|
200
|
+
>>> s.diff(periods=-1).execute()
|
|
201
|
+
0 0.0
|
|
202
|
+
1 -1.0
|
|
203
|
+
2 -1.0
|
|
204
|
+
3 -2.0
|
|
205
|
+
4 -3.0
|
|
206
|
+
5 NaN
|
|
207
|
+
dtype: float64
|
|
208
|
+
"""
|
|
209
|
+
op = DataFrameDiff(periods=periods)
|
|
210
|
+
return op(series)
|
|
@@ -0,0 +1,440 @@
|
|
|
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 warnings
|
|
16
|
+
|
|
17
|
+
import numpy as np
|
|
18
|
+
|
|
19
|
+
from maxframe import opcodes
|
|
20
|
+
from maxframe.core import Entity, OutputType
|
|
21
|
+
from maxframe.dataframe.core import DATAFRAME_TYPE, SERIES_TYPE, IndexValue
|
|
22
|
+
from maxframe.dataframe.operators import DataFrameOperator, DataFrameOperatorMixin
|
|
23
|
+
from maxframe.dataframe.utils import parse_index, validate_axis
|
|
24
|
+
from maxframe.serialization.serializables import AnyField, StringField
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class DataFrameDrop(DataFrameOperatorMixin, DataFrameOperator):
|
|
28
|
+
_op_type_ = opcodes.DATAFRAME_DROP
|
|
29
|
+
|
|
30
|
+
index = AnyField("index", default=None)
|
|
31
|
+
columns = AnyField("columns", default=None)
|
|
32
|
+
level = AnyField("level", default=None)
|
|
33
|
+
errors = StringField("errors", default="raise")
|
|
34
|
+
|
|
35
|
+
def _filter_dtypes(self, dtypes, ignore_errors=False):
|
|
36
|
+
if self.columns:
|
|
37
|
+
return dtypes.drop(
|
|
38
|
+
index=self.columns,
|
|
39
|
+
level=self.level,
|
|
40
|
+
errors="ignore" if ignore_errors else self.errors,
|
|
41
|
+
)
|
|
42
|
+
else:
|
|
43
|
+
return dtypes
|
|
44
|
+
|
|
45
|
+
def _set_inputs(self, inputs):
|
|
46
|
+
super()._set_inputs(inputs)
|
|
47
|
+
inputs_iter = iter(self._inputs[1:])
|
|
48
|
+
if len(self._inputs) > 1:
|
|
49
|
+
self.index = next(inputs_iter)
|
|
50
|
+
|
|
51
|
+
def __call__(self, df_or_series):
|
|
52
|
+
params = df_or_series.params.copy()
|
|
53
|
+
shape_list = list(df_or_series.shape)
|
|
54
|
+
|
|
55
|
+
if self.index is not None:
|
|
56
|
+
if isinstance(df_or_series.index_value.value, IndexValue.RangeIndex):
|
|
57
|
+
params["index_value"] = parse_index(
|
|
58
|
+
None, (df_or_series.key, df_or_series.index_value.key)
|
|
59
|
+
)
|
|
60
|
+
shape_list[0] = np.nan
|
|
61
|
+
|
|
62
|
+
if isinstance(df_or_series, DATAFRAME_TYPE):
|
|
63
|
+
new_dtypes = self._filter_dtypes(df_or_series.dtypes)
|
|
64
|
+
params["columns_value"] = parse_index(new_dtypes.index, store_data=True)
|
|
65
|
+
params["dtypes"] = new_dtypes
|
|
66
|
+
shape_list[1] = len(new_dtypes)
|
|
67
|
+
self.output_types = [OutputType.dataframe]
|
|
68
|
+
elif isinstance(df_or_series, SERIES_TYPE):
|
|
69
|
+
self.output_types = [OutputType.series]
|
|
70
|
+
else:
|
|
71
|
+
self.output_types = [OutputType.index]
|
|
72
|
+
|
|
73
|
+
params["shape"] = tuple(shape_list)
|
|
74
|
+
|
|
75
|
+
inputs = [df_or_series]
|
|
76
|
+
if isinstance(self.index, Entity):
|
|
77
|
+
inputs.append(self.index)
|
|
78
|
+
return self.new_tileable(inputs, **params)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _drop(
|
|
82
|
+
df_or_series,
|
|
83
|
+
labels=None,
|
|
84
|
+
axis=0,
|
|
85
|
+
index=None,
|
|
86
|
+
columns=None,
|
|
87
|
+
level=None,
|
|
88
|
+
inplace=False,
|
|
89
|
+
errors="raise",
|
|
90
|
+
):
|
|
91
|
+
axis = validate_axis(axis, df_or_series)
|
|
92
|
+
if labels is not None and (index is not None or columns is not None):
|
|
93
|
+
raise ValueError("Cannot specify both 'labels' and 'index'/'columns'")
|
|
94
|
+
if labels is not None:
|
|
95
|
+
if axis == 0:
|
|
96
|
+
index = labels
|
|
97
|
+
else:
|
|
98
|
+
columns = labels
|
|
99
|
+
|
|
100
|
+
if index is not None and errors == "raise":
|
|
101
|
+
warnings.warn("Errors will not raise for non-existing indices")
|
|
102
|
+
if isinstance(columns, Entity):
|
|
103
|
+
raise NotImplementedError("Columns cannot be MaxFrame objects")
|
|
104
|
+
|
|
105
|
+
op = DataFrameDrop(index=index, columns=columns, level=level, errors=errors)
|
|
106
|
+
df = op(df_or_series)
|
|
107
|
+
if inplace:
|
|
108
|
+
df_or_series.data = df.data
|
|
109
|
+
else:
|
|
110
|
+
return df
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
def df_drop(
|
|
114
|
+
df,
|
|
115
|
+
labels=None,
|
|
116
|
+
axis=0,
|
|
117
|
+
index=None,
|
|
118
|
+
columns=None,
|
|
119
|
+
level=None,
|
|
120
|
+
inplace=False,
|
|
121
|
+
errors="raise",
|
|
122
|
+
):
|
|
123
|
+
"""
|
|
124
|
+
Drop specified labels from rows or columns.
|
|
125
|
+
|
|
126
|
+
Remove rows or columns by specifying label names and corresponding
|
|
127
|
+
axis, or by specifying directly index or column names. When using a
|
|
128
|
+
multi-index, labels on different levels can be removed by specifying
|
|
129
|
+
the level.
|
|
130
|
+
|
|
131
|
+
Parameters
|
|
132
|
+
----------
|
|
133
|
+
labels : single label or list-like
|
|
134
|
+
Index or column labels to drop.
|
|
135
|
+
axis : {0 or 'index', 1 or 'columns'}, default 0
|
|
136
|
+
Whether to drop labels from the index (0 or 'index') or
|
|
137
|
+
columns (1 or 'columns').
|
|
138
|
+
index : single label or list-like
|
|
139
|
+
Alternative to specifying axis (``labels, axis=0``
|
|
140
|
+
is equivalent to ``index=labels``).
|
|
141
|
+
columns : single label or list-like
|
|
142
|
+
Alternative to specifying axis (``labels, axis=1``
|
|
143
|
+
is equivalent to ``columns=labels``).
|
|
144
|
+
level : int or level name, optional
|
|
145
|
+
For MultiIndex, level from which the labels will be removed.
|
|
146
|
+
inplace : bool, default False
|
|
147
|
+
If True, do operation inplace and return None.
|
|
148
|
+
errors : {'ignore', 'raise'}, default 'raise'
|
|
149
|
+
If 'ignore', suppress error and only existing labels are
|
|
150
|
+
dropped. Note that errors for missing indices will not raise.
|
|
151
|
+
|
|
152
|
+
Returns
|
|
153
|
+
-------
|
|
154
|
+
DataFrame
|
|
155
|
+
DataFrame without the removed index or column labels.
|
|
156
|
+
|
|
157
|
+
Raises
|
|
158
|
+
------
|
|
159
|
+
KeyError
|
|
160
|
+
If any of the labels is not found in the selected axis.
|
|
161
|
+
|
|
162
|
+
See Also
|
|
163
|
+
--------
|
|
164
|
+
DataFrame.loc : Label-location based indexer for selection by label.
|
|
165
|
+
DataFrame.dropna : Return DataFrame with labels on given axis omitted
|
|
166
|
+
where (all or any) data are missing.
|
|
167
|
+
DataFrame.drop_duplicates : Return DataFrame with duplicate rows
|
|
168
|
+
removed, optionally only considering certain columns.
|
|
169
|
+
Series.drop : Return Series with specified index labels removed.
|
|
170
|
+
|
|
171
|
+
Examples
|
|
172
|
+
--------
|
|
173
|
+
>>> import numpy as np
|
|
174
|
+
>>> import pandas as pd
|
|
175
|
+
>>> import maxframe.dataframe as md
|
|
176
|
+
>>> df = md.DataFrame(np.arange(12).reshape(3, 4),
|
|
177
|
+
... columns=['A', 'B', 'C', 'D'])
|
|
178
|
+
>>> df.execute()
|
|
179
|
+
A B C D
|
|
180
|
+
0 0 1 2 3
|
|
181
|
+
1 4 5 6 7
|
|
182
|
+
2 8 9 10 11
|
|
183
|
+
|
|
184
|
+
Drop columns
|
|
185
|
+
|
|
186
|
+
>>> df.drop(['B', 'C'], axis=1).execute()
|
|
187
|
+
A D
|
|
188
|
+
0 0 3
|
|
189
|
+
1 4 7
|
|
190
|
+
2 8 11
|
|
191
|
+
|
|
192
|
+
>>> df.drop(columns=['B', 'C']).execute()
|
|
193
|
+
A D
|
|
194
|
+
0 0 3
|
|
195
|
+
1 4 7
|
|
196
|
+
2 8 11
|
|
197
|
+
|
|
198
|
+
Drop a row by index
|
|
199
|
+
|
|
200
|
+
>>> df.drop([0, 1]).execute()
|
|
201
|
+
A B C D
|
|
202
|
+
2 8 9 10 11
|
|
203
|
+
|
|
204
|
+
Drop columns and/or rows of MultiIndex DataFrame
|
|
205
|
+
|
|
206
|
+
>>> midx = pd.MultiIndex(levels=[['lame', 'cow', 'falcon'],
|
|
207
|
+
... ['speed', 'weight', 'length']],
|
|
208
|
+
... codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
|
|
209
|
+
... [0, 1, 2, 0, 1, 2, 0, 1, 2]])
|
|
210
|
+
>>> df = md.DataFrame(index=midx, columns=['big', 'small'],
|
|
211
|
+
... data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
|
|
212
|
+
... [250, 150], [1.5, 0.8], [320, 250],
|
|
213
|
+
... [1, 0.8], [0.3, 0.2]])
|
|
214
|
+
>>> df.execute()
|
|
215
|
+
big small
|
|
216
|
+
lame speed 45.0 30.0
|
|
217
|
+
weight 200.0 100.0
|
|
218
|
+
length 1.5 1.0
|
|
219
|
+
cow speed 30.0 20.0
|
|
220
|
+
weight 250.0 150.0
|
|
221
|
+
length 1.5 0.8
|
|
222
|
+
falcon speed 320.0 250.0
|
|
223
|
+
weight 1.0 0.8
|
|
224
|
+
length 0.3 0.2
|
|
225
|
+
|
|
226
|
+
>>> df.drop(index='cow', columns='small').execute()
|
|
227
|
+
big
|
|
228
|
+
lame speed 45.0
|
|
229
|
+
weight 200.0
|
|
230
|
+
length 1.5
|
|
231
|
+
falcon speed 320.0
|
|
232
|
+
weight 1.0
|
|
233
|
+
length 0.3
|
|
234
|
+
|
|
235
|
+
>>> df.drop(index='length', level=1).execute()
|
|
236
|
+
big small
|
|
237
|
+
lame speed 45.0 30.0
|
|
238
|
+
weight 200.0 100.0
|
|
239
|
+
cow speed 30.0 20.0
|
|
240
|
+
weight 250.0 150.0
|
|
241
|
+
falcon speed 320.0 250.0
|
|
242
|
+
weight 1.0 0.8
|
|
243
|
+
"""
|
|
244
|
+
return _drop(
|
|
245
|
+
df,
|
|
246
|
+
labels=labels,
|
|
247
|
+
axis=axis,
|
|
248
|
+
index=index,
|
|
249
|
+
columns=columns,
|
|
250
|
+
level=level,
|
|
251
|
+
inplace=inplace,
|
|
252
|
+
errors=errors,
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def df_pop(df, item):
|
|
257
|
+
"""
|
|
258
|
+
Return item and drop from frame. Raise KeyError if not found.
|
|
259
|
+
|
|
260
|
+
Parameters
|
|
261
|
+
----------
|
|
262
|
+
item : str
|
|
263
|
+
Label of column to be popped.
|
|
264
|
+
|
|
265
|
+
Returns
|
|
266
|
+
-------
|
|
267
|
+
Series
|
|
268
|
+
|
|
269
|
+
Examples
|
|
270
|
+
--------
|
|
271
|
+
>>> import numpy as np
|
|
272
|
+
>>> import maxframe.dataframe as md
|
|
273
|
+
>>> df = md.DataFrame([('falcon', 'bird', 389.0),
|
|
274
|
+
... ('parrot', 'bird', 24.0),
|
|
275
|
+
... ('lion', 'mammal', 80.5),
|
|
276
|
+
... ('monkey', 'mammal', np.nan)],
|
|
277
|
+
... columns=('name', 'class', 'max_speed'))
|
|
278
|
+
>>> df.execute()
|
|
279
|
+
name class max_speed
|
|
280
|
+
0 falcon bird 389.0
|
|
281
|
+
1 parrot bird 24.0
|
|
282
|
+
2 lion mammal 80.5
|
|
283
|
+
3 monkey mammal NaN
|
|
284
|
+
|
|
285
|
+
>>> df.pop('class').execute()
|
|
286
|
+
0 bird
|
|
287
|
+
1 bird
|
|
288
|
+
2 mammal
|
|
289
|
+
3 mammal
|
|
290
|
+
Name: class, dtype: object
|
|
291
|
+
|
|
292
|
+
>>> df.execute()
|
|
293
|
+
name max_speed
|
|
294
|
+
0 falcon 389.0
|
|
295
|
+
1 parrot 24.0
|
|
296
|
+
2 lion 80.5
|
|
297
|
+
3 monkey NaN
|
|
298
|
+
"""
|
|
299
|
+
series = df.data[item]
|
|
300
|
+
df_drop(df, item, axis=1, inplace=True)
|
|
301
|
+
return series
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
def series_drop(
|
|
305
|
+
series,
|
|
306
|
+
labels=None,
|
|
307
|
+
axis=0,
|
|
308
|
+
index=None,
|
|
309
|
+
columns=None,
|
|
310
|
+
level=None,
|
|
311
|
+
inplace=False,
|
|
312
|
+
errors="raise",
|
|
313
|
+
):
|
|
314
|
+
"""
|
|
315
|
+
Return Series with specified index labels removed.
|
|
316
|
+
|
|
317
|
+
Remove elements of a Series based on specifying the index labels.
|
|
318
|
+
When using a multi-index, labels on different levels can be removed
|
|
319
|
+
by specifying the level.
|
|
320
|
+
|
|
321
|
+
Parameters
|
|
322
|
+
----------
|
|
323
|
+
labels : single label or list-like
|
|
324
|
+
Index labels to drop.
|
|
325
|
+
axis : 0, default 0
|
|
326
|
+
Redundant for application on Series.
|
|
327
|
+
index : single label or list-like
|
|
328
|
+
Redundant for application on Series, but 'index' can be used instead
|
|
329
|
+
of 'labels'.
|
|
330
|
+
|
|
331
|
+
.. versionadded:: 0.21.0
|
|
332
|
+
columns : single label or list-like
|
|
333
|
+
No change is made to the Series; use 'index' or 'labels' instead.
|
|
334
|
+
|
|
335
|
+
.. versionadded:: 0.21.0
|
|
336
|
+
level : int or level name, optional
|
|
337
|
+
For MultiIndex, level for which the labels will be removed.
|
|
338
|
+
inplace : bool, default False
|
|
339
|
+
If True, do operation inplace and return None.
|
|
340
|
+
errors : {'ignore', 'raise'}, default 'raise'
|
|
341
|
+
Note that this argument is kept only for compatibility, and errors
|
|
342
|
+
will not raise even if ``errors=='raise'``.
|
|
343
|
+
|
|
344
|
+
Returns
|
|
345
|
+
-------
|
|
346
|
+
Series
|
|
347
|
+
Series with specified index labels removed.
|
|
348
|
+
|
|
349
|
+
Raises
|
|
350
|
+
------
|
|
351
|
+
KeyError
|
|
352
|
+
If none of the labels are found in the index.
|
|
353
|
+
|
|
354
|
+
See Also
|
|
355
|
+
--------
|
|
356
|
+
Series.reindex : Return only specified index labels of Series.
|
|
357
|
+
Series.dropna : Return series without null values.
|
|
358
|
+
Series.drop_duplicates : Return Series with duplicate values removed.
|
|
359
|
+
DataFrame.drop : Drop specified labels from rows or columns.
|
|
360
|
+
|
|
361
|
+
Examples
|
|
362
|
+
--------
|
|
363
|
+
>>> import numpy as np
|
|
364
|
+
>>> import pandas as pd
|
|
365
|
+
>>> import maxframe.dataframe as md
|
|
366
|
+
>>> s = md.Series(data=np.arange(3), index=['A', 'B', 'C'])
|
|
367
|
+
>>> s.execute()
|
|
368
|
+
A 0
|
|
369
|
+
B 1
|
|
370
|
+
C 2
|
|
371
|
+
dtype: int64
|
|
372
|
+
|
|
373
|
+
Drop labels B en C
|
|
374
|
+
|
|
375
|
+
>>> s.drop(labels=['B', 'C']).execute()
|
|
376
|
+
A 0
|
|
377
|
+
dtype: int64
|
|
378
|
+
|
|
379
|
+
Drop 2nd level label in MultiIndex Series
|
|
380
|
+
|
|
381
|
+
>>> midx = pd.MultiIndex(levels=[['lame', 'cow', 'falcon'],
|
|
382
|
+
... ['speed', 'weight', 'length']],
|
|
383
|
+
... codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
|
|
384
|
+
... [0, 1, 2, 0, 1, 2, 0, 1, 2]])
|
|
385
|
+
>>> s = md.Series([45, 200, 1.2, 30, 250, 1.5, 320, 1, 0.3],
|
|
386
|
+
... index=midx)
|
|
387
|
+
>>> s.execute()
|
|
388
|
+
lame speed 45.0
|
|
389
|
+
weight 200.0
|
|
390
|
+
length 1.2
|
|
391
|
+
cow speed 30.0
|
|
392
|
+
weight 250.0
|
|
393
|
+
length 1.5
|
|
394
|
+
falcon speed 320.0
|
|
395
|
+
weight 1.0
|
|
396
|
+
length 0.3
|
|
397
|
+
dtype: float64
|
|
398
|
+
|
|
399
|
+
>>> s.drop(labels='weight', level=1).execute()
|
|
400
|
+
lame speed 45.0
|
|
401
|
+
length 1.2
|
|
402
|
+
cow speed 30.0
|
|
403
|
+
length 1.5
|
|
404
|
+
falcon speed 320.0
|
|
405
|
+
length 0.3
|
|
406
|
+
dtype: float64
|
|
407
|
+
"""
|
|
408
|
+
return _drop(
|
|
409
|
+
series,
|
|
410
|
+
labels=labels,
|
|
411
|
+
axis=axis,
|
|
412
|
+
index=index,
|
|
413
|
+
columns=columns,
|
|
414
|
+
level=level,
|
|
415
|
+
inplace=inplace,
|
|
416
|
+
errors=errors,
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
def index_drop(index, labels, errors="raise"):
|
|
421
|
+
"""
|
|
422
|
+
Make new Index with passed list of labels deleted.
|
|
423
|
+
|
|
424
|
+
Parameters
|
|
425
|
+
----------
|
|
426
|
+
labels : array-like
|
|
427
|
+
errors : {'ignore', 'raise'}, default 'raise'
|
|
428
|
+
Note that this argument is kept only for compatibility, and errors
|
|
429
|
+
will not raise even if ``errors=='raise'``.
|
|
430
|
+
|
|
431
|
+
Returns
|
|
432
|
+
-------
|
|
433
|
+
dropped : Index
|
|
434
|
+
|
|
435
|
+
Raises
|
|
436
|
+
------
|
|
437
|
+
KeyError
|
|
438
|
+
If not all of the labels are found in the selected axis
|
|
439
|
+
"""
|
|
440
|
+
return _drop(index, labels=labels, errors=errors)
|