maxframe 1.3.0__cp38-cp38-win32.whl → 2.0.0b1__cp38-cp38-win32.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/_utils.cp38-win32.pyd +0 -0
- maxframe/_utils.pyi +21 -0
- maxframe/_utils.pyx +4 -3
- maxframe/codegen/__init__.py +27 -0
- maxframe/{codegen.py → codegen/core.py} +49 -43
- maxframe/codegen/spe/__init__.py +16 -0
- maxframe/codegen/spe/core.py +307 -0
- maxframe/codegen/spe/dataframe/__init__.py +37 -0
- maxframe/codegen/spe/dataframe/accessors/__init__.py +15 -0
- maxframe/codegen/spe/dataframe/accessors/base.py +53 -0
- maxframe/codegen/spe/dataframe/accessors/dict_.py +194 -0
- maxframe/codegen/spe/dataframe/accessors/list_.py +80 -0
- maxframe/codegen/spe/dataframe/arithmetic.py +84 -0
- maxframe/codegen/spe/dataframe/datasource.py +181 -0
- maxframe/codegen/spe/dataframe/datastore.py +204 -0
- maxframe/codegen/spe/dataframe/extensions.py +63 -0
- maxframe/codegen/spe/dataframe/fetch.py +26 -0
- maxframe/codegen/spe/dataframe/groupby.py +224 -0
- maxframe/codegen/spe/dataframe/indexing.py +238 -0
- maxframe/codegen/spe/dataframe/merge.py +73 -0
- maxframe/codegen/spe/dataframe/misc.py +286 -0
- maxframe/codegen/spe/dataframe/missing.py +64 -0
- maxframe/codegen/spe/dataframe/reduction.py +160 -0
- maxframe/codegen/spe/dataframe/sort.py +83 -0
- maxframe/codegen/spe/dataframe/statistics.py +46 -0
- maxframe/codegen/spe/dataframe/tests/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/accessors/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/accessors/test_base.py +33 -0
- maxframe/codegen/spe/dataframe/tests/accessors/test_dict.py +310 -0
- maxframe/codegen/spe/dataframe/tests/accessors/test_list.py +137 -0
- maxframe/codegen/spe/dataframe/tests/indexing/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/indexing/conftest.py +58 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_getitem.py +124 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_iloc.py +76 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_indexing.py +39 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_rename.py +51 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_reset_index.py +88 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_sample.py +45 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_set_axis.py +45 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_set_index.py +41 -0
- maxframe/codegen/spe/dataframe/tests/indexing/test_setitem.py +46 -0
- maxframe/codegen/spe/dataframe/tests/misc/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_apply.py +133 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_drop_duplicates.py +92 -0
- maxframe/codegen/spe/dataframe/tests/misc/test_misc.py +234 -0
- maxframe/codegen/spe/dataframe/tests/missing/__init__.py +13 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_checkna.py +94 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_dropna.py +50 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_fillna.py +94 -0
- maxframe/codegen/spe/dataframe/tests/missing/test_replace.py +45 -0
- maxframe/codegen/spe/dataframe/tests/test_arithmetic.py +73 -0
- maxframe/codegen/spe/dataframe/tests/test_datasource.py +184 -0
- maxframe/codegen/spe/dataframe/tests/test_datastore.py +200 -0
- maxframe/codegen/spe/dataframe/tests/test_extensions.py +88 -0
- maxframe/codegen/spe/dataframe/tests/test_groupby.py +225 -0
- maxframe/codegen/spe/dataframe/tests/test_merge.py +400 -0
- maxframe/codegen/spe/dataframe/tests/test_reduction.py +104 -0
- maxframe/codegen/spe/dataframe/tests/test_sort.py +159 -0
- maxframe/codegen/spe/dataframe/tests/test_statistics.py +70 -0
- maxframe/codegen/spe/dataframe/tests/test_tseries.py +29 -0
- maxframe/codegen/spe/dataframe/tests/test_value_counts.py +60 -0
- maxframe/codegen/spe/dataframe/tests/test_window.py +69 -0
- maxframe/codegen/spe/dataframe/tseries.py +46 -0
- maxframe/codegen/spe/dataframe/udf.py +62 -0
- maxframe/codegen/spe/dataframe/value_counts.py +31 -0
- maxframe/codegen/spe/dataframe/window.py +65 -0
- maxframe/codegen/spe/learn/__init__.py +15 -0
- maxframe/codegen/spe/learn/contrib/__init__.py +15 -0
- maxframe/codegen/spe/learn/contrib/lightgbm.py +160 -0
- maxframe/codegen/spe/learn/contrib/models.py +41 -0
- maxframe/codegen/spe/learn/contrib/pytorch.py +49 -0
- maxframe/codegen/spe/learn/contrib/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/contrib/tests/test_lightgbm.py +123 -0
- maxframe/codegen/spe/learn/contrib/tests/test_models.py +41 -0
- maxframe/codegen/spe/learn/contrib/tests/test_pytorch.py +53 -0
- maxframe/codegen/spe/learn/contrib/tests/test_xgboost.py +98 -0
- maxframe/codegen/spe/learn/contrib/xgboost.py +152 -0
- maxframe/codegen/spe/learn/metrics/__init__.py +15 -0
- maxframe/codegen/spe/learn/metrics/_classification.py +120 -0
- maxframe/codegen/spe/learn/metrics/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/metrics/tests/test_classification.py +93 -0
- maxframe/codegen/spe/learn/model_selection/__init__.py +13 -0
- maxframe/codegen/spe/learn/model_selection/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/model_selection/tests/test_split.py +41 -0
- maxframe/codegen/spe/learn/preprocessing/__init__.py +15 -0
- maxframe/codegen/spe/learn/preprocessing/_data.py +37 -0
- maxframe/codegen/spe/learn/preprocessing/_label.py +47 -0
- maxframe/codegen/spe/learn/preprocessing/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/preprocessing/tests/test_data.py +31 -0
- maxframe/codegen/spe/learn/preprocessing/tests/test_label.py +43 -0
- maxframe/codegen/spe/learn/utils/__init__.py +15 -0
- maxframe/codegen/spe/learn/utils/checks.py +55 -0
- maxframe/codegen/spe/learn/utils/multiclass.py +60 -0
- maxframe/codegen/spe/learn/utils/shuffle.py +85 -0
- maxframe/codegen/spe/learn/utils/sparsefuncs.py +35 -0
- maxframe/codegen/spe/learn/utils/tests/__init__.py +13 -0
- maxframe/codegen/spe/learn/utils/tests/test_checks.py +48 -0
- maxframe/codegen/spe/learn/utils/tests/test_multiclass.py +52 -0
- maxframe/codegen/spe/learn/utils/tests/test_shuffle.py +50 -0
- maxframe/codegen/spe/learn/utils/tests/test_sparsefuncs.py +34 -0
- maxframe/codegen/spe/learn/utils/tests/test_validation.py +44 -0
- maxframe/codegen/spe/learn/utils/validation.py +35 -0
- maxframe/codegen/spe/objects.py +26 -0
- maxframe/codegen/spe/remote.py +29 -0
- maxframe/codegen/spe/tensor/__init__.py +28 -0
- maxframe/codegen/spe/tensor/arithmetic.py +95 -0
- maxframe/codegen/spe/tensor/core.py +41 -0
- maxframe/codegen/spe/tensor/datasource.py +165 -0
- maxframe/codegen/spe/tensor/extensions.py +35 -0
- maxframe/codegen/spe/tensor/fetch.py +26 -0
- maxframe/codegen/spe/tensor/indexing.py +63 -0
- maxframe/codegen/spe/tensor/linalg.py +63 -0
- maxframe/codegen/spe/tensor/merge.py +31 -0
- maxframe/codegen/spe/tensor/misc.py +121 -0
- maxframe/codegen/spe/tensor/random.py +29 -0
- maxframe/codegen/spe/tensor/reduction.py +39 -0
- maxframe/codegen/spe/tensor/reshape.py +26 -0
- maxframe/codegen/spe/tensor/sort.py +42 -0
- maxframe/codegen/spe/tensor/special.py +35 -0
- maxframe/codegen/spe/tensor/statistics.py +24 -0
- maxframe/codegen/spe/tensor/tests/__init__.py +13 -0
- maxframe/codegen/spe/tensor/tests/test_arithmetic.py +103 -0
- maxframe/codegen/spe/tensor/tests/test_datasource.py +99 -0
- maxframe/codegen/spe/tensor/tests/test_extensions.py +37 -0
- maxframe/codegen/spe/tensor/tests/test_indexing.py +44 -0
- maxframe/codegen/spe/tensor/tests/test_linalg.py +38 -0
- maxframe/codegen/spe/tensor/tests/test_merge.py +28 -0
- maxframe/codegen/spe/tensor/tests/test_misc.py +94 -0
- maxframe/codegen/spe/tensor/tests/test_random.py +55 -0
- maxframe/codegen/spe/tensor/tests/test_reduction.py +65 -0
- maxframe/codegen/spe/tensor/tests/test_reshape.py +39 -0
- maxframe/codegen/spe/tensor/tests/test_sort.py +49 -0
- maxframe/codegen/spe/tensor/tests/test_special.py +28 -0
- maxframe/codegen/spe/tensor/tests/test_statistics.py +29 -0
- maxframe/codegen/spe/tests/__init__.py +13 -0
- maxframe/codegen/spe/tests/test_remote.py +29 -0
- maxframe/codegen/spe/tests/test_spe_codegen.py +141 -0
- maxframe/codegen/spe/utils.py +54 -0
- maxframe/codegen/tests/__init__.py +13 -0
- maxframe/{tests → codegen/tests}/test_codegen.py +3 -5
- maxframe/config/__init__.py +1 -1
- maxframe/config/config.py +50 -23
- maxframe/config/tests/test_config.py +4 -12
- maxframe/config/validators.py +5 -0
- maxframe/conftest.py +38 -10
- maxframe/core/__init__.py +1 -0
- maxframe/core/context.py +110 -0
- maxframe/core/entity/__init__.py +1 -0
- maxframe/core/entity/core.py +0 -7
- maxframe/core/entity/objects.py +19 -5
- maxframe/core/entity/output_types.py +11 -0
- maxframe/core/entity/tests/test_objects.py +11 -12
- maxframe/core/entity/tileables.py +3 -1
- maxframe/core/entity/utils.py +15 -0
- maxframe/core/graph/__init__.py +6 -1
- maxframe/core/graph/builder/base.py +5 -1
- maxframe/core/graph/core.cp38-win32.pyd +0 -0
- maxframe/core/graph/core.pyx +17 -6
- maxframe/core/graph/entity.py +18 -6
- maxframe/core/operator/__init__.py +8 -3
- maxframe/core/operator/base.py +35 -12
- maxframe/core/operator/core.py +37 -14
- maxframe/core/operator/fetch.py +5 -18
- maxframe/core/operator/objects.py +0 -20
- maxframe/core/operator/shuffle.py +6 -72
- maxframe/dataframe/__init__.py +1 -0
- maxframe/dataframe/accessors/datetime_/core.py +7 -4
- maxframe/dataframe/accessors/string_/core.py +9 -6
- maxframe/dataframe/arithmetic/core.py +31 -20
- maxframe/dataframe/arithmetic/tests/test_arithmetic.py +6 -0
- maxframe/dataframe/core.py +98 -91
- maxframe/dataframe/datasource/core.py +8 -1
- maxframe/dataframe/datasource/date_range.py +8 -0
- maxframe/dataframe/datasource/from_index.py +9 -5
- maxframe/dataframe/datasource/from_records.py +9 -2
- maxframe/dataframe/datasource/from_tensor.py +32 -21
- maxframe/dataframe/datasource/read_csv.py +8 -2
- maxframe/dataframe/datasource/read_odps_query.py +33 -3
- maxframe/dataframe/datasource/read_odps_table.py +20 -5
- maxframe/dataframe/datasource/read_parquet.py +8 -3
- maxframe/dataframe/datasource/tests/test_datasource.py +33 -0
- maxframe/dataframe/datastore/tests/test_to_odps.py +52 -1
- maxframe/dataframe/datastore/to_csv.py +7 -3
- maxframe/dataframe/datastore/to_odps.py +42 -6
- maxframe/dataframe/extensions/__init__.py +6 -1
- maxframe/dataframe/extensions/apply_chunk.py +96 -136
- maxframe/dataframe/extensions/flatjson.py +3 -2
- maxframe/dataframe/extensions/flatmap.py +15 -7
- maxframe/dataframe/fetch/core.py +12 -1
- maxframe/dataframe/groupby/__init__.py +7 -0
- maxframe/dataframe/groupby/aggregation.py +62 -9
- maxframe/dataframe/groupby/apply.py +50 -74
- maxframe/dataframe/groupby/apply_chunk.py +393 -0
- maxframe/dataframe/groupby/core.py +80 -17
- maxframe/dataframe/groupby/extensions.py +26 -0
- maxframe/dataframe/groupby/fill.py +9 -4
- maxframe/dataframe/groupby/sample.py +7 -7
- maxframe/dataframe/groupby/tests/test_groupby.py +3 -3
- maxframe/dataframe/groupby/transform.py +57 -54
- maxframe/dataframe/indexing/align.py +7 -6
- maxframe/dataframe/indexing/getitem.py +9 -8
- maxframe/dataframe/indexing/iloc.py +28 -23
- maxframe/dataframe/indexing/insert.py +7 -3
- maxframe/dataframe/indexing/loc.py +9 -8
- maxframe/dataframe/indexing/reindex.py +36 -30
- maxframe/dataframe/indexing/rename_axis.py +18 -10
- maxframe/dataframe/indexing/reset_index.py +0 -2
- maxframe/dataframe/indexing/sample.py +13 -9
- maxframe/dataframe/indexing/set_axis.py +9 -6
- maxframe/dataframe/indexing/setitem.py +8 -5
- maxframe/dataframe/indexing/where.py +12 -9
- maxframe/dataframe/merge/__init__.py +0 -1
- maxframe/dataframe/merge/concat.py +10 -31
- maxframe/dataframe/merge/merge.py +2 -24
- maxframe/dataframe/misc/__init__.py +6 -0
- maxframe/dataframe/misc/_duplicate.py +7 -3
- maxframe/dataframe/misc/apply.py +106 -139
- maxframe/dataframe/misc/astype.py +3 -2
- maxframe/dataframe/misc/case_when.py +11 -7
- maxframe/dataframe/misc/cut.py +11 -10
- maxframe/dataframe/misc/describe.py +7 -3
- maxframe/dataframe/misc/drop.py +13 -11
- maxframe/dataframe/misc/eval.py +0 -2
- maxframe/dataframe/misc/get_dummies.py +78 -49
- maxframe/dataframe/misc/isin.py +13 -10
- maxframe/dataframe/misc/map.py +21 -6
- maxframe/dataframe/misc/melt.py +8 -1
- maxframe/dataframe/misc/pivot.py +232 -0
- maxframe/dataframe/misc/pivot_table.py +52 -40
- maxframe/dataframe/misc/rechunk.py +59 -0
- maxframe/dataframe/misc/shift.py +7 -4
- maxframe/dataframe/misc/stack.py +5 -3
- maxframe/dataframe/misc/tests/test_misc.py +167 -1
- maxframe/dataframe/misc/transform.py +63 -65
- maxframe/dataframe/misc/value_counts.py +7 -4
- maxframe/dataframe/missing/dropna.py +16 -7
- maxframe/dataframe/missing/fillna.py +18 -10
- maxframe/dataframe/missing/replace.py +10 -6
- maxframe/dataframe/missing/tests/test_missing.py +2 -2
- maxframe/dataframe/operators.py +1 -27
- maxframe/dataframe/reduction/aggregation.py +128 -3
- maxframe/dataframe/reduction/core.py +20 -6
- maxframe/dataframe/reduction/median.py +1 -1
- maxframe/dataframe/reduction/tests/test_reduction.py +33 -0
- maxframe/dataframe/reduction/unique.py +53 -7
- maxframe/dataframe/statistics/corr.py +9 -6
- maxframe/dataframe/statistics/quantile.py +9 -6
- maxframe/dataframe/tseries/to_datetime.py +6 -4
- maxframe/dataframe/utils.py +219 -31
- maxframe/dataframe/window/rolling.py +7 -4
- maxframe/env.py +1 -0
- maxframe/errors.py +9 -0
- maxframe/extension.py +13 -2
- maxframe/io/objects/core.py +67 -51
- maxframe/io/objects/tensor.py +73 -17
- maxframe/io/objects/tests/test_object_io.py +8 -55
- maxframe/io/odpsio/arrow.py +15 -2
- maxframe/io/odpsio/schema.py +43 -13
- maxframe/io/odpsio/tableio.py +63 -11
- maxframe/io/odpsio/tests/test_arrow.py +1 -2
- maxframe/io/odpsio/tests/test_schema.py +114 -1
- maxframe/io/odpsio/tests/test_tableio.py +42 -0
- maxframe/io/odpsio/tests/test_volumeio.py +22 -48
- maxframe/learn/__init__.py +2 -2
- maxframe/learn/contrib/__init__.py +2 -2
- maxframe/learn/contrib/graph/connected_components.py +2 -1
- maxframe/learn/contrib/lightgbm/__init__.py +33 -0
- maxframe/learn/contrib/lightgbm/_predict.py +138 -0
- maxframe/learn/contrib/lightgbm/_train.py +163 -0
- maxframe/learn/contrib/lightgbm/callback.py +114 -0
- maxframe/learn/contrib/lightgbm/classifier.py +199 -0
- maxframe/learn/contrib/lightgbm/core.py +372 -0
- maxframe/learn/contrib/lightgbm/dataset.py +153 -0
- maxframe/learn/contrib/lightgbm/regressor.py +29 -0
- maxframe/learn/contrib/lightgbm/tests/__init__.py +13 -0
- maxframe/learn/contrib/lightgbm/tests/test_callback.py +58 -0
- maxframe/learn/contrib/llm/models/dashscope.py +34 -0
- maxframe/learn/contrib/llm/models/managed.py +15 -0
- maxframe/learn/contrib/llm/multi_modal.py +92 -0
- maxframe/learn/contrib/llm/text.py +21 -5
- maxframe/learn/contrib/models.py +38 -9
- maxframe/learn/contrib/utils.py +55 -0
- maxframe/learn/contrib/xgboost/callback.py +86 -0
- maxframe/learn/contrib/xgboost/classifier.py +26 -30
- maxframe/learn/contrib/xgboost/core.py +53 -42
- maxframe/learn/contrib/xgboost/dmatrix.py +19 -12
- maxframe/learn/contrib/xgboost/predict.py +13 -8
- maxframe/learn/contrib/xgboost/regressor.py +28 -27
- maxframe/learn/contrib/xgboost/tests/test_callback.py +41 -0
- maxframe/learn/contrib/xgboost/train.py +59 -16
- maxframe/learn/core.py +252 -0
- maxframe/learn/datasets/__init__.py +20 -0
- maxframe/learn/datasets/samples_generator.py +628 -0
- maxframe/learn/linear_model/__init__.py +15 -0
- maxframe/learn/linear_model/_base.py +163 -0
- maxframe/learn/linear_model/_lin_reg.py +175 -0
- maxframe/learn/metrics/__init__.py +25 -0
- maxframe/learn/metrics/_check_targets.py +95 -0
- maxframe/learn/metrics/_classification.py +1121 -0
- maxframe/learn/metrics/_regression.py +256 -0
- maxframe/learn/model_selection/__init__.py +15 -0
- maxframe/learn/model_selection/_split.py +451 -0
- maxframe/learn/model_selection/tests/__init__.py +13 -0
- maxframe/learn/model_selection/tests/test_split.py +156 -0
- maxframe/learn/preprocessing/__init__.py +16 -0
- maxframe/learn/preprocessing/_data/__init__.py +17 -0
- maxframe/learn/preprocessing/_data/min_max_scaler.py +390 -0
- maxframe/learn/preprocessing/_data/normalize.py +127 -0
- maxframe/learn/preprocessing/_data/standard_scaler.py +503 -0
- maxframe/learn/preprocessing/_data/utils.py +79 -0
- maxframe/learn/preprocessing/_label/__init__.py +16 -0
- maxframe/learn/preprocessing/_label/_label_binarizer.py +599 -0
- maxframe/learn/preprocessing/_label/_label_encoder.py +174 -0
- maxframe/learn/utils/__init__.py +4 -0
- maxframe/learn/utils/_encode.py +314 -0
- maxframe/learn/utils/checks.py +161 -0
- maxframe/learn/utils/core.py +33 -0
- maxframe/learn/utils/extmath.py +176 -0
- maxframe/learn/utils/multiclass.py +292 -0
- maxframe/learn/utils/shuffle.py +114 -0
- maxframe/learn/utils/sparsefuncs.py +87 -0
- maxframe/learn/utils/validation.py +775 -0
- maxframe/lib/__init__.py +0 -2
- maxframe/lib/compat.py +145 -0
- maxframe/lib/filesystem/_oss_lib/glob.py +1 -1
- maxframe/lib/mmh3.cp38-win32.pyd +0 -0
- maxframe/lib/sparse/__init__.py +10 -15
- maxframe/lib/sparse/array.py +45 -33
- maxframe/lib/sparse/core.py +0 -2
- maxframe/lib/sparse/linalg.py +31 -0
- maxframe/lib/sparse/matrix.py +5 -2
- maxframe/lib/sparse/tests/__init__.py +0 -2
- maxframe/lib/sparse/tests/test_sparse.py +53 -53
- maxframe/lib/sparse/vector.py +0 -2
- maxframe/mixin.py +59 -2
- maxframe/opcodes.py +13 -5
- maxframe/protocol.py +67 -14
- maxframe/remote/core.py +16 -14
- maxframe/remote/run_script.py +6 -3
- maxframe/serialization/__init__.py +2 -0
- maxframe/serialization/core.cp38-win32.pyd +0 -0
- maxframe/serialization/core.pxd +3 -0
- maxframe/serialization/core.pyi +3 -1
- maxframe/serialization/core.pyx +82 -4
- maxframe/serialization/pandas.py +5 -1
- maxframe/serialization/serializables/core.py +6 -5
- maxframe/serialization/serializables/field.py +2 -2
- maxframe/serialization/serializables/tests/test_field_type.py +3 -5
- maxframe/serialization/tests/test_serial.py +27 -0
- maxframe/session.py +4 -71
- maxframe/sperunner.py +165 -0
- maxframe/tensor/__init__.py +35 -2
- maxframe/tensor/arithmetic/__init__.py +2 -4
- maxframe/tensor/arithmetic/abs.py +0 -2
- maxframe/tensor/arithmetic/absolute.py +0 -2
- maxframe/tensor/arithmetic/add.py +34 -4
- maxframe/tensor/arithmetic/angle.py +0 -2
- maxframe/tensor/arithmetic/arccos.py +1 -4
- maxframe/tensor/arithmetic/arccosh.py +1 -3
- maxframe/tensor/arithmetic/arcsin.py +0 -2
- maxframe/tensor/arithmetic/arcsinh.py +0 -2
- maxframe/tensor/arithmetic/arctan.py +0 -2
- maxframe/tensor/arithmetic/arctan2.py +0 -2
- maxframe/tensor/arithmetic/arctanh.py +0 -2
- maxframe/tensor/arithmetic/around.py +0 -2
- maxframe/tensor/arithmetic/bitand.py +0 -2
- maxframe/tensor/arithmetic/bitor.py +1 -3
- maxframe/tensor/arithmetic/bitxor.py +1 -3
- maxframe/tensor/arithmetic/cbrt.py +0 -2
- maxframe/tensor/arithmetic/ceil.py +0 -2
- maxframe/tensor/arithmetic/clip.py +13 -13
- maxframe/tensor/arithmetic/conj.py +0 -2
- maxframe/tensor/arithmetic/copysign.py +0 -2
- maxframe/tensor/arithmetic/core.py +47 -39
- maxframe/tensor/arithmetic/cos.py +1 -3
- maxframe/tensor/arithmetic/cosh.py +0 -2
- maxframe/tensor/arithmetic/deg2rad.py +0 -2
- maxframe/tensor/arithmetic/degrees.py +0 -2
- maxframe/tensor/arithmetic/divide.py +0 -2
- maxframe/tensor/arithmetic/equal.py +0 -2
- maxframe/tensor/arithmetic/exp.py +1 -3
- maxframe/tensor/arithmetic/exp2.py +0 -2
- maxframe/tensor/arithmetic/expm1.py +0 -2
- maxframe/tensor/arithmetic/fabs.py +0 -2
- maxframe/tensor/arithmetic/fix.py +0 -2
- maxframe/tensor/arithmetic/float_power.py +0 -2
- maxframe/tensor/arithmetic/floor.py +0 -2
- maxframe/tensor/arithmetic/floordiv.py +0 -2
- maxframe/tensor/arithmetic/fmax.py +0 -2
- maxframe/tensor/arithmetic/fmin.py +0 -2
- maxframe/tensor/arithmetic/fmod.py +0 -2
- maxframe/tensor/arithmetic/frexp.py +6 -2
- maxframe/tensor/arithmetic/greater.py +0 -2
- maxframe/tensor/arithmetic/greater_equal.py +0 -2
- maxframe/tensor/arithmetic/hypot.py +0 -2
- maxframe/tensor/arithmetic/i0.py +1 -3
- maxframe/tensor/arithmetic/imag.py +0 -2
- maxframe/tensor/arithmetic/invert.py +1 -3
- maxframe/tensor/arithmetic/isclose.py +0 -2
- maxframe/tensor/arithmetic/iscomplex.py +0 -2
- maxframe/tensor/arithmetic/isfinite.py +1 -3
- maxframe/tensor/arithmetic/isinf.py +0 -2
- maxframe/tensor/arithmetic/isnan.py +0 -2
- maxframe/tensor/arithmetic/isreal.py +0 -2
- maxframe/tensor/arithmetic/ldexp.py +0 -2
- maxframe/tensor/arithmetic/less.py +0 -2
- maxframe/tensor/arithmetic/less_equal.py +0 -2
- maxframe/tensor/arithmetic/log.py +1 -3
- maxframe/tensor/arithmetic/log10.py +1 -3
- maxframe/tensor/arithmetic/log1p.py +1 -3
- maxframe/tensor/arithmetic/log2.py +1 -3
- maxframe/tensor/arithmetic/logaddexp.py +0 -2
- maxframe/tensor/arithmetic/logaddexp2.py +0 -2
- maxframe/tensor/arithmetic/logical_and.py +0 -2
- maxframe/tensor/arithmetic/logical_not.py +1 -3
- maxframe/tensor/arithmetic/logical_or.py +0 -2
- maxframe/tensor/arithmetic/logical_xor.py +0 -2
- maxframe/tensor/arithmetic/lshift.py +0 -2
- maxframe/tensor/arithmetic/maximum.py +0 -2
- maxframe/tensor/arithmetic/minimum.py +0 -2
- maxframe/tensor/arithmetic/mod.py +0 -2
- maxframe/tensor/arithmetic/modf.py +6 -2
- maxframe/tensor/arithmetic/multiply.py +37 -4
- maxframe/tensor/arithmetic/nan_to_num.py +0 -2
- maxframe/tensor/arithmetic/negative.py +0 -2
- maxframe/tensor/arithmetic/nextafter.py +0 -2
- maxframe/tensor/arithmetic/not_equal.py +0 -2
- maxframe/tensor/arithmetic/positive.py +0 -2
- maxframe/tensor/arithmetic/power.py +0 -2
- maxframe/tensor/arithmetic/rad2deg.py +0 -2
- maxframe/tensor/arithmetic/radians.py +0 -2
- maxframe/tensor/arithmetic/real.py +0 -2
- maxframe/tensor/arithmetic/reciprocal.py +5 -3
- maxframe/tensor/arithmetic/rint.py +1 -3
- maxframe/tensor/arithmetic/rshift.py +0 -2
- maxframe/tensor/arithmetic/setimag.py +0 -2
- maxframe/tensor/arithmetic/setreal.py +0 -2
- maxframe/tensor/arithmetic/sign.py +0 -2
- maxframe/tensor/arithmetic/signbit.py +0 -2
- maxframe/tensor/arithmetic/sin.py +0 -2
- maxframe/tensor/arithmetic/sinc.py +1 -3
- maxframe/tensor/arithmetic/sinh.py +0 -2
- maxframe/tensor/arithmetic/spacing.py +0 -2
- maxframe/tensor/arithmetic/sqrt.py +0 -2
- maxframe/tensor/arithmetic/square.py +0 -2
- maxframe/tensor/arithmetic/subtract.py +4 -2
- maxframe/tensor/arithmetic/tan.py +0 -2
- maxframe/tensor/arithmetic/tanh.py +0 -2
- maxframe/tensor/arithmetic/tests/__init__.py +0 -2
- maxframe/tensor/arithmetic/tests/test_arithmetic.py +43 -9
- maxframe/tensor/arithmetic/truediv.py +0 -2
- maxframe/tensor/arithmetic/trunc.py +0 -2
- maxframe/tensor/arithmetic/utils.py +32 -6
- maxframe/tensor/array_utils.py +3 -25
- maxframe/tensor/core.py +6 -6
- maxframe/tensor/datasource/__init__.py +10 -2
- maxframe/tensor/datasource/arange.py +0 -2
- maxframe/tensor/datasource/array.py +3 -22
- maxframe/tensor/datasource/core.py +15 -10
- maxframe/tensor/datasource/diag.py +140 -0
- maxframe/tensor/datasource/diagflat.py +69 -0
- maxframe/tensor/datasource/empty.py +0 -2
- maxframe/tensor/datasource/eye.py +95 -0
- maxframe/tensor/datasource/from_dataframe.py +0 -2
- maxframe/tensor/datasource/from_dense.py +0 -17
- maxframe/tensor/datasource/from_sparse.py +0 -2
- maxframe/tensor/datasource/full.py +0 -2
- maxframe/tensor/datasource/identity.py +54 -0
- maxframe/tensor/datasource/indices.py +115 -0
- maxframe/tensor/datasource/linspace.py +140 -0
- maxframe/tensor/datasource/meshgrid.py +135 -0
- maxframe/tensor/datasource/ones.py +8 -3
- maxframe/tensor/datasource/tests/test_datasource.py +32 -1
- maxframe/tensor/datasource/tri_array.py +107 -0
- maxframe/tensor/datasource/zeros.py +7 -3
- maxframe/tensor/extensions/__init__.py +31 -0
- maxframe/tensor/extensions/accessor.py +25 -0
- maxframe/tensor/extensions/apply_chunk.py +137 -0
- maxframe/tensor/indexing/__init__.py +1 -1
- maxframe/tensor/indexing/choose.py +8 -6
- maxframe/tensor/indexing/compress.py +0 -2
- maxframe/tensor/indexing/extract.py +0 -2
- maxframe/tensor/indexing/fill_diagonal.py +9 -6
- maxframe/tensor/indexing/flatnonzero.py +1 -3
- maxframe/tensor/indexing/getitem.py +10 -43
- maxframe/tensor/indexing/nonzero.py +2 -4
- maxframe/tensor/indexing/setitem.py +19 -9
- maxframe/tensor/indexing/slice.py +6 -3
- maxframe/tensor/indexing/take.py +0 -2
- maxframe/tensor/indexing/tests/__init__.py +0 -2
- maxframe/tensor/indexing/tests/test_indexing.py +0 -2
- maxframe/tensor/indexing/unravel_index.py +6 -6
- maxframe/tensor/lib/__init__.py +16 -0
- maxframe/tensor/lib/index_tricks.py +404 -0
- maxframe/tensor/linalg/__init__.py +36 -0
- maxframe/tensor/linalg/dot.py +145 -0
- maxframe/tensor/linalg/inner.py +36 -0
- maxframe/tensor/linalg/inv.py +83 -0
- maxframe/tensor/linalg/lu.py +115 -0
- maxframe/tensor/linalg/matmul.py +225 -0
- maxframe/tensor/linalg/qr.py +124 -0
- maxframe/tensor/linalg/solve_triangular.py +103 -0
- maxframe/tensor/linalg/svd.py +167 -0
- maxframe/tensor/linalg/tensordot.py +213 -0
- maxframe/tensor/linalg/vdot.py +73 -0
- maxframe/tensor/merge/__init__.py +4 -0
- maxframe/tensor/merge/append.py +74 -0
- maxframe/tensor/merge/column_stack.py +63 -0
- maxframe/tensor/merge/concatenate.py +3 -2
- maxframe/tensor/merge/dstack.py +71 -0
- maxframe/tensor/merge/hstack.py +70 -0
- maxframe/tensor/merge/stack.py +0 -2
- maxframe/tensor/merge/tests/test_merge.py +0 -2
- maxframe/tensor/misc/__init__.py +18 -5
- maxframe/tensor/misc/astype.py +10 -8
- maxframe/tensor/misc/broadcast_to.py +1 -1
- maxframe/tensor/misc/copy.py +64 -0
- maxframe/tensor/misc/diff.py +115 -0
- maxframe/tensor/misc/flatten.py +63 -0
- maxframe/tensor/misc/in1d.py +94 -0
- maxframe/tensor/misc/isin.py +130 -0
- maxframe/tensor/misc/ndim.py +53 -0
- maxframe/tensor/misc/ravel.py +0 -2
- maxframe/tensor/misc/repeat.py +129 -0
- maxframe/tensor/misc/searchsorted.py +147 -0
- maxframe/tensor/misc/setdiff1d.py +58 -0
- maxframe/tensor/misc/squeeze.py +117 -0
- maxframe/tensor/misc/swapaxes.py +113 -0
- maxframe/tensor/misc/tests/test_misc.py +0 -2
- maxframe/tensor/misc/transpose.py +8 -4
- maxframe/tensor/misc/trapezoid.py +123 -0
- maxframe/tensor/misc/unique.py +0 -1
- maxframe/tensor/misc/where.py +10 -8
- maxframe/tensor/operators.py +0 -34
- maxframe/tensor/random/__init__.py +3 -5
- maxframe/tensor/random/binomial.py +0 -2
- maxframe/tensor/random/bytes.py +0 -2
- maxframe/tensor/random/chisquare.py +0 -2
- maxframe/tensor/random/choice.py +9 -8
- maxframe/tensor/random/core.py +20 -5
- maxframe/tensor/random/dirichlet.py +0 -2
- maxframe/tensor/random/exponential.py +0 -2
- maxframe/tensor/random/f.py +2 -4
- maxframe/tensor/random/gamma.py +0 -2
- maxframe/tensor/random/geometric.py +0 -2
- maxframe/tensor/random/gumbel.py +0 -2
- maxframe/tensor/random/hypergeometric.py +0 -2
- maxframe/tensor/random/laplace.py +2 -4
- maxframe/tensor/random/logistic.py +0 -2
- maxframe/tensor/random/lognormal.py +0 -2
- maxframe/tensor/random/logseries.py +0 -2
- maxframe/tensor/random/multinomial.py +0 -2
- maxframe/tensor/random/multivariate_normal.py +0 -2
- maxframe/tensor/random/negative_binomial.py +0 -2
- maxframe/tensor/random/noncentral_chisquare.py +0 -2
- maxframe/tensor/random/noncentral_f.py +1 -3
- maxframe/tensor/random/normal.py +0 -2
- maxframe/tensor/random/pareto.py +0 -2
- maxframe/tensor/random/permutation.py +6 -3
- maxframe/tensor/random/poisson.py +0 -2
- maxframe/tensor/random/power.py +0 -2
- maxframe/tensor/random/rand.py +0 -2
- maxframe/tensor/random/randint.py +0 -2
- maxframe/tensor/random/randn.py +0 -2
- maxframe/tensor/random/random_integers.py +0 -2
- maxframe/tensor/random/random_sample.py +0 -2
- maxframe/tensor/random/rayleigh.py +0 -2
- maxframe/tensor/random/standard_cauchy.py +0 -2
- maxframe/tensor/random/standard_exponential.py +0 -2
- maxframe/tensor/random/standard_gamma.py +0 -2
- maxframe/tensor/random/standard_normal.py +0 -2
- maxframe/tensor/random/standard_t.py +0 -2
- maxframe/tensor/random/tests/__init__.py +0 -2
- maxframe/tensor/random/tests/test_random.py +0 -2
- maxframe/tensor/random/triangular.py +0 -2
- maxframe/tensor/random/uniform.py +0 -2
- maxframe/tensor/random/vonmises.py +0 -2
- maxframe/tensor/random/wald.py +0 -2
- maxframe/tensor/random/weibull.py +0 -2
- maxframe/tensor/random/zipf.py +0 -2
- maxframe/tensor/reduction/__init__.py +0 -2
- maxframe/tensor/reduction/all.py +0 -2
- maxframe/tensor/reduction/allclose.py +0 -2
- maxframe/tensor/reduction/any.py +0 -2
- maxframe/tensor/reduction/argmax.py +1 -3
- maxframe/tensor/reduction/argmin.py +1 -3
- maxframe/tensor/reduction/array_equal.py +0 -2
- maxframe/tensor/reduction/core.py +0 -2
- maxframe/tensor/reduction/count_nonzero.py +0 -2
- maxframe/tensor/reduction/cumprod.py +0 -2
- maxframe/tensor/reduction/cumsum.py +0 -2
- maxframe/tensor/reduction/max.py +0 -2
- maxframe/tensor/reduction/mean.py +0 -2
- maxframe/tensor/reduction/min.py +0 -2
- maxframe/tensor/reduction/nanargmax.py +0 -2
- maxframe/tensor/reduction/nanargmin.py +0 -2
- maxframe/tensor/reduction/nancumprod.py +0 -2
- maxframe/tensor/reduction/nancumsum.py +0 -2
- maxframe/tensor/reduction/nanmax.py +0 -2
- maxframe/tensor/reduction/nanmean.py +0 -2
- maxframe/tensor/reduction/nanmin.py +0 -2
- maxframe/tensor/reduction/nanprod.py +0 -2
- maxframe/tensor/reduction/nanstd.py +0 -2
- maxframe/tensor/reduction/nansum.py +0 -2
- maxframe/tensor/reduction/nanvar.py +0 -2
- maxframe/tensor/reduction/prod.py +0 -2
- maxframe/tensor/reduction/std.py +0 -2
- maxframe/tensor/reduction/sum.py +0 -2
- maxframe/tensor/reduction/tests/test_reduction.py +1 -4
- maxframe/tensor/reduction/var.py +0 -2
- maxframe/tensor/reshape/__init__.py +0 -2
- maxframe/tensor/reshape/reshape.py +6 -5
- maxframe/tensor/reshape/tests/__init__.py +0 -2
- maxframe/tensor/reshape/tests/test_reshape.py +0 -2
- maxframe/tensor/sort/__init__.py +16 -0
- maxframe/tensor/sort/argsort.py +150 -0
- maxframe/tensor/sort/sort.py +295 -0
- maxframe/tensor/special/__init__.py +37 -0
- maxframe/tensor/special/core.py +38 -0
- maxframe/tensor/special/misc.py +142 -0
- maxframe/tensor/special/statistical.py +56 -0
- maxframe/tensor/statistics/__init__.py +5 -0
- maxframe/tensor/statistics/average.py +143 -0
- maxframe/tensor/statistics/bincount.py +133 -0
- maxframe/tensor/statistics/quantile.py +10 -8
- maxframe/tensor/ufunc/__init__.py +0 -2
- maxframe/tensor/ufunc/ufunc.py +0 -2
- maxframe/tensor/utils.py +21 -3
- maxframe/tests/test_protocol.py +3 -3
- maxframe/tests/test_utils.py +210 -1
- maxframe/tests/utils.py +67 -1
- maxframe/udf.py +76 -6
- maxframe/utils.py +418 -17
- {maxframe-1.3.0.dist-info → maxframe-2.0.0b1.dist-info}/METADATA +5 -1
- maxframe-2.0.0b1.dist-info/RECORD +939 -0
- maxframe_client/clients/framedriver.py +19 -3
- maxframe_client/fetcher.py +113 -6
- maxframe_client/session/odps.py +173 -38
- maxframe_client/session/task.py +3 -1
- maxframe_client/tests/test_session.py +41 -5
- maxframe-1.3.0.dist-info/RECORD +0 -705
- {maxframe-1.3.0.dist-info → maxframe-2.0.0b1.dist-info}/WHEEL +0 -0
- {maxframe-1.3.0.dist-info → maxframe-2.0.0b1.dist-info}/top_level.txt +0 -0
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
from numbers import Integral
|
|
16
|
-
from typing import Dict
|
|
16
|
+
from typing import Dict, List
|
|
17
17
|
|
|
18
18
|
import numpy as np
|
|
19
19
|
import pandas as pd
|
|
@@ -21,7 +21,7 @@ from pandas.core.dtypes.cast import find_common_type
|
|
|
21
21
|
from pandas.core.indexing import IndexingError
|
|
22
22
|
|
|
23
23
|
from ... import opcodes
|
|
24
|
-
from ...core import ENTITY_TYPE, OutputType
|
|
24
|
+
from ...core import ENTITY_TYPE, EntityData, OutputType
|
|
25
25
|
from ...serialization.serializables import AnyField, KeyField, ListField
|
|
26
26
|
from ...tensor.datasource import asarray
|
|
27
27
|
from ...tensor.utils import calc_sliced_size, filter_inputs
|
|
@@ -182,17 +182,18 @@ class DataFrameLocGetItem(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
182
182
|
def can_index_miss(self):
|
|
183
183
|
return False
|
|
184
184
|
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
185
|
+
@classmethod
|
|
186
|
+
def _set_inputs(cls, op: "DataFrameLocGetItem", inputs: List[EntityData]):
|
|
187
|
+
super()._set_inputs(op, inputs)
|
|
188
|
+
inputs_iter = iter(op._inputs)
|
|
189
|
+
op._input = next(inputs_iter)
|
|
189
190
|
indexes = []
|
|
190
|
-
for index in
|
|
191
|
+
for index in op.indexes:
|
|
191
192
|
if isinstance(index, ENTITY_TYPE):
|
|
192
193
|
indexes.append(next(inputs_iter))
|
|
193
194
|
else:
|
|
194
195
|
indexes.append(index)
|
|
195
|
-
|
|
196
|
+
op.indexes = list(indexes)
|
|
196
197
|
|
|
197
198
|
@classmethod
|
|
198
199
|
def _calc_slice_param(
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from typing import List
|
|
16
|
+
|
|
15
17
|
import numpy as np
|
|
16
18
|
|
|
17
19
|
try:
|
|
@@ -20,7 +22,7 @@ except ImportError: # pragma: no cover
|
|
|
20
22
|
sps = None
|
|
21
23
|
|
|
22
24
|
from ... import opcodes
|
|
23
|
-
from ...core import ENTITY_TYPE
|
|
25
|
+
from ...core import ENTITY_TYPE, EntityData
|
|
24
26
|
from ...serialization.serializables import (
|
|
25
27
|
AnyField,
|
|
26
28
|
BoolField,
|
|
@@ -53,6 +55,7 @@ class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
53
55
|
level = AnyField("level", default=None)
|
|
54
56
|
fill_value = AnyField("fill_value", default=None)
|
|
55
57
|
limit = Int64Field("limit", default=None)
|
|
58
|
+
tolerance = Int64Field("tolerance", default=None)
|
|
56
59
|
enable_sparse = BoolField("enable_sparse", default=None)
|
|
57
60
|
|
|
58
61
|
@property
|
|
@@ -86,14 +89,15 @@ class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
86
89
|
def can_index_miss(self):
|
|
87
90
|
return True
|
|
88
91
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
92
|
+
@classmethod
|
|
93
|
+
def _set_inputs(cls, op: "DataFrameReindex", inputs: List[EntityData]):
|
|
94
|
+
super()._set_inputs(op, inputs)
|
|
95
|
+
inputs_iter = iter(op._inputs)
|
|
96
|
+
op._input = next(inputs_iter)
|
|
97
|
+
if op.index is not None and isinstance(op.index, ENTITY_TYPE):
|
|
98
|
+
op.index = next(inputs_iter)
|
|
99
|
+
if op.fill_value is not None and isinstance(op.fill_value, ENTITY_TYPE):
|
|
100
|
+
op.fill_value = next(inputs_iter)
|
|
97
101
|
|
|
98
102
|
def __call__(self, df_or_series):
|
|
99
103
|
inputs = [df_or_series]
|
|
@@ -137,7 +141,21 @@ class DataFrameReindex(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
137
141
|
)
|
|
138
142
|
|
|
139
143
|
|
|
140
|
-
def reindex(
|
|
144
|
+
def reindex(
|
|
145
|
+
df_or_series,
|
|
146
|
+
labels=None,
|
|
147
|
+
*,
|
|
148
|
+
index=None,
|
|
149
|
+
columns=None,
|
|
150
|
+
axis=None,
|
|
151
|
+
method=None,
|
|
152
|
+
copy=None,
|
|
153
|
+
level=None,
|
|
154
|
+
fill_value=None,
|
|
155
|
+
limit=None,
|
|
156
|
+
tolerance=None,
|
|
157
|
+
enable_sparse=False
|
|
158
|
+
):
|
|
141
159
|
"""
|
|
142
160
|
Conform Series/DataFrame to new index with optional filling logic.
|
|
143
161
|
|
|
@@ -342,26 +360,14 @@ def reindex(df_or_series, *args, **kwargs):
|
|
|
342
360
|
|
|
343
361
|
See the :ref:`user guide <basics.reindexing>` for more.
|
|
344
362
|
"""
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
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
|
-
)
|
|
363
|
+
axes_kwargs = dict(index=index, columns=columns, axis=axis)
|
|
364
|
+
axes = validate_axis_style_args(
|
|
365
|
+
df_or_series,
|
|
366
|
+
(labels,),
|
|
367
|
+
{k: v for k, v in axes_kwargs.items() if v is not None},
|
|
368
|
+
"labels",
|
|
369
|
+
"reindex",
|
|
370
|
+
)
|
|
365
371
|
|
|
366
372
|
if tolerance is not None: # pragma: no cover
|
|
367
373
|
raise NotImplementedError("`tolerance` is not supported yet")
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
from ... import opcodes
|
|
16
16
|
from ...core import OutputType
|
|
17
|
-
from ...serialization.serializables import AnyField, BoolField
|
|
17
|
+
from ...serialization.serializables import AnyField, BoolField, Int32Field
|
|
18
|
+
from ...utils import no_default
|
|
18
19
|
from ..core import DATAFRAME_TYPE
|
|
19
20
|
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
20
21
|
from ..utils import build_df, build_series, parse_index, validate_axis
|
|
@@ -27,6 +28,7 @@ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
27
28
|
columns = AnyField("columns", default=None)
|
|
28
29
|
copy_value = BoolField("copy_value", default=None)
|
|
29
30
|
level = AnyField("level", default=None)
|
|
31
|
+
axis = Int32Field("axis", default=0)
|
|
30
32
|
|
|
31
33
|
@staticmethod
|
|
32
34
|
def _update_params(params, obj, mapper, axis, level):
|
|
@@ -54,7 +56,7 @@ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
54
56
|
else:
|
|
55
57
|
self._output_types = [OutputType.series]
|
|
56
58
|
|
|
57
|
-
if self.
|
|
59
|
+
if self.axis == 0:
|
|
58
60
|
self._update_params(
|
|
59
61
|
params, df_or_series, self.index, axis=0, level=self.level
|
|
60
62
|
)
|
|
@@ -68,21 +70,27 @@ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
68
70
|
|
|
69
71
|
def rename_axis_with_level(
|
|
70
72
|
df_or_series,
|
|
71
|
-
mapper=
|
|
72
|
-
index=
|
|
73
|
-
columns=
|
|
73
|
+
mapper=no_default,
|
|
74
|
+
index=no_default,
|
|
75
|
+
columns=no_default,
|
|
74
76
|
axis=0,
|
|
75
77
|
copy=True,
|
|
76
78
|
level=None,
|
|
77
79
|
inplace=False,
|
|
78
80
|
):
|
|
79
81
|
axis = validate_axis(axis, df_or_series)
|
|
80
|
-
if mapper is not
|
|
82
|
+
if mapper is not no_default:
|
|
81
83
|
if axis == 0:
|
|
82
84
|
index = mapper
|
|
83
85
|
else:
|
|
84
86
|
columns = mapper
|
|
85
|
-
op = DataFrameRenameAxis(
|
|
87
|
+
op = DataFrameRenameAxis(
|
|
88
|
+
index=None if index is no_default else index,
|
|
89
|
+
columns=None if columns is no_default else columns,
|
|
90
|
+
copy_value=copy,
|
|
91
|
+
level=level,
|
|
92
|
+
axis=0 if index is not no_default else 1,
|
|
93
|
+
)
|
|
86
94
|
result = op(df_or_series)
|
|
87
95
|
if not inplace:
|
|
88
96
|
return result
|
|
@@ -92,9 +100,9 @@ def rename_axis_with_level(
|
|
|
92
100
|
|
|
93
101
|
def rename_axis(
|
|
94
102
|
df_or_series,
|
|
95
|
-
mapper=
|
|
96
|
-
index=
|
|
97
|
-
columns=
|
|
103
|
+
mapper=no_default,
|
|
104
|
+
index=no_default,
|
|
105
|
+
columns=no_default,
|
|
98
106
|
axis=0,
|
|
99
107
|
copy=True,
|
|
100
108
|
inplace=False,
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
15
|
import copy
|
|
16
|
+
from typing import List
|
|
16
17
|
|
|
17
18
|
import numpy as np
|
|
18
19
|
|
|
19
20
|
from ... import opcodes
|
|
20
|
-
from ...core import ENTITY_TYPE, get_output_types
|
|
21
|
+
from ...core import ENTITY_TYPE, EntityData, get_output_types
|
|
21
22
|
from ...serialization.serializables import (
|
|
22
23
|
AnyField,
|
|
23
24
|
BoolField,
|
|
@@ -46,23 +47,23 @@ class DataFrameSample(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
46
47
|
random_state = np.random.RandomState(seed)
|
|
47
48
|
super().__init__(random_state=random_state, seed=seed, **kw)
|
|
48
49
|
|
|
49
|
-
|
|
50
|
-
|
|
50
|
+
@classmethod
|
|
51
|
+
def _set_inputs(cls, op: "DataFrameSample", inputs: List[EntityData]):
|
|
52
|
+
super()._set_inputs(op, inputs)
|
|
51
53
|
it = iter(inputs)
|
|
52
54
|
next(it)
|
|
53
|
-
if isinstance(
|
|
54
|
-
|
|
55
|
+
if isinstance(op.weights, ENTITY_TYPE):
|
|
56
|
+
op.weights = next(it)
|
|
55
57
|
|
|
56
58
|
def __call__(self, df):
|
|
57
59
|
params = df.params
|
|
58
60
|
new_shape = list(df.shape)
|
|
59
61
|
|
|
60
|
-
if self.frac is not None and not np.isnan(df.shape[self.axis]):
|
|
61
|
-
self.size = int(self.frac * df.shape[self.axis])
|
|
62
|
-
self.frac = None
|
|
63
|
-
|
|
64
62
|
if self.size is not None:
|
|
65
63
|
new_shape[self.axis] = self.size
|
|
64
|
+
elif self.frac is not None:
|
|
65
|
+
new_shape[self.axis] = np.nan
|
|
66
|
+
|
|
66
67
|
params["shape"] = tuple(new_shape)
|
|
67
68
|
params["index_value"] = parse_index(df.index_value.to_pandas()[:0])
|
|
68
69
|
|
|
@@ -196,6 +197,9 @@ def sample(
|
|
|
196
197
|
falcon 2 2 10
|
|
197
198
|
fish 0 0 8
|
|
198
199
|
"""
|
|
200
|
+
if frac and n:
|
|
201
|
+
raise ValueError("Please enter a value for `frac` OR `n`, not both.")
|
|
202
|
+
|
|
199
203
|
axis = validate_axis(axis or 0, df_or_series)
|
|
200
204
|
if axis == 1:
|
|
201
205
|
raise NotImplementedError("Currently cannot sample over columns")
|
|
@@ -12,11 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from typing import List
|
|
16
|
+
|
|
15
17
|
import numpy as np
|
|
16
18
|
import pandas as pd
|
|
17
19
|
|
|
18
20
|
from ... import opcodes
|
|
19
|
-
from ...core import ENTITY_TYPE, get_output_types
|
|
21
|
+
from ...core import ENTITY_TYPE, EntityData, get_output_types
|
|
20
22
|
from ...serialization.serializables import AnyField, Int8Field, KeyField
|
|
21
23
|
from ..operators import DataFrameOperator, DataFrameOperatorMixin
|
|
22
24
|
from ..utils import parse_index, validate_axis
|
|
@@ -29,11 +31,12 @@ class DataFrameSetAxis(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
29
31
|
axis = Int8Field("axis", default=None)
|
|
30
32
|
value = AnyField("value", default=None)
|
|
31
33
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
@classmethod
|
|
35
|
+
def _set_inputs(cls, op: "DataFrameSetAxis", inputs: List[EntityData]):
|
|
36
|
+
super()._set_inputs(op, inputs)
|
|
37
|
+
op.input = inputs[0]
|
|
38
|
+
if isinstance(op.value, ENTITY_TYPE):
|
|
39
|
+
op.value = inputs[-1]
|
|
37
40
|
|
|
38
41
|
def __call__(self, df_or_series):
|
|
39
42
|
new_size = self.value.shape[0]
|
|
@@ -12,12 +12,14 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from typing import List
|
|
16
|
+
|
|
15
17
|
import numpy as np
|
|
16
18
|
import pandas as pd
|
|
17
19
|
from pandas.api.types import is_list_like
|
|
18
20
|
|
|
19
21
|
from ... import opcodes
|
|
20
|
-
from ...core import OutputType
|
|
22
|
+
from ...core import EntityData, OutputType
|
|
21
23
|
from ...serialization.serializables import AnyField, KeyField
|
|
22
24
|
from ...tensor.core import TENSOR_TYPE
|
|
23
25
|
from ...utils import pd_release_version
|
|
@@ -43,11 +45,12 @@ class DataFrameSetitem(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
43
45
|
if self.output_types is None:
|
|
44
46
|
self.output_types = [OutputType.dataframe]
|
|
45
47
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
@classmethod
|
|
49
|
+
def _set_inputs(cls, op: "DataFrameSetitem", inputs: List[EntityData]):
|
|
50
|
+
super()._set_inputs(op, inputs)
|
|
51
|
+
op.target = op._inputs[0]
|
|
49
52
|
if len(inputs) > 1:
|
|
50
|
-
|
|
53
|
+
op.value = op._inputs[-1]
|
|
51
54
|
|
|
52
55
|
@staticmethod
|
|
53
56
|
def _is_scalar_tensor(t):
|
|
@@ -12,11 +12,13 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from typing import List
|
|
16
|
+
|
|
15
17
|
import numpy as np
|
|
16
18
|
import pandas as pd
|
|
17
19
|
|
|
18
20
|
from ... import opcodes
|
|
19
|
-
from ...core import ENTITY_TYPE
|
|
21
|
+
from ...core import ENTITY_TYPE, EntityData
|
|
20
22
|
from ...serialization.serializables import AnyField, BoolField, Int32Field, StringField
|
|
21
23
|
from ...tensor.utils import filter_inputs
|
|
22
24
|
from ..core import DATAFRAME_TYPE, SERIES_TYPE
|
|
@@ -99,14 +101,15 @@ class DataFrameWhere(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
99
101
|
index_value=df_or_series.index_value,
|
|
100
102
|
)
|
|
101
103
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
104
|
+
@classmethod
|
|
105
|
+
def _set_inputs(cls, op: "DataFrameWhere", inputs: List[EntityData]):
|
|
106
|
+
super()._set_inputs(op, inputs)
|
|
107
|
+
inputs_iter = iter(op._inputs)
|
|
108
|
+
op._input = next(inputs_iter)
|
|
109
|
+
if isinstance(op.cond, ENTITY_TYPE):
|
|
110
|
+
op.cond = next(inputs_iter)
|
|
111
|
+
if isinstance(op.other, ENTITY_TYPE):
|
|
112
|
+
op.other = next(inputs_iter)
|
|
110
113
|
|
|
111
114
|
|
|
112
115
|
_doc_template = """
|
|
@@ -17,7 +17,7 @@ from typing import List, Union
|
|
|
17
17
|
import pandas as pd
|
|
18
18
|
|
|
19
19
|
from ... import opcodes
|
|
20
|
-
from ...core import ENTITY_TYPE, OutputType
|
|
20
|
+
from ...core import ENTITY_TYPE, EntityData, OutputType
|
|
21
21
|
from ...serialization.serializables import (
|
|
22
22
|
AnyField,
|
|
23
23
|
BoolField,
|
|
@@ -256,45 +256,24 @@ class GroupByConcat(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
256
256
|
def groupby_params(self):
|
|
257
257
|
return self._groupby_params
|
|
258
258
|
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
259
|
+
@classmethod
|
|
260
|
+
def _set_inputs(cls, op: "GroupByConcat", inputs: List[EntityData]):
|
|
261
|
+
super()._set_inputs(op, inputs)
|
|
262
|
+
inputs_iter = iter(op._inputs)
|
|
262
263
|
|
|
263
264
|
new_groups = []
|
|
264
|
-
for _ in
|
|
265
|
+
for _ in op._groups:
|
|
265
266
|
new_groups.append(next(inputs_iter))
|
|
266
|
-
|
|
267
|
+
op._groups = new_groups
|
|
267
268
|
|
|
268
|
-
if isinstance(
|
|
269
|
+
if isinstance(op._groupby_params["by"], list):
|
|
269
270
|
by = []
|
|
270
|
-
for v in
|
|
271
|
+
for v in op._groupby_params["by"]:
|
|
271
272
|
if isinstance(v, ENTITY_TYPE):
|
|
272
273
|
by.append(next(inputs_iter))
|
|
273
274
|
else:
|
|
274
275
|
by.append(v)
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
@classmethod
|
|
278
|
-
def execute(cls, ctx, op):
|
|
279
|
-
input_data = [ctx[input.key] for input in op.groups]
|
|
280
|
-
obj = pd.concat([d.obj for d in input_data])
|
|
281
|
-
|
|
282
|
-
params = op.groupby_params.copy()
|
|
283
|
-
if isinstance(params["by"], list):
|
|
284
|
-
by = []
|
|
285
|
-
for v in params["by"]:
|
|
286
|
-
if isinstance(v, ENTITY_TYPE):
|
|
287
|
-
by.append(ctx[v.key])
|
|
288
|
-
else:
|
|
289
|
-
by.append(v)
|
|
290
|
-
params["by"] = by
|
|
291
|
-
selection = params.pop("selection", None)
|
|
292
|
-
|
|
293
|
-
result = obj.groupby(**params)
|
|
294
|
-
if selection:
|
|
295
|
-
result = result[selection]
|
|
296
|
-
|
|
297
|
-
ctx[op.outputs[0].key] = result
|
|
276
|
+
op._groupby_params["by"] = by
|
|
298
277
|
|
|
299
278
|
|
|
300
279
|
def concat(
|
|
@@ -22,13 +22,11 @@ from pandas import Index
|
|
|
22
22
|
|
|
23
23
|
from ... import opcodes
|
|
24
24
|
from ...core import OutputType
|
|
25
|
-
from ...core.operator import MapReduceOperator
|
|
26
25
|
from ...serialization.serializables import (
|
|
27
26
|
AnyField,
|
|
28
27
|
BoolField,
|
|
29
28
|
DictField,
|
|
30
29
|
Int32Field,
|
|
31
|
-
KeyField,
|
|
32
30
|
NamedTupleField,
|
|
33
31
|
Serializable,
|
|
34
32
|
StringField,
|
|
@@ -53,26 +51,6 @@ DEFAULT_BLOOM_FILTER_ON = "large"
|
|
|
53
51
|
|
|
54
52
|
cudf = lazy_import("cudf")
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
class DataFrameMergeAlign(MapReduceOperator, DataFrameOperatorMixin):
|
|
58
|
-
_op_type_ = opcodes.DATAFRAME_SHUFFLE_MERGE_ALIGN
|
|
59
|
-
|
|
60
|
-
index_shuffle_size = Int32Field("index_shuffle_size")
|
|
61
|
-
shuffle_on = AnyField("shuffle_on")
|
|
62
|
-
|
|
63
|
-
input = KeyField("input")
|
|
64
|
-
# for mapper
|
|
65
|
-
mapper_id = Int32Field("mapper_id", default=0)
|
|
66
|
-
|
|
67
|
-
def __init__(self, output_types=None, **kw):
|
|
68
|
-
super().__init__(_output_types=output_types, **kw)
|
|
69
|
-
self._output_types = output_types
|
|
70
|
-
|
|
71
|
-
@property
|
|
72
|
-
def output_limit(self) -> int:
|
|
73
|
-
return len(self.output_types)
|
|
74
|
-
|
|
75
|
-
|
|
76
54
|
MergeSplitInfo = namedtuple("MergeSplitInfo", "split_side, split_index, nsplits")
|
|
77
55
|
|
|
78
56
|
|
|
@@ -300,8 +278,8 @@ class DataFrameMerge(DataFrameOperator, DataFrameOperatorMixin):
|
|
|
300
278
|
left_hint = AnyField("left_hint", default=None)
|
|
301
279
|
right_hint = AnyField("right_hint", default=None)
|
|
302
280
|
|
|
303
|
-
def __init__(self, copy=None, **kwargs):
|
|
304
|
-
super().__init__(copy_=copy, **kwargs)
|
|
281
|
+
def __init__(self, copy=None, output_types=None, **kwargs):
|
|
282
|
+
super().__init__(copy_=copy, _output_types=output_types, **kwargs)
|
|
305
283
|
|
|
306
284
|
def __call__(self, left, right):
|
|
307
285
|
empty_left, empty_right = build_df(left), build_df(right)
|
|
@@ -38,8 +38,10 @@ from .map import index_map, series_map
|
|
|
38
38
|
from .melt import melt
|
|
39
39
|
from .memory_usage import df_memory_usage, index_memory_usage, series_memory_usage
|
|
40
40
|
from .pct_change import pct_change
|
|
41
|
+
from .pivot import pivot
|
|
41
42
|
from .pivot_table import pivot_table
|
|
42
43
|
from .qcut import qcut
|
|
44
|
+
from .rechunk import rechunk
|
|
43
45
|
from .select_dtypes import select_dtypes
|
|
44
46
|
from .shift import shift, tshift
|
|
45
47
|
from .stack import stack
|
|
@@ -68,9 +70,11 @@ def _install():
|
|
|
68
70
|
setattr(t, "melt", melt)
|
|
69
71
|
setattr(t, "memory_usage", df_memory_usage)
|
|
70
72
|
setattr(t, "pct_change", pct_change)
|
|
73
|
+
setattr(t, "pivot", pivot)
|
|
71
74
|
setattr(t, "pivot_table", pivot_table)
|
|
72
75
|
setattr(t, "pop", df_pop)
|
|
73
76
|
setattr(t, "query", df_query)
|
|
77
|
+
setattr(t, "rechunk", rechunk)
|
|
74
78
|
setattr(t, "select_dtypes", select_dtypes)
|
|
75
79
|
setattr(t, "shift", shift)
|
|
76
80
|
setattr(t, "stack", stack)
|
|
@@ -96,6 +100,7 @@ def _install():
|
|
|
96
100
|
setattr(t, "map", series_map)
|
|
97
101
|
setattr(t, "memory_usage", series_memory_usage)
|
|
98
102
|
setattr(t, "pct_change", pct_change)
|
|
103
|
+
setattr(t, "rechunk", rechunk)
|
|
99
104
|
setattr(t, "shift", shift)
|
|
100
105
|
setattr(t, "transform", series_transform)
|
|
101
106
|
setattr(t, "tshift", tshift)
|
|
@@ -112,6 +117,7 @@ def _install():
|
|
|
112
117
|
setattr(t, "is_monotonic_decreasing", property(fget=is_monotonic_decreasing))
|
|
113
118
|
setattr(t, "map", index_map)
|
|
114
119
|
setattr(t, "memory_usage", index_memory_usage)
|
|
120
|
+
setattr(t, "rechunk", rechunk)
|
|
115
121
|
setattr(t, "value_counts", value_counts)
|
|
116
122
|
|
|
117
123
|
|
|
@@ -12,9 +12,12 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
+
from typing import List
|
|
16
|
+
|
|
15
17
|
import pandas as pd
|
|
16
18
|
from pandas.api.types import is_list_like
|
|
17
19
|
|
|
20
|
+
from ...core import EntityData
|
|
18
21
|
from ...core.operator import MapReduceOperator
|
|
19
22
|
from ...serialization.serializables import AnyField, KeyField, StringField
|
|
20
23
|
from ..operators import DataFrameOperatorMixin
|
|
@@ -26,9 +29,10 @@ class DuplicateOperand(MapReduceOperator, DataFrameOperatorMixin):
|
|
|
26
29
|
keep = AnyField("keep", default="first")
|
|
27
30
|
method = StringField("method", default=None)
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
+
@classmethod
|
|
33
|
+
def _set_inputs(cls, op: "DuplicateOperand", inputs: List[EntityData]):
|
|
34
|
+
super()._set_inputs(op, inputs)
|
|
35
|
+
op.input = op._inputs[0]
|
|
32
36
|
|
|
33
37
|
|
|
34
38
|
def validate_subset(df, subset):
|