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,526 @@
|
|
|
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
|
+
try:
|
|
18
|
+
import scipy.sparse as sps
|
|
19
|
+
except ImportError: # pragma: no cover
|
|
20
|
+
sps = None
|
|
21
|
+
|
|
22
|
+
from ... import opcodes
|
|
23
|
+
from ...core import ENTITY_TYPE
|
|
24
|
+
from ...serialization.serializables import (
|
|
25
|
+
AnyField,
|
|
26
|
+
BoolField,
|
|
27
|
+
Int64Field,
|
|
28
|
+
KeyField,
|
|
29
|
+
StringField,
|
|
30
|
+
)
|
|
31
|
+
from ...tensor import tensor as astensor
|
|
32
|
+
from ...utils import lazy_import, pd_release_version
|
|
33
|
+
from ..core import INDEX_TYPE
|
|
34
|
+
from ..core import Index as DataFrameIndexType
|
|
35
|
+
from ..initializer import Index as asindex
|
|
36
|
+
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
37
|
+
from ..utils import parse_index, validate_axis_style_args
|
|
38
|
+
|
|
39
|
+
cudf = lazy_import("cudf")
|
|
40
|
+
|
|
41
|
+
# under pandas<1.1, SparseArray ignores zeros on creation
|
|
42
|
+
_pd_sparse_miss_zero = pd_release_version[:2] < (1, 1)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
|
|
46
|
+
_op_type_ = opcodes.REINDEX
|
|
47
|
+
|
|
48
|
+
_input = KeyField("input")
|
|
49
|
+
index = AnyField("index", default=None)
|
|
50
|
+
index_freq = AnyField("index_freq", default=None)
|
|
51
|
+
columns = AnyField("columns", default=None)
|
|
52
|
+
method = StringField("method", default=None)
|
|
53
|
+
level = AnyField("level", default=None)
|
|
54
|
+
fill_value = AnyField("fill_value", default=None)
|
|
55
|
+
limit = Int64Field("limit", default=None)
|
|
56
|
+
enable_sparse = BoolField("enable_sparse", default=None)
|
|
57
|
+
|
|
58
|
+
@property
|
|
59
|
+
def input(self):
|
|
60
|
+
return self._input
|
|
61
|
+
|
|
62
|
+
@property
|
|
63
|
+
def _indexes(self):
|
|
64
|
+
# used for index_lib
|
|
65
|
+
indexes = []
|
|
66
|
+
names = ("index", "columns")
|
|
67
|
+
for ax in range(self.input.ndim):
|
|
68
|
+
index = names[ax]
|
|
69
|
+
val = getattr(self, index)
|
|
70
|
+
if val is not None:
|
|
71
|
+
indexes.append(val)
|
|
72
|
+
else:
|
|
73
|
+
indexes.append(slice(None))
|
|
74
|
+
return indexes
|
|
75
|
+
|
|
76
|
+
@_indexes.setter
|
|
77
|
+
def _indexes(self, new_indexes):
|
|
78
|
+
for index_field, new_index in zip(["index", "columns"], new_indexes):
|
|
79
|
+
setattr(self, index_field, new_index)
|
|
80
|
+
|
|
81
|
+
@property
|
|
82
|
+
def indexes(self):
|
|
83
|
+
return self._indexes
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def can_index_miss(self):
|
|
87
|
+
return True
|
|
88
|
+
|
|
89
|
+
def _set_inputs(self, inputs):
|
|
90
|
+
super()._set_inputs(inputs)
|
|
91
|
+
inputs_iter = iter(self._inputs)
|
|
92
|
+
self._input = next(inputs_iter)
|
|
93
|
+
if self.index is not None and isinstance(self.index, ENTITY_TYPE):
|
|
94
|
+
self.index = next(inputs_iter)
|
|
95
|
+
if self.fill_value is not None and isinstance(self.fill_value, ENTITY_TYPE):
|
|
96
|
+
self.fill_value = next(inputs_iter)
|
|
97
|
+
|
|
98
|
+
def __call__(self, df_or_series):
|
|
99
|
+
inputs = [df_or_series]
|
|
100
|
+
shape = list(df_or_series.shape)
|
|
101
|
+
index_value = df_or_series.index_value
|
|
102
|
+
columns_value = dtypes = None
|
|
103
|
+
if df_or_series.ndim == 2:
|
|
104
|
+
columns_value = df_or_series.columns_value
|
|
105
|
+
dtypes = df_or_series.dtypes
|
|
106
|
+
|
|
107
|
+
if self.index is not None:
|
|
108
|
+
shape[0] = self.index.shape[0]
|
|
109
|
+
index_value = asindex(self.index).index_value
|
|
110
|
+
self.index = astensor(self.index)
|
|
111
|
+
if isinstance(self.index, ENTITY_TYPE):
|
|
112
|
+
inputs.append(self.index)
|
|
113
|
+
if self.columns is not None:
|
|
114
|
+
shape[1] = self.columns.shape[0]
|
|
115
|
+
dtypes = df_or_series.dtypes.reindex(index=self.columns).fillna(
|
|
116
|
+
np.dtype(np.float64)
|
|
117
|
+
)
|
|
118
|
+
columns_value = parse_index(dtypes.index, store_data=True)
|
|
119
|
+
if self.fill_value is not None and isinstance(self.fill_value, ENTITY_TYPE):
|
|
120
|
+
inputs.append(self.fill_value)
|
|
121
|
+
|
|
122
|
+
if df_or_series.ndim == 1:
|
|
123
|
+
return self.new_series(
|
|
124
|
+
inputs,
|
|
125
|
+
shape=tuple(shape),
|
|
126
|
+
dtype=df_or_series.dtype,
|
|
127
|
+
index_value=index_value,
|
|
128
|
+
name=df_or_series.name,
|
|
129
|
+
)
|
|
130
|
+
else:
|
|
131
|
+
return self.new_dataframe(
|
|
132
|
+
inputs,
|
|
133
|
+
shape=tuple(shape),
|
|
134
|
+
dtypes=dtypes,
|
|
135
|
+
index_value=index_value,
|
|
136
|
+
columns_value=columns_value,
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
def reindex(df_or_series, *args, **kwargs):
|
|
141
|
+
"""
|
|
142
|
+
Conform Series/DataFrame to new index with optional filling logic.
|
|
143
|
+
|
|
144
|
+
Places NA/NaN in locations having no value in the previous index. A new object
|
|
145
|
+
is produced unless the new index is equivalent to the current one and
|
|
146
|
+
``copy=False``.
|
|
147
|
+
|
|
148
|
+
Parameters
|
|
149
|
+
----------
|
|
150
|
+
labels : array-like, optional
|
|
151
|
+
New labels / index to conform the axis specified by 'axis' to.
|
|
152
|
+
index, columns : array-like, optional
|
|
153
|
+
New labels / index to conform to, should be specified using
|
|
154
|
+
keywords. Preferably an Index object to avoid duplicating data.
|
|
155
|
+
axis : int or str, optional
|
|
156
|
+
Axis to target. Can be either the axis name ('index', 'columns')
|
|
157
|
+
or number (0, 1).
|
|
158
|
+
method : {None, 'backfill'/'bfill', 'pad'/'ffill', 'nearest'}
|
|
159
|
+
Method to use for filling holes in reindexed DataFrame.
|
|
160
|
+
Please note: this is only applicable to DataFrames/Series with a
|
|
161
|
+
monotonically increasing/decreasing index.
|
|
162
|
+
|
|
163
|
+
* None (default): don't fill gaps
|
|
164
|
+
* pad / ffill: Propagate last valid observation forward to next
|
|
165
|
+
valid.
|
|
166
|
+
* backfill / bfill: Use next valid observation to fill gap.
|
|
167
|
+
* nearest: Use nearest valid observations to fill gap.
|
|
168
|
+
|
|
169
|
+
copy : bool, default True
|
|
170
|
+
Return a new object, even if the passed indexes are the same.
|
|
171
|
+
level : int or name
|
|
172
|
+
Broadcast across a level, matching Index values on the
|
|
173
|
+
passed MultiIndex level.
|
|
174
|
+
fill_value : scalar, default np.NaN
|
|
175
|
+
Value to use for missing values. Defaults to NaN, but can be any
|
|
176
|
+
"compatible" value.
|
|
177
|
+
limit : int, default None
|
|
178
|
+
Maximum number of consecutive elements to forward or backward fill.
|
|
179
|
+
tolerance : optional
|
|
180
|
+
Maximum distance between original and new labels for inexact
|
|
181
|
+
matches. The values of the index at the matching locations most
|
|
182
|
+
satisfy the equation ``abs(index[indexer] - target) <= tolerance``.
|
|
183
|
+
|
|
184
|
+
Tolerance may be a scalar value, which applies the same tolerance
|
|
185
|
+
to all values, or list-like, which applies variable tolerance per
|
|
186
|
+
element. List-like includes list, tuple, array, Series, and must be
|
|
187
|
+
the same size as the index and its dtype must exactly match the
|
|
188
|
+
index's type.
|
|
189
|
+
|
|
190
|
+
Returns
|
|
191
|
+
-------
|
|
192
|
+
Series/DataFrame with changed index.
|
|
193
|
+
|
|
194
|
+
See Also
|
|
195
|
+
--------
|
|
196
|
+
DataFrame.set_index : Set row labels.
|
|
197
|
+
DataFrame.reset_index : Remove row labels or move them to new columns.
|
|
198
|
+
DataFrame.reindex_like : Change to same indices as other DataFrame.
|
|
199
|
+
|
|
200
|
+
Examples
|
|
201
|
+
--------
|
|
202
|
+
|
|
203
|
+
``DataFrame.reindex`` supports two calling conventions
|
|
204
|
+
|
|
205
|
+
* ``(index=index_labels, columns=column_labels, ...)``
|
|
206
|
+
* ``(labels, axis={'index', 'columns'}, ...)``
|
|
207
|
+
|
|
208
|
+
We *highly* recommend using keyword arguments to clarify your
|
|
209
|
+
intent.
|
|
210
|
+
|
|
211
|
+
Create a dataframe with some fictional data.
|
|
212
|
+
|
|
213
|
+
>>> import maxframe.dataframe as md
|
|
214
|
+
>>> index = ['Firefox', 'Chrome', 'Safari', 'IE10', 'Konqueror']
|
|
215
|
+
>>> df = md.DataFrame({'http_status': [200, 200, 404, 404, 301],
|
|
216
|
+
... 'response_time': [0.04, 0.02, 0.07, 0.08, 1.0]},
|
|
217
|
+
... index=index)
|
|
218
|
+
>>> df.execute()
|
|
219
|
+
http_status response_time
|
|
220
|
+
Firefox 200 0.04
|
|
221
|
+
Chrome 200 0.02
|
|
222
|
+
Safari 404 0.07
|
|
223
|
+
IE10 404 0.08
|
|
224
|
+
Konqueror 301 1.00
|
|
225
|
+
|
|
226
|
+
Create a new index and reindex the dataframe. By default
|
|
227
|
+
values in the new index that do not have corresponding
|
|
228
|
+
records in the dataframe are assigned ``NaN``.
|
|
229
|
+
|
|
230
|
+
>>> new_index = ['Safari', 'Iceweasel', 'Comodo Dragon', 'IE10',
|
|
231
|
+
... 'Chrome']
|
|
232
|
+
>>> df.reindex(new_index).execute()
|
|
233
|
+
http_status response_time
|
|
234
|
+
Safari 404.0 0.07
|
|
235
|
+
Iceweasel NaN NaN
|
|
236
|
+
Comodo Dragon NaN NaN
|
|
237
|
+
IE10 404.0 0.08
|
|
238
|
+
Chrome 200.0 0.02
|
|
239
|
+
|
|
240
|
+
We can fill in the missing values by passing a value to
|
|
241
|
+
the keyword ``fill_value``. Because the index is not monotonically
|
|
242
|
+
increasing or decreasing, we cannot use arguments to the keyword
|
|
243
|
+
``method`` to fill the ``NaN`` values.
|
|
244
|
+
|
|
245
|
+
>>> df.reindex(new_index, fill_value=0).execute()
|
|
246
|
+
http_status response_time
|
|
247
|
+
Safari 404 0.07
|
|
248
|
+
Iceweasel 0 0.00
|
|
249
|
+
Comodo Dragon 0 0.00
|
|
250
|
+
IE10 404 0.08
|
|
251
|
+
Chrome 200 0.02
|
|
252
|
+
|
|
253
|
+
>>> df.reindex(new_index, fill_value='missing').execute()
|
|
254
|
+
http_status response_time
|
|
255
|
+
Safari 404 0.07
|
|
256
|
+
Iceweasel missing missing
|
|
257
|
+
Comodo Dragon missing missing
|
|
258
|
+
IE10 404 0.08
|
|
259
|
+
Chrome 200 0.02
|
|
260
|
+
|
|
261
|
+
We can also reindex the columns.
|
|
262
|
+
|
|
263
|
+
>>> df.reindex(columns=['http_status', 'user_agent']).execute()
|
|
264
|
+
http_status user_agent
|
|
265
|
+
Firefox 200 NaN
|
|
266
|
+
Chrome 200 NaN
|
|
267
|
+
Safari 404 NaN
|
|
268
|
+
IE10 404 NaN
|
|
269
|
+
Konqueror 301 NaN
|
|
270
|
+
|
|
271
|
+
Or we can use "axis-style" keyword arguments
|
|
272
|
+
|
|
273
|
+
>>> df.reindex(['http_status', 'user_agent'], axis="columns").execute()
|
|
274
|
+
http_status user_agent
|
|
275
|
+
Firefox 200 NaN
|
|
276
|
+
Chrome 200 NaN
|
|
277
|
+
Safari 404 NaN
|
|
278
|
+
IE10 404 NaN
|
|
279
|
+
Konqueror 301 NaN
|
|
280
|
+
|
|
281
|
+
To further illustrate the filling functionality in
|
|
282
|
+
``reindex``, we will create a dataframe with a
|
|
283
|
+
monotonically increasing index (for example, a sequence
|
|
284
|
+
of dates).
|
|
285
|
+
|
|
286
|
+
>>> date_index = md.date_range('1/1/2010', periods=6, freq='D')
|
|
287
|
+
>>> df2 = md.DataFrame({"prices": [100, 101, np.nan, 100, 89, 88]},
|
|
288
|
+
... index=date_index)
|
|
289
|
+
>>> df2.execute()
|
|
290
|
+
prices
|
|
291
|
+
2010-01-01 100.0
|
|
292
|
+
2010-01-02 101.0
|
|
293
|
+
2010-01-03 NaN
|
|
294
|
+
2010-01-04 100.0
|
|
295
|
+
2010-01-05 89.0
|
|
296
|
+
2010-01-06 88.0
|
|
297
|
+
|
|
298
|
+
Suppose we decide to expand the dataframe to cover a wider
|
|
299
|
+
date range.
|
|
300
|
+
|
|
301
|
+
>>> date_index2 = md.date_range('12/29/2009', periods=10, freq='D')
|
|
302
|
+
>>> df2.reindex(date_index2).execute()
|
|
303
|
+
prices
|
|
304
|
+
2009-12-29 NaN
|
|
305
|
+
2009-12-30 NaN
|
|
306
|
+
2009-12-31 NaN
|
|
307
|
+
2010-01-01 100.0
|
|
308
|
+
2010-01-02 101.0
|
|
309
|
+
2010-01-03 NaN
|
|
310
|
+
2010-01-04 100.0
|
|
311
|
+
2010-01-05 89.0
|
|
312
|
+
2010-01-06 88.0
|
|
313
|
+
2010-01-07 NaN
|
|
314
|
+
|
|
315
|
+
The index entries that did not have a value in the original data frame
|
|
316
|
+
(for example, '2009-12-29') are by default filled with ``NaN``.
|
|
317
|
+
If desired, we can fill in the missing values using one of several
|
|
318
|
+
options.
|
|
319
|
+
|
|
320
|
+
For example, to back-propagate the last valid value to fill the ``NaN``
|
|
321
|
+
values, pass ``bfill`` as an argument to the ``method`` keyword.
|
|
322
|
+
|
|
323
|
+
>>> df2.reindex(date_index2, method='bfill').execute()
|
|
324
|
+
prices
|
|
325
|
+
2009-12-29 100.0
|
|
326
|
+
2009-12-30 100.0
|
|
327
|
+
2009-12-31 100.0
|
|
328
|
+
2010-01-01 100.0
|
|
329
|
+
2010-01-02 101.0
|
|
330
|
+
2010-01-03 NaN
|
|
331
|
+
2010-01-04 100.0
|
|
332
|
+
2010-01-05 89.0
|
|
333
|
+
2010-01-06 88.0
|
|
334
|
+
2010-01-07 NaN
|
|
335
|
+
|
|
336
|
+
Please note that the ``NaN`` value present in the original dataframe
|
|
337
|
+
(at index value 2010-01-03) will not be filled by any of the
|
|
338
|
+
value propagation schemes. This is because filling while reindexing
|
|
339
|
+
does not look at dataframe values, but only compares the original and
|
|
340
|
+
desired indexes. If you do want to fill in the ``NaN`` values present
|
|
341
|
+
in the original dataframe, use the ``fillna()`` method.
|
|
342
|
+
|
|
343
|
+
See the :ref:`user guide <basics.reindexing>` for more.
|
|
344
|
+
"""
|
|
345
|
+
axes = validate_axis_style_args(df_or_series, args, kwargs, "labels", "reindex")
|
|
346
|
+
# Pop these, since the values are in `kwargs` under different names
|
|
347
|
+
kwargs.pop("index", None)
|
|
348
|
+
if df_or_series.ndim > 1:
|
|
349
|
+
kwargs.pop("columns", None)
|
|
350
|
+
kwargs.pop("axis", None)
|
|
351
|
+
kwargs.pop("labels", None)
|
|
352
|
+
method = kwargs.pop("method", None)
|
|
353
|
+
level = kwargs.pop("level", None)
|
|
354
|
+
copy = kwargs.pop("copy", True)
|
|
355
|
+
limit = kwargs.pop("limit", None)
|
|
356
|
+
tolerance = kwargs.pop("tolerance", None)
|
|
357
|
+
fill_value = kwargs.pop("fill_value", None)
|
|
358
|
+
enable_sparse = kwargs.pop("enable_sparse", None)
|
|
359
|
+
|
|
360
|
+
if kwargs:
|
|
361
|
+
raise TypeError(
|
|
362
|
+
"reindex() got an unexpected keyword "
|
|
363
|
+
f'argument "{list(kwargs.keys())[0]}"'
|
|
364
|
+
)
|
|
365
|
+
|
|
366
|
+
if tolerance is not None: # pragma: no cover
|
|
367
|
+
raise NotImplementedError("`tolerance` is not supported yet")
|
|
368
|
+
|
|
369
|
+
if method == "nearest": # pragma: no cover
|
|
370
|
+
raise NotImplementedError("method=nearest is not supported yet")
|
|
371
|
+
|
|
372
|
+
index = axes.get("index")
|
|
373
|
+
index_freq = None
|
|
374
|
+
if isinstance(index, ENTITY_TYPE):
|
|
375
|
+
if isinstance(index, DataFrameIndexType):
|
|
376
|
+
index_freq = getattr(index.index_value.value, "freq", None)
|
|
377
|
+
if not isinstance(index, INDEX_TYPE):
|
|
378
|
+
index = astensor(index)
|
|
379
|
+
elif index is not None:
|
|
380
|
+
index = np.asarray(index)
|
|
381
|
+
index_freq = getattr(index, "freq", None)
|
|
382
|
+
|
|
383
|
+
columns = axes.get("columns")
|
|
384
|
+
if isinstance(columns, ENTITY_TYPE): # pragma: no cover
|
|
385
|
+
try:
|
|
386
|
+
columns = columns.fetch()
|
|
387
|
+
except ValueError:
|
|
388
|
+
raise NotImplementedError(
|
|
389
|
+
"`columns` need to be executed first if it's a MaxFrame object"
|
|
390
|
+
)
|
|
391
|
+
elif columns is not None:
|
|
392
|
+
columns = np.asarray(columns)
|
|
393
|
+
|
|
394
|
+
if isinstance(fill_value, ENTITY_TYPE) and getattr(fill_value, "ndim", 0) != 0:
|
|
395
|
+
raise ValueError("fill_value must be a scalar")
|
|
396
|
+
|
|
397
|
+
op = DataFrameReindex(
|
|
398
|
+
index=index,
|
|
399
|
+
index_freq=index_freq,
|
|
400
|
+
columns=columns,
|
|
401
|
+
method=method,
|
|
402
|
+
level=level,
|
|
403
|
+
fill_value=fill_value,
|
|
404
|
+
limit=limit,
|
|
405
|
+
enable_sparse=enable_sparse,
|
|
406
|
+
)
|
|
407
|
+
ret = op(df_or_series)
|
|
408
|
+
|
|
409
|
+
if copy:
|
|
410
|
+
return ret.copy()
|
|
411
|
+
return ret
|
|
412
|
+
|
|
413
|
+
|
|
414
|
+
def reindex_like(
|
|
415
|
+
df_or_series, other, method=None, copy=True, limit=None, tolerance=None
|
|
416
|
+
):
|
|
417
|
+
"""
|
|
418
|
+
Return an object with matching indices as other object.
|
|
419
|
+
|
|
420
|
+
Conform the object to the same index on all axes. Optional
|
|
421
|
+
filling logic, placing NaN in locations having no value
|
|
422
|
+
in the previous index. A new object is produced unless the
|
|
423
|
+
new index is equivalent to the current one and copy=False.
|
|
424
|
+
|
|
425
|
+
Parameters
|
|
426
|
+
----------
|
|
427
|
+
other : Object of the same data type
|
|
428
|
+
Its row and column indices are used to define the new indices
|
|
429
|
+
of this object.
|
|
430
|
+
method : {None, 'backfill'/'bfill', 'pad'/'ffill', 'nearest'}
|
|
431
|
+
Method to use for filling holes in reindexed DataFrame.
|
|
432
|
+
Please note: this is only applicable to DataFrames/Series with a
|
|
433
|
+
monotonically increasing/decreasing index.
|
|
434
|
+
|
|
435
|
+
* None (default): don't fill gaps
|
|
436
|
+
* pad / ffill: propagate last valid observation forward to next
|
|
437
|
+
valid
|
|
438
|
+
* backfill / bfill: use next valid observation to fill gap
|
|
439
|
+
* nearest: use nearest valid observations to fill gap.
|
|
440
|
+
|
|
441
|
+
copy : bool, default True
|
|
442
|
+
Return a new object, even if the passed indexes are the same.
|
|
443
|
+
limit : int, default None
|
|
444
|
+
Maximum number of consecutive labels to fill for inexact matches.
|
|
445
|
+
tolerance : optional
|
|
446
|
+
Maximum distance between original and new labels for inexact
|
|
447
|
+
matches. The values of the index at the matching locations must
|
|
448
|
+
satisfy the equation ``abs(index[indexer] - target) <= tolerance``.
|
|
449
|
+
|
|
450
|
+
Tolerance may be a scalar value, which applies the same tolerance
|
|
451
|
+
to all values, or list-like, which applies variable tolerance per
|
|
452
|
+
element. List-like includes list, tuple, array, Series, and must be
|
|
453
|
+
the same size as the index and its dtype must exactly match the
|
|
454
|
+
index's type.
|
|
455
|
+
|
|
456
|
+
Returns
|
|
457
|
+
-------
|
|
458
|
+
Series or DataFrame
|
|
459
|
+
Same type as caller, but with changed indices on each axis.
|
|
460
|
+
|
|
461
|
+
See Also
|
|
462
|
+
--------
|
|
463
|
+
DataFrame.set_index : Set row labels.
|
|
464
|
+
DataFrame.reset_index : Remove row labels or move them to new columns.
|
|
465
|
+
DataFrame.reindex : Change to new indices or expand indices.
|
|
466
|
+
|
|
467
|
+
Notes
|
|
468
|
+
-----
|
|
469
|
+
Same as calling
|
|
470
|
+
``.reindex(index=other.index, columns=other.columns,...)``.
|
|
471
|
+
|
|
472
|
+
Examples
|
|
473
|
+
--------
|
|
474
|
+
>>> import pandas as pd
|
|
475
|
+
>>> import maxframe.dataframe as md
|
|
476
|
+
>>> df1 = md.DataFrame([[24.3, 75.7, 'high'],
|
|
477
|
+
... [31, 87.8, 'high'],
|
|
478
|
+
... [22, 71.6, 'medium'],
|
|
479
|
+
... [35, 95, 'medium']],
|
|
480
|
+
... columns=['temp_celsius', 'temp_fahrenheit',
|
|
481
|
+
... 'windspeed'],
|
|
482
|
+
... index=md.date_range(start='2014-02-12',
|
|
483
|
+
... end='2014-02-15', freq='D'))
|
|
484
|
+
|
|
485
|
+
>>> df1.execute()
|
|
486
|
+
temp_celsius temp_fahrenheit windspeed
|
|
487
|
+
2014-02-12 24.3 75.7 high
|
|
488
|
+
2014-02-13 31 87.8 high
|
|
489
|
+
2014-02-14 22 71.6 medium
|
|
490
|
+
2014-02-15 35 95 medium
|
|
491
|
+
|
|
492
|
+
>>> df2 = md.DataFrame([[28, 'low'],
|
|
493
|
+
... [30, 'low'],
|
|
494
|
+
... [35.1, 'medium']],
|
|
495
|
+
... columns=['temp_celsius', 'windspeed'],
|
|
496
|
+
... index=pd.DatetimeIndex(['2014-02-12', '2014-02-13',
|
|
497
|
+
... '2014-02-15']))
|
|
498
|
+
|
|
499
|
+
>>> df2.execute()
|
|
500
|
+
temp_celsius windspeed
|
|
501
|
+
2014-02-12 28.0 low
|
|
502
|
+
2014-02-13 30.0 low
|
|
503
|
+
2014-02-15 35.1 medium
|
|
504
|
+
|
|
505
|
+
>>> df2.reindex_like(df1).execute()
|
|
506
|
+
temp_celsius temp_fahrenheit windspeed
|
|
507
|
+
2014-02-12 28.0 NaN low
|
|
508
|
+
2014-02-13 30.0 NaN low
|
|
509
|
+
2014-02-14 NaN NaN NaN
|
|
510
|
+
2014-02-15 35.1 NaN medium
|
|
511
|
+
"""
|
|
512
|
+
cond = df_or_series.index_value.key == other.index_value.key
|
|
513
|
+
if df_or_series.ndim == 2:
|
|
514
|
+
cond &= df_or_series.columns_value.key == other.columns_value.key
|
|
515
|
+
if cond and not copy:
|
|
516
|
+
return df_or_series
|
|
517
|
+
|
|
518
|
+
kw = {
|
|
519
|
+
"index": other.index,
|
|
520
|
+
"method": method,
|
|
521
|
+
"limit": limit,
|
|
522
|
+
"tolerance": tolerance,
|
|
523
|
+
}
|
|
524
|
+
if df_or_series.ndim == 2:
|
|
525
|
+
kw["columns"] = other.dtypes.index
|
|
526
|
+
return reindex(df_or_series, **kw)
|