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.

Files changed (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-311-darwin.so +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyx +547 -0
  5. maxframe/codegen.py +528 -0
  6. maxframe/config/__init__.py +15 -0
  7. maxframe/config/config.py +443 -0
  8. maxframe/config/tests/__init__.py +13 -0
  9. maxframe/config/tests/test_config.py +103 -0
  10. maxframe/config/tests/test_validators.py +34 -0
  11. maxframe/config/validators.py +57 -0
  12. maxframe/conftest.py +139 -0
  13. maxframe/core/__init__.py +65 -0
  14. maxframe/core/base.py +156 -0
  15. maxframe/core/entity/__init__.py +44 -0
  16. maxframe/core/entity/chunks.py +68 -0
  17. maxframe/core/entity/core.py +152 -0
  18. maxframe/core/entity/executable.py +337 -0
  19. maxframe/core/entity/fuse.py +73 -0
  20. maxframe/core/entity/objects.py +100 -0
  21. maxframe/core/entity/output_types.py +90 -0
  22. maxframe/core/entity/tileables.py +438 -0
  23. maxframe/core/entity/utils.py +24 -0
  24. maxframe/core/graph/__init__.py +17 -0
  25. maxframe/core/graph/builder/__init__.py +16 -0
  26. maxframe/core/graph/builder/base.py +86 -0
  27. maxframe/core/graph/builder/chunk.py +430 -0
  28. maxframe/core/graph/builder/tileable.py +34 -0
  29. maxframe/core/graph/builder/utils.py +41 -0
  30. maxframe/core/graph/core.cpython-311-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +467 -0
  32. maxframe/core/graph/entity.py +171 -0
  33. maxframe/core/graph/tests/__init__.py +13 -0
  34. maxframe/core/graph/tests/test_graph.py +205 -0
  35. maxframe/core/mode.py +96 -0
  36. maxframe/core/operator/__init__.py +34 -0
  37. maxframe/core/operator/base.py +450 -0
  38. maxframe/core/operator/core.py +276 -0
  39. maxframe/core/operator/fetch.py +53 -0
  40. maxframe/core/operator/fuse.py +29 -0
  41. maxframe/core/operator/objects.py +72 -0
  42. maxframe/core/operator/shuffle.py +111 -0
  43. maxframe/core/operator/tests/__init__.py +13 -0
  44. maxframe/core/operator/tests/test_core.py +64 -0
  45. maxframe/core/tests/__init__.py +13 -0
  46. maxframe/core/tests/test_mode.py +75 -0
  47. maxframe/dataframe/__init__.py +81 -0
  48. maxframe/dataframe/arithmetic/__init__.py +359 -0
  49. maxframe/dataframe/arithmetic/abs.py +33 -0
  50. maxframe/dataframe/arithmetic/add.py +60 -0
  51. maxframe/dataframe/arithmetic/arccos.py +28 -0
  52. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  53. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  54. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  55. maxframe/dataframe/arithmetic/arctan.py +28 -0
  56. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  57. maxframe/dataframe/arithmetic/around.py +152 -0
  58. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  59. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  60. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  61. maxframe/dataframe/arithmetic/ceil.py +28 -0
  62. maxframe/dataframe/arithmetic/core.py +342 -0
  63. maxframe/dataframe/arithmetic/cos.py +28 -0
  64. maxframe/dataframe/arithmetic/cosh.py +28 -0
  65. maxframe/dataframe/arithmetic/degrees.py +28 -0
  66. maxframe/dataframe/arithmetic/docstring.py +442 -0
  67. maxframe/dataframe/arithmetic/equal.py +56 -0
  68. maxframe/dataframe/arithmetic/exp.py +28 -0
  69. maxframe/dataframe/arithmetic/exp2.py +28 -0
  70. maxframe/dataframe/arithmetic/expm1.py +28 -0
  71. maxframe/dataframe/arithmetic/floor.py +28 -0
  72. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  73. maxframe/dataframe/arithmetic/greater.py +57 -0
  74. maxframe/dataframe/arithmetic/greater_equal.py +57 -0
  75. maxframe/dataframe/arithmetic/invert.py +33 -0
  76. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  77. maxframe/dataframe/arithmetic/less.py +57 -0
  78. maxframe/dataframe/arithmetic/less_equal.py +57 -0
  79. maxframe/dataframe/arithmetic/log.py +28 -0
  80. maxframe/dataframe/arithmetic/log10.py +28 -0
  81. maxframe/dataframe/arithmetic/log2.py +28 -0
  82. maxframe/dataframe/arithmetic/mod.py +60 -0
  83. maxframe/dataframe/arithmetic/multiply.py +60 -0
  84. maxframe/dataframe/arithmetic/negative.py +33 -0
  85. maxframe/dataframe/arithmetic/not_equal.py +56 -0
  86. maxframe/dataframe/arithmetic/power.py +68 -0
  87. maxframe/dataframe/arithmetic/radians.py +28 -0
  88. maxframe/dataframe/arithmetic/sin.py +28 -0
  89. maxframe/dataframe/arithmetic/sinh.py +28 -0
  90. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  91. maxframe/dataframe/arithmetic/subtract.py +64 -0
  92. maxframe/dataframe/arithmetic/tan.py +28 -0
  93. maxframe/dataframe/arithmetic/tanh.py +28 -0
  94. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  95. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
  96. maxframe/dataframe/arithmetic/truediv.py +64 -0
  97. maxframe/dataframe/arithmetic/trunc.py +28 -0
  98. maxframe/dataframe/arrays.py +864 -0
  99. maxframe/dataframe/core.py +2417 -0
  100. maxframe/dataframe/datasource/__init__.py +15 -0
  101. maxframe/dataframe/datasource/core.py +81 -0
  102. maxframe/dataframe/datasource/dataframe.py +59 -0
  103. maxframe/dataframe/datasource/date_range.py +504 -0
  104. maxframe/dataframe/datasource/from_index.py +54 -0
  105. maxframe/dataframe/datasource/from_records.py +107 -0
  106. maxframe/dataframe/datasource/from_tensor.py +419 -0
  107. maxframe/dataframe/datasource/index.py +117 -0
  108. maxframe/dataframe/datasource/read_csv.py +528 -0
  109. maxframe/dataframe/datasource/read_odps_query.py +299 -0
  110. maxframe/dataframe/datasource/read_odps_table.py +253 -0
  111. maxframe/dataframe/datasource/read_parquet.py +421 -0
  112. maxframe/dataframe/datasource/series.py +55 -0
  113. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  114. maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
  115. maxframe/dataframe/datastore/__init__.py +26 -0
  116. maxframe/dataframe/datastore/core.py +19 -0
  117. maxframe/dataframe/datastore/to_csv.py +227 -0
  118. maxframe/dataframe/datastore/to_odps.py +162 -0
  119. maxframe/dataframe/extensions/__init__.py +41 -0
  120. maxframe/dataframe/extensions/accessor.py +50 -0
  121. maxframe/dataframe/extensions/reshuffle.py +83 -0
  122. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  123. maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
  124. maxframe/dataframe/fetch/__init__.py +15 -0
  125. maxframe/dataframe/fetch/core.py +86 -0
  126. maxframe/dataframe/groupby/__init__.py +82 -0
  127. maxframe/dataframe/groupby/aggregation.py +350 -0
  128. maxframe/dataframe/groupby/apply.py +251 -0
  129. maxframe/dataframe/groupby/core.py +179 -0
  130. maxframe/dataframe/groupby/cum.py +124 -0
  131. maxframe/dataframe/groupby/fill.py +141 -0
  132. maxframe/dataframe/groupby/getitem.py +92 -0
  133. maxframe/dataframe/groupby/head.py +105 -0
  134. maxframe/dataframe/groupby/sample.py +214 -0
  135. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  136. maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
  137. maxframe/dataframe/groupby/transform.py +255 -0
  138. maxframe/dataframe/indexing/__init__.py +84 -0
  139. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  140. maxframe/dataframe/indexing/align.py +349 -0
  141. maxframe/dataframe/indexing/at.py +83 -0
  142. maxframe/dataframe/indexing/getitem.py +204 -0
  143. maxframe/dataframe/indexing/iat.py +37 -0
  144. maxframe/dataframe/indexing/iloc.py +566 -0
  145. maxframe/dataframe/indexing/insert.py +86 -0
  146. maxframe/dataframe/indexing/loc.py +411 -0
  147. maxframe/dataframe/indexing/reindex.py +526 -0
  148. maxframe/dataframe/indexing/rename.py +462 -0
  149. maxframe/dataframe/indexing/rename_axis.py +209 -0
  150. maxframe/dataframe/indexing/reset_index.py +402 -0
  151. maxframe/dataframe/indexing/sample.py +221 -0
  152. maxframe/dataframe/indexing/set_axis.py +194 -0
  153. maxframe/dataframe/indexing/set_index.py +61 -0
  154. maxframe/dataframe/indexing/setitem.py +130 -0
  155. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  156. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  157. maxframe/dataframe/indexing/where.py +308 -0
  158. maxframe/dataframe/initializer.py +288 -0
  159. maxframe/dataframe/merge/__init__.py +32 -0
  160. maxframe/dataframe/merge/append.py +121 -0
  161. maxframe/dataframe/merge/concat.py +325 -0
  162. maxframe/dataframe/merge/merge.py +593 -0
  163. maxframe/dataframe/merge/tests/__init__.py +13 -0
  164. maxframe/dataframe/merge/tests/test_merge.py +215 -0
  165. maxframe/dataframe/misc/__init__.py +134 -0
  166. maxframe/dataframe/misc/_duplicate.py +46 -0
  167. maxframe/dataframe/misc/accessor.py +276 -0
  168. maxframe/dataframe/misc/apply.py +692 -0
  169. maxframe/dataframe/misc/astype.py +236 -0
  170. maxframe/dataframe/misc/case_when.py +141 -0
  171. maxframe/dataframe/misc/check_monotonic.py +84 -0
  172. maxframe/dataframe/misc/cut.py +383 -0
  173. maxframe/dataframe/misc/datetimes.py +79 -0
  174. maxframe/dataframe/misc/describe.py +108 -0
  175. maxframe/dataframe/misc/diff.py +210 -0
  176. maxframe/dataframe/misc/drop.py +440 -0
  177. maxframe/dataframe/misc/drop_duplicates.py +248 -0
  178. maxframe/dataframe/misc/duplicated.py +292 -0
  179. maxframe/dataframe/misc/eval.py +728 -0
  180. maxframe/dataframe/misc/explode.py +171 -0
  181. maxframe/dataframe/misc/get_dummies.py +208 -0
  182. maxframe/dataframe/misc/isin.py +217 -0
  183. maxframe/dataframe/misc/map.py +236 -0
  184. maxframe/dataframe/misc/melt.py +162 -0
  185. maxframe/dataframe/misc/memory_usage.py +248 -0
  186. maxframe/dataframe/misc/pct_change.py +150 -0
  187. maxframe/dataframe/misc/pivot_table.py +262 -0
  188. maxframe/dataframe/misc/qcut.py +104 -0
  189. maxframe/dataframe/misc/select_dtypes.py +104 -0
  190. maxframe/dataframe/misc/shift.py +256 -0
  191. maxframe/dataframe/misc/stack.py +238 -0
  192. maxframe/dataframe/misc/string_.py +221 -0
  193. maxframe/dataframe/misc/tests/__init__.py +13 -0
  194. maxframe/dataframe/misc/tests/test_misc.py +468 -0
  195. maxframe/dataframe/misc/to_numeric.py +178 -0
  196. maxframe/dataframe/misc/transform.py +361 -0
  197. maxframe/dataframe/misc/transpose.py +136 -0
  198. maxframe/dataframe/misc/value_counts.py +182 -0
  199. maxframe/dataframe/missing/__init__.py +53 -0
  200. maxframe/dataframe/missing/checkna.py +223 -0
  201. maxframe/dataframe/missing/dropna.py +280 -0
  202. maxframe/dataframe/missing/fillna.py +275 -0
  203. maxframe/dataframe/missing/replace.py +439 -0
  204. maxframe/dataframe/missing/tests/__init__.py +13 -0
  205. maxframe/dataframe/missing/tests/test_missing.py +89 -0
  206. maxframe/dataframe/operators.py +273 -0
  207. maxframe/dataframe/plotting/__init__.py +40 -0
  208. maxframe/dataframe/plotting/core.py +78 -0
  209. maxframe/dataframe/plotting/tests/__init__.py +13 -0
  210. maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
  211. maxframe/dataframe/reduction/__init__.py +107 -0
  212. maxframe/dataframe/reduction/aggregation.py +344 -0
  213. maxframe/dataframe/reduction/all.py +78 -0
  214. maxframe/dataframe/reduction/any.py +78 -0
  215. maxframe/dataframe/reduction/core.py +837 -0
  216. maxframe/dataframe/reduction/count.py +59 -0
  217. maxframe/dataframe/reduction/cummax.py +30 -0
  218. maxframe/dataframe/reduction/cummin.py +30 -0
  219. maxframe/dataframe/reduction/cumprod.py +30 -0
  220. maxframe/dataframe/reduction/cumsum.py +30 -0
  221. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  222. maxframe/dataframe/reduction/kurtosis.py +104 -0
  223. maxframe/dataframe/reduction/max.py +65 -0
  224. maxframe/dataframe/reduction/mean.py +61 -0
  225. maxframe/dataframe/reduction/min.py +65 -0
  226. maxframe/dataframe/reduction/nunique.py +141 -0
  227. maxframe/dataframe/reduction/prod.py +76 -0
  228. maxframe/dataframe/reduction/reduction_size.py +36 -0
  229. maxframe/dataframe/reduction/sem.py +69 -0
  230. maxframe/dataframe/reduction/skew.py +89 -0
  231. maxframe/dataframe/reduction/std.py +53 -0
  232. maxframe/dataframe/reduction/str_concat.py +48 -0
  233. maxframe/dataframe/reduction/sum.py +77 -0
  234. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  235. maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
  236. maxframe/dataframe/reduction/unique.py +90 -0
  237. maxframe/dataframe/reduction/var.py +72 -0
  238. maxframe/dataframe/sort/__init__.py +34 -0
  239. maxframe/dataframe/sort/core.py +36 -0
  240. maxframe/dataframe/sort/sort_index.py +153 -0
  241. maxframe/dataframe/sort/sort_values.py +311 -0
  242. maxframe/dataframe/sort/tests/__init__.py +13 -0
  243. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  244. maxframe/dataframe/statistics/__init__.py +33 -0
  245. maxframe/dataframe/statistics/corr.py +280 -0
  246. maxframe/dataframe/statistics/quantile.py +341 -0
  247. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  248. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  249. maxframe/dataframe/tests/__init__.py +13 -0
  250. maxframe/dataframe/tests/test_initializer.py +29 -0
  251. maxframe/dataframe/tseries/__init__.py +13 -0
  252. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  253. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  254. maxframe/dataframe/tseries/to_datetime.py +297 -0
  255. maxframe/dataframe/ufunc/__init__.py +27 -0
  256. maxframe/dataframe/ufunc/tensor.py +54 -0
  257. maxframe/dataframe/ufunc/ufunc.py +52 -0
  258. maxframe/dataframe/utils.py +1267 -0
  259. maxframe/dataframe/window/__init__.py +29 -0
  260. maxframe/dataframe/window/aggregation.py +96 -0
  261. maxframe/dataframe/window/core.py +69 -0
  262. maxframe/dataframe/window/ewm.py +249 -0
  263. maxframe/dataframe/window/expanding.py +147 -0
  264. maxframe/dataframe/window/rolling.py +376 -0
  265. maxframe/dataframe/window/tests/__init__.py +13 -0
  266. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  267. maxframe/dataframe/window/tests/test_expanding.py +66 -0
  268. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  269. maxframe/env.py +33 -0
  270. maxframe/errors.py +21 -0
  271. maxframe/extension.py +81 -0
  272. maxframe/learn/__init__.py +17 -0
  273. maxframe/learn/contrib/__init__.py +17 -0
  274. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  275. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  276. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  277. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  278. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  279. maxframe/learn/contrib/utils.py +52 -0
  280. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  281. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  282. maxframe/learn/contrib/xgboost/core.py +156 -0
  283. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  284. maxframe/learn/contrib/xgboost/predict.py +138 -0
  285. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  286. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  287. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  288. maxframe/learn/contrib/xgboost/train.py +121 -0
  289. maxframe/learn/utils/__init__.py +15 -0
  290. maxframe/learn/utils/core.py +29 -0
  291. maxframe/lib/__init__.py +15 -0
  292. maxframe/lib/aio/__init__.py +27 -0
  293. maxframe/lib/aio/_runners.py +162 -0
  294. maxframe/lib/aio/_threads.py +35 -0
  295. maxframe/lib/aio/base.py +82 -0
  296. maxframe/lib/aio/file.py +85 -0
  297. maxframe/lib/aio/isolation.py +100 -0
  298. maxframe/lib/aio/lru.py +242 -0
  299. maxframe/lib/aio/parallelism.py +37 -0
  300. maxframe/lib/aio/tests/__init__.py +13 -0
  301. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  302. maxframe/lib/compression.py +55 -0
  303. maxframe/lib/cython/__init__.py +13 -0
  304. maxframe/lib/cython/libcpp.pxd +30 -0
  305. maxframe/lib/filesystem/__init__.py +21 -0
  306. maxframe/lib/filesystem/_glob.py +173 -0
  307. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  308. maxframe/lib/filesystem/_oss_lib/common.py +198 -0
  309. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  310. maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
  311. maxframe/lib/filesystem/arrow.py +236 -0
  312. maxframe/lib/filesystem/base.py +263 -0
  313. maxframe/lib/filesystem/core.py +95 -0
  314. maxframe/lib/filesystem/fsmap.py +164 -0
  315. maxframe/lib/filesystem/hdfs.py +31 -0
  316. maxframe/lib/filesystem/local.py +112 -0
  317. maxframe/lib/filesystem/oss.py +157 -0
  318. maxframe/lib/filesystem/tests/__init__.py +13 -0
  319. maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
  320. maxframe/lib/filesystem/tests/test_oss.py +182 -0
  321. maxframe/lib/functools_compat.py +81 -0
  322. maxframe/lib/mmh3.cpython-311-darwin.so +0 -0
  323. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  324. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  325. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  326. maxframe/lib/sparse/__init__.py +861 -0
  327. maxframe/lib/sparse/array.py +1604 -0
  328. maxframe/lib/sparse/core.py +92 -0
  329. maxframe/lib/sparse/matrix.py +241 -0
  330. maxframe/lib/sparse/tests/__init__.py +15 -0
  331. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  332. maxframe/lib/sparse/vector.py +150 -0
  333. maxframe/lib/tblib/LICENSE +20 -0
  334. maxframe/lib/tblib/__init__.py +327 -0
  335. maxframe/lib/tblib/cpython.py +83 -0
  336. maxframe/lib/tblib/decorators.py +44 -0
  337. maxframe/lib/tblib/pickling_support.py +90 -0
  338. maxframe/lib/tests/__init__.py +13 -0
  339. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  340. maxframe/lib/version.py +620 -0
  341. maxframe/lib/wrapped_pickle.py +139 -0
  342. maxframe/mixin.py +100 -0
  343. maxframe/odpsio/__init__.py +21 -0
  344. maxframe/odpsio/arrow.py +91 -0
  345. maxframe/odpsio/schema.py +364 -0
  346. maxframe/odpsio/tableio.py +322 -0
  347. maxframe/odpsio/tests/__init__.py +13 -0
  348. maxframe/odpsio/tests/test_arrow.py +88 -0
  349. maxframe/odpsio/tests/test_schema.py +297 -0
  350. maxframe/odpsio/tests/test_tableio.py +136 -0
  351. maxframe/odpsio/tests/test_volumeio.py +90 -0
  352. maxframe/odpsio/volumeio.py +95 -0
  353. maxframe/opcodes.py +590 -0
  354. maxframe/protocol.py +415 -0
  355. maxframe/remote/__init__.py +18 -0
  356. maxframe/remote/core.py +210 -0
  357. maxframe/remote/run_script.py +121 -0
  358. maxframe/serialization/__init__.py +26 -0
  359. maxframe/serialization/arrow.py +95 -0
  360. maxframe/serialization/core.cpython-311-darwin.so +0 -0
  361. maxframe/serialization/core.pxd +44 -0
  362. maxframe/serialization/core.pyi +61 -0
  363. maxframe/serialization/core.pyx +1094 -0
  364. maxframe/serialization/exception.py +86 -0
  365. maxframe/serialization/maxframe_objects.py +39 -0
  366. maxframe/serialization/numpy.py +91 -0
  367. maxframe/serialization/pandas.py +202 -0
  368. maxframe/serialization/scipy.py +71 -0
  369. maxframe/serialization/serializables/__init__.py +55 -0
  370. maxframe/serialization/serializables/core.py +262 -0
  371. maxframe/serialization/serializables/field.py +624 -0
  372. maxframe/serialization/serializables/field_type.py +589 -0
  373. maxframe/serialization/serializables/tests/__init__.py +13 -0
  374. maxframe/serialization/serializables/tests/test_field_type.py +121 -0
  375. maxframe/serialization/serializables/tests/test_serializable.py +250 -0
  376. maxframe/serialization/tests/__init__.py +13 -0
  377. maxframe/serialization/tests/test_serial.py +412 -0
  378. maxframe/session.py +1310 -0
  379. maxframe/tensor/__init__.py +183 -0
  380. maxframe/tensor/arithmetic/__init__.py +315 -0
  381. maxframe/tensor/arithmetic/abs.py +68 -0
  382. maxframe/tensor/arithmetic/absolute.py +68 -0
  383. maxframe/tensor/arithmetic/add.py +82 -0
  384. maxframe/tensor/arithmetic/angle.py +72 -0
  385. maxframe/tensor/arithmetic/arccos.py +104 -0
  386. maxframe/tensor/arithmetic/arccosh.py +91 -0
  387. maxframe/tensor/arithmetic/arcsin.py +94 -0
  388. maxframe/tensor/arithmetic/arcsinh.py +86 -0
  389. maxframe/tensor/arithmetic/arctan.py +106 -0
  390. maxframe/tensor/arithmetic/arctan2.py +128 -0
  391. maxframe/tensor/arithmetic/arctanh.py +86 -0
  392. maxframe/tensor/arithmetic/around.py +114 -0
  393. maxframe/tensor/arithmetic/bitand.py +95 -0
  394. maxframe/tensor/arithmetic/bitor.py +102 -0
  395. maxframe/tensor/arithmetic/bitxor.py +95 -0
  396. maxframe/tensor/arithmetic/cbrt.py +66 -0
  397. maxframe/tensor/arithmetic/ceil.py +71 -0
  398. maxframe/tensor/arithmetic/clip.py +165 -0
  399. maxframe/tensor/arithmetic/conj.py +74 -0
  400. maxframe/tensor/arithmetic/copysign.py +78 -0
  401. maxframe/tensor/arithmetic/core.py +544 -0
  402. maxframe/tensor/arithmetic/cos.py +85 -0
  403. maxframe/tensor/arithmetic/cosh.py +72 -0
  404. maxframe/tensor/arithmetic/deg2rad.py +72 -0
  405. maxframe/tensor/arithmetic/degrees.py +77 -0
  406. maxframe/tensor/arithmetic/divide.py +114 -0
  407. maxframe/tensor/arithmetic/equal.py +76 -0
  408. maxframe/tensor/arithmetic/exp.py +106 -0
  409. maxframe/tensor/arithmetic/exp2.py +67 -0
  410. maxframe/tensor/arithmetic/expm1.py +79 -0
  411. maxframe/tensor/arithmetic/fabs.py +74 -0
  412. maxframe/tensor/arithmetic/fix.py +69 -0
  413. maxframe/tensor/arithmetic/float_power.py +103 -0
  414. maxframe/tensor/arithmetic/floor.py +77 -0
  415. maxframe/tensor/arithmetic/floordiv.py +94 -0
  416. maxframe/tensor/arithmetic/fmax.py +105 -0
  417. maxframe/tensor/arithmetic/fmin.py +106 -0
  418. maxframe/tensor/arithmetic/fmod.py +99 -0
  419. maxframe/tensor/arithmetic/frexp.py +92 -0
  420. maxframe/tensor/arithmetic/greater.py +77 -0
  421. maxframe/tensor/arithmetic/greater_equal.py +69 -0
  422. maxframe/tensor/arithmetic/hypot.py +77 -0
  423. maxframe/tensor/arithmetic/i0.py +89 -0
  424. maxframe/tensor/arithmetic/imag.py +67 -0
  425. maxframe/tensor/arithmetic/invert.py +110 -0
  426. maxframe/tensor/arithmetic/isclose.py +115 -0
  427. maxframe/tensor/arithmetic/iscomplex.py +64 -0
  428. maxframe/tensor/arithmetic/isfinite.py +106 -0
  429. maxframe/tensor/arithmetic/isinf.py +103 -0
  430. maxframe/tensor/arithmetic/isnan.py +82 -0
  431. maxframe/tensor/arithmetic/isreal.py +63 -0
  432. maxframe/tensor/arithmetic/ldexp.py +99 -0
  433. maxframe/tensor/arithmetic/less.py +69 -0
  434. maxframe/tensor/arithmetic/less_equal.py +69 -0
  435. maxframe/tensor/arithmetic/log.py +92 -0
  436. maxframe/tensor/arithmetic/log10.py +85 -0
  437. maxframe/tensor/arithmetic/log1p.py +95 -0
  438. maxframe/tensor/arithmetic/log2.py +85 -0
  439. maxframe/tensor/arithmetic/logaddexp.py +80 -0
  440. maxframe/tensor/arithmetic/logaddexp2.py +78 -0
  441. maxframe/tensor/arithmetic/logical_and.py +81 -0
  442. maxframe/tensor/arithmetic/logical_not.py +74 -0
  443. maxframe/tensor/arithmetic/logical_or.py +82 -0
  444. maxframe/tensor/arithmetic/logical_xor.py +88 -0
  445. maxframe/tensor/arithmetic/lshift.py +82 -0
  446. maxframe/tensor/arithmetic/maximum.py +108 -0
  447. maxframe/tensor/arithmetic/minimum.py +108 -0
  448. maxframe/tensor/arithmetic/mod.py +104 -0
  449. maxframe/tensor/arithmetic/modf.py +83 -0
  450. maxframe/tensor/arithmetic/multiply.py +81 -0
  451. maxframe/tensor/arithmetic/nan_to_num.py +99 -0
  452. maxframe/tensor/arithmetic/negative.py +65 -0
  453. maxframe/tensor/arithmetic/nextafter.py +68 -0
  454. maxframe/tensor/arithmetic/not_equal.py +72 -0
  455. maxframe/tensor/arithmetic/positive.py +47 -0
  456. maxframe/tensor/arithmetic/power.py +106 -0
  457. maxframe/tensor/arithmetic/rad2deg.py +71 -0
  458. maxframe/tensor/arithmetic/radians.py +77 -0
  459. maxframe/tensor/arithmetic/real.py +70 -0
  460. maxframe/tensor/arithmetic/reciprocal.py +76 -0
  461. maxframe/tensor/arithmetic/rint.py +68 -0
  462. maxframe/tensor/arithmetic/rshift.py +81 -0
  463. maxframe/tensor/arithmetic/setimag.py +29 -0
  464. maxframe/tensor/arithmetic/setreal.py +29 -0
  465. maxframe/tensor/arithmetic/sign.py +81 -0
  466. maxframe/tensor/arithmetic/signbit.py +65 -0
  467. maxframe/tensor/arithmetic/sin.py +98 -0
  468. maxframe/tensor/arithmetic/sinc.py +102 -0
  469. maxframe/tensor/arithmetic/sinh.py +93 -0
  470. maxframe/tensor/arithmetic/spacing.py +72 -0
  471. maxframe/tensor/arithmetic/sqrt.py +81 -0
  472. maxframe/tensor/arithmetic/square.py +69 -0
  473. maxframe/tensor/arithmetic/subtract.py +81 -0
  474. maxframe/tensor/arithmetic/tan.py +88 -0
  475. maxframe/tensor/arithmetic/tanh.py +92 -0
  476. maxframe/tensor/arithmetic/tests/__init__.py +15 -0
  477. maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
  478. maxframe/tensor/arithmetic/truediv.py +104 -0
  479. maxframe/tensor/arithmetic/trunc.py +72 -0
  480. maxframe/tensor/arithmetic/utils.py +65 -0
  481. maxframe/tensor/array_utils.py +186 -0
  482. maxframe/tensor/base/__init__.py +34 -0
  483. maxframe/tensor/base/astype.py +119 -0
  484. maxframe/tensor/base/atleast_1d.py +74 -0
  485. maxframe/tensor/base/broadcast_to.py +89 -0
  486. maxframe/tensor/base/ravel.py +92 -0
  487. maxframe/tensor/base/tests/__init__.py +13 -0
  488. maxframe/tensor/base/tests/test_base.py +114 -0
  489. maxframe/tensor/base/transpose.py +125 -0
  490. maxframe/tensor/base/unique.py +205 -0
  491. maxframe/tensor/base/where.py +127 -0
  492. maxframe/tensor/core.py +724 -0
  493. maxframe/tensor/datasource/__init__.py +32 -0
  494. maxframe/tensor/datasource/arange.py +156 -0
  495. maxframe/tensor/datasource/array.py +415 -0
  496. maxframe/tensor/datasource/core.py +109 -0
  497. maxframe/tensor/datasource/empty.py +169 -0
  498. maxframe/tensor/datasource/from_dataframe.py +70 -0
  499. maxframe/tensor/datasource/from_dense.py +54 -0
  500. maxframe/tensor/datasource/from_sparse.py +47 -0
  501. maxframe/tensor/datasource/full.py +186 -0
  502. maxframe/tensor/datasource/ones.py +173 -0
  503. maxframe/tensor/datasource/scalar.py +40 -0
  504. maxframe/tensor/datasource/tests/__init__.py +13 -0
  505. maxframe/tensor/datasource/tests/test_datasource.py +278 -0
  506. maxframe/tensor/datasource/zeros.py +188 -0
  507. maxframe/tensor/fetch/__init__.py +15 -0
  508. maxframe/tensor/fetch/core.py +54 -0
  509. maxframe/tensor/indexing/__init__.py +47 -0
  510. maxframe/tensor/indexing/choose.py +196 -0
  511. maxframe/tensor/indexing/compress.py +124 -0
  512. maxframe/tensor/indexing/core.py +190 -0
  513. maxframe/tensor/indexing/extract.py +71 -0
  514. maxframe/tensor/indexing/fill_diagonal.py +183 -0
  515. maxframe/tensor/indexing/flatnonzero.py +60 -0
  516. maxframe/tensor/indexing/getitem.py +175 -0
  517. maxframe/tensor/indexing/nonzero.py +120 -0
  518. maxframe/tensor/indexing/setitem.py +132 -0
  519. maxframe/tensor/indexing/slice.py +29 -0
  520. maxframe/tensor/indexing/take.py +130 -0
  521. maxframe/tensor/indexing/tests/__init__.py +15 -0
  522. maxframe/tensor/indexing/tests/test_indexing.py +234 -0
  523. maxframe/tensor/indexing/unravel_index.py +103 -0
  524. maxframe/tensor/merge/__init__.py +15 -0
  525. maxframe/tensor/merge/stack.py +132 -0
  526. maxframe/tensor/merge/tests/__init__.py +13 -0
  527. maxframe/tensor/merge/tests/test_merge.py +52 -0
  528. maxframe/tensor/operators.py +123 -0
  529. maxframe/tensor/random/__init__.py +168 -0
  530. maxframe/tensor/random/beta.py +87 -0
  531. maxframe/tensor/random/binomial.py +137 -0
  532. maxframe/tensor/random/bytes.py +39 -0
  533. maxframe/tensor/random/chisquare.py +110 -0
  534. maxframe/tensor/random/choice.py +186 -0
  535. maxframe/tensor/random/core.py +234 -0
  536. maxframe/tensor/random/dirichlet.py +123 -0
  537. maxframe/tensor/random/exponential.py +94 -0
  538. maxframe/tensor/random/f.py +135 -0
  539. maxframe/tensor/random/gamma.py +128 -0
  540. maxframe/tensor/random/geometric.py +93 -0
  541. maxframe/tensor/random/gumbel.py +167 -0
  542. maxframe/tensor/random/hypergeometric.py +148 -0
  543. maxframe/tensor/random/laplace.py +133 -0
  544. maxframe/tensor/random/logistic.py +129 -0
  545. maxframe/tensor/random/lognormal.py +159 -0
  546. maxframe/tensor/random/logseries.py +122 -0
  547. maxframe/tensor/random/multinomial.py +133 -0
  548. maxframe/tensor/random/multivariate_normal.py +192 -0
  549. maxframe/tensor/random/negative_binomial.py +125 -0
  550. maxframe/tensor/random/noncentral_chisquare.py +132 -0
  551. maxframe/tensor/random/noncentral_f.py +126 -0
  552. maxframe/tensor/random/normal.py +143 -0
  553. maxframe/tensor/random/pareto.py +140 -0
  554. maxframe/tensor/random/permutation.py +104 -0
  555. maxframe/tensor/random/poisson.py +111 -0
  556. maxframe/tensor/random/power.py +142 -0
  557. maxframe/tensor/random/rand.py +82 -0
  558. maxframe/tensor/random/randint.py +121 -0
  559. maxframe/tensor/random/randn.py +96 -0
  560. maxframe/tensor/random/random_integers.py +123 -0
  561. maxframe/tensor/random/random_sample.py +86 -0
  562. maxframe/tensor/random/rayleigh.py +110 -0
  563. maxframe/tensor/random/shuffle.py +61 -0
  564. maxframe/tensor/random/standard_cauchy.py +105 -0
  565. maxframe/tensor/random/standard_exponential.py +72 -0
  566. maxframe/tensor/random/standard_gamma.py +120 -0
  567. maxframe/tensor/random/standard_normal.py +74 -0
  568. maxframe/tensor/random/standard_t.py +135 -0
  569. maxframe/tensor/random/tests/__init__.py +15 -0
  570. maxframe/tensor/random/tests/test_random.py +167 -0
  571. maxframe/tensor/random/triangular.py +119 -0
  572. maxframe/tensor/random/uniform.py +131 -0
  573. maxframe/tensor/random/vonmises.py +131 -0
  574. maxframe/tensor/random/wald.py +114 -0
  575. maxframe/tensor/random/weibull.py +140 -0
  576. maxframe/tensor/random/zipf.py +122 -0
  577. maxframe/tensor/rechunk/__init__.py +26 -0
  578. maxframe/tensor/rechunk/rechunk.py +43 -0
  579. maxframe/tensor/reduction/__init__.py +66 -0
  580. maxframe/tensor/reduction/all.py +103 -0
  581. maxframe/tensor/reduction/allclose.py +88 -0
  582. maxframe/tensor/reduction/any.py +105 -0
  583. maxframe/tensor/reduction/argmax.py +103 -0
  584. maxframe/tensor/reduction/argmin.py +103 -0
  585. maxframe/tensor/reduction/array_equal.py +64 -0
  586. maxframe/tensor/reduction/core.py +168 -0
  587. maxframe/tensor/reduction/count_nonzero.py +81 -0
  588. maxframe/tensor/reduction/cumprod.py +97 -0
  589. maxframe/tensor/reduction/cumsum.py +101 -0
  590. maxframe/tensor/reduction/max.py +120 -0
  591. maxframe/tensor/reduction/mean.py +123 -0
  592. maxframe/tensor/reduction/min.py +120 -0
  593. maxframe/tensor/reduction/nanargmax.py +82 -0
  594. maxframe/tensor/reduction/nanargmin.py +76 -0
  595. maxframe/tensor/reduction/nancumprod.py +91 -0
  596. maxframe/tensor/reduction/nancumsum.py +94 -0
  597. maxframe/tensor/reduction/nanmax.py +111 -0
  598. maxframe/tensor/reduction/nanmean.py +106 -0
  599. maxframe/tensor/reduction/nanmin.py +111 -0
  600. maxframe/tensor/reduction/nanprod.py +94 -0
  601. maxframe/tensor/reduction/nanstd.py +126 -0
  602. maxframe/tensor/reduction/nansum.py +115 -0
  603. maxframe/tensor/reduction/nanvar.py +149 -0
  604. maxframe/tensor/reduction/prod.py +130 -0
  605. maxframe/tensor/reduction/std.py +134 -0
  606. maxframe/tensor/reduction/sum.py +125 -0
  607. maxframe/tensor/reduction/tests/__init__.py +13 -0
  608. maxframe/tensor/reduction/tests/test_reduction.py +181 -0
  609. maxframe/tensor/reduction/var.py +176 -0
  610. maxframe/tensor/reshape/__init__.py +17 -0
  611. maxframe/tensor/reshape/reshape.py +188 -0
  612. maxframe/tensor/reshape/tests/__init__.py +15 -0
  613. maxframe/tensor/reshape/tests/test_reshape.py +37 -0
  614. maxframe/tensor/statistics/__init__.py +13 -0
  615. maxframe/tensor/statistics/percentile.py +175 -0
  616. maxframe/tensor/statistics/quantile.py +288 -0
  617. maxframe/tensor/ufunc/__init__.py +26 -0
  618. maxframe/tensor/ufunc/ufunc.py +200 -0
  619. maxframe/tensor/utils.py +718 -0
  620. maxframe/tests/__init__.py +13 -0
  621. maxframe/tests/test_codegen.py +69 -0
  622. maxframe/tests/test_protocol.py +144 -0
  623. maxframe/tests/test_utils.py +376 -0
  624. maxframe/tests/utils.py +164 -0
  625. maxframe/typing_.py +37 -0
  626. maxframe/udf.py +134 -0
  627. maxframe/utils.py +1114 -0
  628. maxframe-0.1.0b5.dist-info/METADATA +104 -0
  629. maxframe-0.1.0b5.dist-info/RECORD +647 -0
  630. maxframe-0.1.0b5.dist-info/WHEEL +5 -0
  631. maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
  632. maxframe_client/__init__.py +17 -0
  633. maxframe_client/clients/__init__.py +13 -0
  634. maxframe_client/clients/framedriver.py +118 -0
  635. maxframe_client/clients/spe.py +104 -0
  636. maxframe_client/conftest.py +15 -0
  637. maxframe_client/fetcher.py +264 -0
  638. maxframe_client/session/__init__.py +22 -0
  639. maxframe_client/session/consts.py +36 -0
  640. maxframe_client/session/graph.py +119 -0
  641. maxframe_client/session/odps.py +482 -0
  642. maxframe_client/session/task.py +280 -0
  643. maxframe_client/session/tests/__init__.py +13 -0
  644. maxframe_client/session/tests/test_task.py +85 -0
  645. maxframe_client/tests/__init__.py +13 -0
  646. maxframe_client/tests/test_fetcher.py +89 -0
  647. maxframe_client/tests/test_session.py +255 -0
@@ -0,0 +1,462 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import warnings
16
+
17
+ from ... import opcodes
18
+ from ...core import get_output_types
19
+ from ...serialization.serializables import AnyField, StringField
20
+ from ..core import SERIES_TYPE
21
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
22
+ from ..utils import build_df, build_series, parse_index, validate_axis
23
+
24
+
25
+ class DataFrameRename(DataFrameOperator, DataFrameOperatorMixin):
26
+ _op_type_ = opcodes.RENAME
27
+
28
+ columns_mapper = AnyField("columns_mapper", default=None)
29
+ index_mapper = AnyField("index_mapper", default=None)
30
+ new_name = AnyField("new_name", default=None)
31
+ level = AnyField("level", default=None)
32
+ errors = StringField("errors", default=None)
33
+
34
+ def __init__(self, output_types=None, **kw):
35
+ super().__init__(_output_types=output_types, **kw)
36
+
37
+ def _calc_renamed_df(self, df, errors="ignore"):
38
+ empty_df = build_df(df)
39
+ return empty_df.rename(
40
+ columns=self.columns_mapper,
41
+ index=self.index_mapper,
42
+ level=self.level,
43
+ errors=errors,
44
+ )
45
+
46
+ def _calc_renamed_series(self, df, errors="ignore"):
47
+ empty_series = build_series(df, name=df.name)
48
+ new_series = empty_series.rename(
49
+ index=self.index_mapper, level=self.level, errors=errors
50
+ )
51
+ if self.new_name:
52
+ new_series.name = self.new_name
53
+ return new_series
54
+
55
+ def __call__(self, df):
56
+ params = df.params
57
+ raw_index = df.index_value.to_pandas()
58
+ if df.ndim == 2:
59
+ new_df = self._calc_renamed_df(df, errors=self.errors)
60
+ new_index = new_df.index
61
+ elif isinstance(df, SERIES_TYPE):
62
+ new_df = self._calc_renamed_series(df, errors=self.errors)
63
+ new_index = new_df.index
64
+ else:
65
+ new_df = new_index = raw_index.set_names(
66
+ self.index_mapper or self.new_name, level=self.level
67
+ )
68
+
69
+ if self.columns_mapper is not None:
70
+ params["columns_value"] = parse_index(new_df.columns, store_data=True)
71
+ params["dtypes"] = new_df.dtypes
72
+ if self.index_mapper is not None:
73
+ params["index_value"] = parse_index(new_index)
74
+ if df.ndim == 1:
75
+ params["name"] = new_df.name
76
+ return self.new_tileable([df], **params)
77
+
78
+
79
+ def _rename(
80
+ df_obj,
81
+ index_mapper=None,
82
+ columns_mapper=None,
83
+ copy=True,
84
+ inplace=False,
85
+ level=None,
86
+ errors="ignore",
87
+ ):
88
+ if not copy:
89
+ raise NotImplementedError("`copy=False` not implemented")
90
+
91
+ if index_mapper is not None and errors == "raise" and not inplace:
92
+ warnings.warn("Errors will not raise for non-existing indices")
93
+
94
+ op = DataFrameRename(
95
+ columns_mapper=columns_mapper,
96
+ index_mapper=index_mapper,
97
+ level=level,
98
+ errors=errors,
99
+ output_types=get_output_types(df_obj),
100
+ )
101
+ ret = op(df_obj)
102
+ if inplace:
103
+ df_obj.data = ret.data
104
+ else:
105
+ return ret
106
+
107
+
108
+ def df_rename(
109
+ df,
110
+ mapper=None,
111
+ index=None,
112
+ columns=None,
113
+ axis="index",
114
+ copy=True,
115
+ inplace=False,
116
+ level=None,
117
+ errors="ignore",
118
+ ):
119
+ """
120
+ Alter axes labels.
121
+
122
+ Function / dict values must be unique (1-to-1). Labels not contained in
123
+ a dict / Series will be left as-is. Extra labels listed don't throw an
124
+ error.
125
+
126
+ Parameters
127
+ ----------
128
+ mapper : dict-like or function
129
+ Dict-like or functions transformations to apply to
130
+ that axis' values. Use either ``mapper`` and ``axis`` to
131
+ specify the axis to target with ``mapper``, or ``index`` and
132
+ ``columns``.
133
+ index : dict-like or function
134
+ Alternative to specifying axis (``mapper, axis=0``
135
+ is equivalent to ``index=mapper``).
136
+ columns : dict-like or function
137
+ Alternative to specifying axis (``mapper, axis=1``
138
+ is equivalent to ``columns=mapper``).
139
+ axis : int or str
140
+ Axis to target with ``mapper``. Can be either the axis name
141
+ ('index', 'columns') or number (0, 1). The default is 'index'.
142
+ copy : bool, default True
143
+ Also copy underlying data.
144
+ inplace : bool, default False
145
+ Whether to return a new DataFrame. If True then value of copy is
146
+ ignored.
147
+ level : int or level name, default None
148
+ In case of a MultiIndex, only rename labels in the specified
149
+ level.
150
+ errors : {'ignore', 'raise'}, default 'ignore'
151
+ If 'raise', raise a `KeyError` when a dict-like `mapper`, `index`,
152
+ or `columns` contains labels that are not present in the Index
153
+ being transformed.
154
+ If 'ignore', existing keys will be renamed and extra keys will be
155
+ ignored.
156
+
157
+ Returns
158
+ -------
159
+ DataFrame
160
+ DataFrame with the renamed axis labels.
161
+
162
+ Raises
163
+ ------
164
+ KeyError
165
+ If any of the labels is not found in the selected axis and
166
+ "errors='raise'".
167
+
168
+ See Also
169
+ --------
170
+ DataFrame.rename_axis : Set the name of the axis.
171
+
172
+ Examples
173
+ --------
174
+
175
+ ``DataFrame.rename`` supports two calling conventions
176
+
177
+ * ``(index=index_mapper, columns=columns_mapper, ...)``
178
+ * ``(mapper, axis={'index', 'columns'}, ...)``
179
+
180
+ We *highly* recommend using keyword arguments to clarify your
181
+ intent.
182
+
183
+ Rename columns using a mapping:
184
+
185
+ >>> import maxframe.dataframe as md
186
+ >>> df = md.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
187
+ >>> df.rename(columns={"A": "a", "B": "c"}).execute()
188
+ a c
189
+ 0 1 4
190
+ 1 2 5
191
+ 2 3 6
192
+
193
+ Rename index using a mapping:
194
+
195
+ >>> df.rename(index={0: "x", 1: "y", 2: "z"}).execute()
196
+ A B
197
+ x 1 4
198
+ y 2 5
199
+ z 3 6
200
+
201
+ Cast index labels to a different type:
202
+
203
+ >>> df.index.execute()
204
+ RangeIndex(start=0, stop=3, step=1)
205
+ >>> df.rename(index=str).index.execute()
206
+ Index(['0', '1', '2'], dtype='object')
207
+
208
+ >>> df.rename(columns={"A": "a", "B": "b", "C": "c"}, errors="raise").execute()
209
+ Traceback (most recent call last):
210
+ KeyError: ['C'] not found in axis
211
+
212
+ Using axis-style parameters
213
+
214
+ >>> df.rename(str.lower, axis='columns').execute()
215
+ a b
216
+ 0 1 4
217
+ 1 2 5
218
+ 2 3 6
219
+
220
+ >>> df.rename({1: 2, 2: 4}, axis='index').execute()
221
+ A B
222
+ 0 1 4
223
+ 2 2 5
224
+ 4 3 6
225
+
226
+ """
227
+ axis = validate_axis(axis, df)
228
+ if axis == 0:
229
+ index_mapper = index if index is not None else mapper
230
+ columns_mapper = columns
231
+ else:
232
+ columns_mapper = columns if columns is not None else mapper
233
+ index_mapper = index
234
+
235
+ if index_mapper is not None and errors == "raise" and not inplace:
236
+ warnings.warn("Errors will not raise for non-existing indices")
237
+
238
+ return _rename(
239
+ df,
240
+ index_mapper=index_mapper,
241
+ columns_mapper=columns_mapper,
242
+ copy=copy,
243
+ inplace=inplace,
244
+ level=level,
245
+ errors=errors,
246
+ )
247
+
248
+
249
+ def series_rename(
250
+ series,
251
+ index=None,
252
+ *,
253
+ axis="index",
254
+ copy=True,
255
+ inplace=False,
256
+ level=None,
257
+ errors="ignore"
258
+ ):
259
+ """
260
+ Alter Series index labels or name.
261
+
262
+ Function / dict values must be unique (1-to-1). Labels not contained in
263
+ a dict / Series will be left as-is. Extra labels listed don't throw an
264
+ error.
265
+
266
+ Alternatively, change ``Series.name`` with a scalar value.
267
+
268
+ Parameters
269
+ ----------
270
+ axis : {0 or "index"}
271
+ Unused. Accepted for compatibility with DataFrame method only.
272
+ index : scalar, hashable sequence, dict-like or function, optional
273
+ Functions or dict-like are transformations to apply to
274
+ the index.
275
+ Scalar or hashable sequence-like will alter the ``Series.name``
276
+ attribute.
277
+
278
+ **kwargs
279
+ Additional keyword arguments passed to the function. Only the
280
+ "inplace" keyword is used.
281
+
282
+ Returns
283
+ -------
284
+ Series
285
+ Series with index labels or name altered.
286
+
287
+ See Also
288
+ --------
289
+ DataFrame.rename : Corresponding DataFrame method.
290
+ Series.rename_axis : Set the name of the axis.
291
+
292
+ Examples
293
+ --------
294
+ >>> import maxframe.dataframe as md
295
+ >>> s = md.Series([1, 2, 3])
296
+ >>> s.execute()
297
+ 0 1
298
+ 1 2
299
+ 2 3
300
+ dtype: int64
301
+ >>> s.rename("my_name").execute() # scalar, changes Series.name.execute()
302
+ 0 1
303
+ 1 2
304
+ 2 3
305
+ Name: my_name, dtype: int64
306
+ >>> s.rename(lambda x: x ** 2).execute() # function, changes labels.execute()
307
+ 0 1
308
+ 1 2
309
+ 4 3
310
+ dtype: int64
311
+ >>> s.rename({1: 3, 2: 5}).execute() # mapping, changes labels.execute()
312
+ 0 1
313
+ 3 2
314
+ 5 3
315
+ dtype: int64
316
+ """
317
+ validate_axis(axis)
318
+ return _rename(
319
+ series,
320
+ index_mapper=index,
321
+ copy=copy,
322
+ inplace=inplace,
323
+ level=level,
324
+ errors=errors,
325
+ )
326
+
327
+
328
+ def index_rename(index, name, inplace=False):
329
+ """
330
+ Alter Index or MultiIndex name.
331
+
332
+ Able to set new names without level. Defaults to returning new index.
333
+ Length of names must match number of levels in MultiIndex.
334
+
335
+ Parameters
336
+ ----------
337
+ name : label or list of labels
338
+ Name(s) to set.
339
+ inplace : bool, default False
340
+ Modifies the object directly, instead of creating a new Index or
341
+ MultiIndex.
342
+
343
+ Returns
344
+ -------
345
+ Index
346
+ The same type as the caller or None if inplace is True.
347
+
348
+ See Also
349
+ --------
350
+ Index.set_names : Able to set new names partially and by level.
351
+
352
+ Examples
353
+ --------
354
+ >>> import maxframe.dataframe as md
355
+ >>> idx = md.Index(['A', 'C', 'A', 'B'], name='score')
356
+ >>> idx.rename('grade').execute()
357
+ Index(['A', 'C', 'A', 'B'], dtype='object', name='grade')
358
+
359
+ >>> idx = md.Index([('python', 2018),
360
+ ... ('python', 2019),
361
+ ... ('cobra', 2018),
362
+ ... ('cobra', 2019)],
363
+ ... names=['kind', 'year'])
364
+ >>> idx.execute()
365
+ MultiIndex([('python', 2018),
366
+ ('python', 2019),
367
+ ( 'cobra', 2018),
368
+ ( 'cobra', 2019)],
369
+ names=['kind', 'year'])
370
+ >>> idx.rename(['species', 'year']).execute()
371
+ MultiIndex([('python', 2018),
372
+ ('python', 2019),
373
+ ( 'cobra', 2018),
374
+ ( 'cobra', 2019)],
375
+ names=['species', 'year'])
376
+ >>> idx.rename('species').execute()
377
+ Traceback (most recent call last):
378
+ TypeError: Must pass list-like as `names`.
379
+ """
380
+ op = DataFrameRename(index_mapper=name, output_types=get_output_types(index))
381
+ ret = op(index)
382
+ if inplace:
383
+ index.data = ret.data
384
+ else:
385
+ return ret
386
+
387
+
388
+ def index_set_names(index, names, level=None, inplace=False):
389
+ """
390
+ Set Index or MultiIndex name.
391
+
392
+ Able to set new names partially and by level.
393
+
394
+ Parameters
395
+ ----------
396
+ names : label or list of label
397
+ Name(s) to set.
398
+ level : int, label or list of int or label, optional
399
+ If the index is a MultiIndex, level(s) to set (None for all
400
+ levels). Otherwise level must be None.
401
+ inplace : bool, default False
402
+ Modifies the object directly, instead of creating a new Index or
403
+ MultiIndex.
404
+
405
+ Returns
406
+ -------
407
+ Index
408
+ The same type as the caller or None if inplace is True.
409
+
410
+ See Also
411
+ --------
412
+ Index.rename : Able to set new names without level.
413
+
414
+ Examples
415
+ --------
416
+ >>> import maxframe.dataframe as md
417
+ >>> idx = md.Index([1, 2, 3, 4])
418
+ >>> idx.execute()
419
+ Int64Index([1, 2, 3, 4], dtype='int64')
420
+ >>> idx.set_names('quarter').execute()
421
+ Int64Index([1, 2, 3, 4], dtype='int64', name='quarter')
422
+
423
+ >>> idx = md.MultiIndex.from_product([['python', 'cobra'],
424
+ ... [2018, 2019]])
425
+ >>> idx.execute()
426
+ MultiIndex([('python', 2018),
427
+ ('python', 2019),
428
+ ( 'cobra', 2018),
429
+ ( 'cobra', 2019)],
430
+ )
431
+ >>> idx.set_names(['kind', 'year'], inplace=True)
432
+ >>> idx.execute()
433
+ MultiIndex([('python', 2018),
434
+ ('python', 2019),
435
+ ( 'cobra', 2018),
436
+ ( 'cobra', 2019)],
437
+ names=['kind', 'year'])
438
+ >>> idx.set_names('species', level=0).execute()
439
+ MultiIndex([('python', 2018),
440
+ ('python', 2019),
441
+ ( 'cobra', 2018),
442
+ ( 'cobra', 2019)],
443
+ names=['species', 'year'])
444
+ """
445
+ op = DataFrameRename(
446
+ index_mapper=names, level=level, output_types=get_output_types(index)
447
+ )
448
+ ret = op(index)
449
+
450
+ if inplace:
451
+ df_or_series = getattr(index, "_get_df_or_series", lambda: None)()
452
+ if df_or_series is not None:
453
+ from .rename_axis import rename_axis_with_level
454
+
455
+ rename_axis_with_level(
456
+ df_or_series, names, axis=index._axis, level=level, inplace=True
457
+ )
458
+ index.data = df_or_series.axes[index._axis].data
459
+ else:
460
+ index.data = ret.data
461
+ else:
462
+ return ret
@@ -0,0 +1,209 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from ... import opcodes
16
+ from ...core import OutputType
17
+ from ...serialization.serializables import AnyField, BoolField
18
+ from ..core import DATAFRAME_TYPE
19
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
20
+ from ..utils import build_df, build_series, parse_index, validate_axis
21
+
22
+
23
+ class DataFrameRenameAxis(DataFrameOperator, DataFrameOperatorMixin):
24
+ _op_type_ = opcodes.RENAME_AXIS
25
+
26
+ index = AnyField("index", default=None)
27
+ columns = AnyField("columns", default=None)
28
+ copy_value = BoolField("copy_value", default=None)
29
+ level = AnyField("level", default=None)
30
+
31
+ @staticmethod
32
+ def _update_params(params, obj, mapper, axis, level):
33
+ if obj.ndim == 2:
34
+ test_obj = build_df(obj)
35
+ else:
36
+ test_obj = build_series(obj)
37
+
38
+ if level is None:
39
+ test_obj = test_obj.rename_axis(mapper, axis=axis)
40
+ else:
41
+ test_obj.axes[axis].set_names(mapper, level=level, inplace=True)
42
+
43
+ if axis == 0:
44
+ params["index_value"] = parse_index(test_obj.index, store_data=False)
45
+ else:
46
+ params["dtypes"] = test_obj.dtypes
47
+ params["columns_value"] = parse_index(test_obj.columns, store_data=True)
48
+
49
+ def __call__(self, df_or_series):
50
+ params = df_or_series.params
51
+
52
+ if isinstance(df_or_series, DATAFRAME_TYPE):
53
+ self._output_types = [OutputType.dataframe]
54
+ else:
55
+ self._output_types = [OutputType.series]
56
+
57
+ if self.index is not None:
58
+ self._update_params(
59
+ params, df_or_series, self.index, axis=0, level=self.level
60
+ )
61
+ else:
62
+ self._update_params(
63
+ params, df_or_series, self.columns, axis=1, level=self.level
64
+ )
65
+
66
+ return self.new_tileable([df_or_series], **params)
67
+
68
+
69
+ def rename_axis_with_level(
70
+ df_or_series,
71
+ mapper=None,
72
+ index=None,
73
+ columns=None,
74
+ axis=0,
75
+ copy=True,
76
+ level=None,
77
+ inplace=False,
78
+ ):
79
+ axis = validate_axis(axis, df_or_series)
80
+ if mapper is not None:
81
+ if axis == 0:
82
+ index = mapper
83
+ else:
84
+ columns = mapper
85
+ op = DataFrameRenameAxis(index=index, columns=columns, copy_value=copy, level=level)
86
+ result = op(df_or_series)
87
+ if not inplace:
88
+ return result
89
+ else:
90
+ df_or_series.data = result.data
91
+
92
+
93
+ def rename_axis(
94
+ df_or_series,
95
+ mapper=None,
96
+ index=None,
97
+ columns=None,
98
+ axis=0,
99
+ copy=True,
100
+ inplace=False,
101
+ ):
102
+ """
103
+ Set the name of the axis for the index or columns.
104
+
105
+ Parameters
106
+ ----------
107
+ mapper : scalar, list-like, optional
108
+ Value to set the axis name attribute.
109
+ index, columns : scalar, list-like, dict-like or function, optional
110
+ A scalar, list-like, dict-like or functions transformations to
111
+ apply to that axis' values.
112
+ Note that the ``columns`` parameter is not allowed if the
113
+ object is a Series. This parameter only apply for DataFrame
114
+ type objects.
115
+
116
+ Use either ``mapper`` and ``axis`` to
117
+ specify the axis to target with ``mapper``, or ``index``
118
+ and/or ``columns``.
119
+
120
+ axis : {0 or 'index', 1 or 'columns'}, default 0
121
+ The axis to rename.
122
+ copy : bool, default True
123
+ Also copy underlying data.
124
+ inplace : bool, default False
125
+ Modifies the object directly, instead of creating a new Series
126
+ or DataFrame.
127
+
128
+ Returns
129
+ -------
130
+ Series, DataFrame, or None
131
+ The same type as the caller or None if `inplace` is True.
132
+
133
+ See Also
134
+ --------
135
+ Series.rename : Alter Series index labels or name.
136
+ DataFrame.rename : Alter DataFrame index labels or name.
137
+ Index.rename : Set new names on index.
138
+
139
+ Notes
140
+ -----
141
+ ``DataFrame.rename_axis`` supports two calling conventions
142
+
143
+ * ``(index=index_mapper, columns=columns_mapper, ...)``
144
+ * ``(mapper, axis={'index', 'columns'}, ...)``
145
+
146
+ The first calling convention will only modify the names of
147
+ the index and/or the names of the Index object that is the columns.
148
+ In this case, the parameter ``copy`` is ignored.
149
+
150
+ The second calling convention will modify the names of the
151
+ the corresponding index if mapper is a list or a scalar.
152
+ However, if mapper is dict-like or a function, it will use the
153
+ deprecated behavior of modifying the axis *labels*.
154
+
155
+ We *highly* recommend using keyword arguments to clarify your
156
+ intent.
157
+
158
+ Examples
159
+ --------
160
+ **Series**
161
+
162
+ >>> import maxframe.dataframe as md
163
+ >>> s = md.Series(["dog", "cat", "monkey"])
164
+ >>> s.execute()
165
+ 0 dog
166
+ 1 cat
167
+ 2 monkey
168
+ dtype: object
169
+ >>> s.rename_axis("animal").execute()
170
+ animal
171
+ 0 dog
172
+ 1 cat
173
+ 2 monkey
174
+ dtype: object
175
+
176
+ **DataFrame**
177
+
178
+ >>> df = md.DataFrame({"num_legs": [4, 4, 2],
179
+ ... "num_arms": [0, 0, 2]},
180
+ ... ["dog", "cat", "monkey"])
181
+ >>> df.execute()
182
+ num_legs num_arms
183
+ dog 4 0
184
+ cat 4 0
185
+ monkey 2 2
186
+ >>> df = df.rename_axis("animal")
187
+ >>> df.execute()
188
+ num_legs num_arms
189
+ animal
190
+ dog 4 0
191
+ cat 4 0
192
+ monkey 2 2
193
+ >>> df = df.rename_axis("limbs", axis="columns")
194
+ >>> df.execute()
195
+ limbs num_legs num_arms
196
+ animal
197
+ dog 4 0
198
+ cat 4 0
199
+ monkey 2 2
200
+ """
201
+ return rename_axis_with_level(
202
+ df_or_series,
203
+ mapper=mapper,
204
+ index=index,
205
+ columns=columns,
206
+ axis=axis,
207
+ copy=copy,
208
+ inplace=inplace,
209
+ )