maxframe 0.1.0b5__cp310-cp310-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of maxframe might be problematic. Click here for more details.

Files changed (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-310-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-310-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-310-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-310-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,402 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding: utf-8 -*-
3
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ import numpy as np
18
+ import pandas as pd
19
+
20
+ from ... import opcodes
21
+ from ...core import OutputType
22
+ from ...serialization.serializables import AnyField, BoolField
23
+ from ...utils import no_default
24
+ from ..operators import DATAFRAME_TYPE, DataFrameOperator, DataFrameOperatorMixin
25
+ from ..utils import build_empty_df, build_empty_series, parse_index
26
+
27
+
28
+ class DataFrameResetIndex(DataFrameOperator, DataFrameOperatorMixin):
29
+ _op_type_ = opcodes.RESET_INDEX
30
+
31
+ level = AnyField("level", default=None)
32
+ drop = BoolField("drop", default=False)
33
+ name = AnyField("name", default=None)
34
+ col_level = AnyField("col_level", default=0)
35
+ col_fill = AnyField("col_fill", default="")
36
+
37
+ def __init__(self, output_types=None, **kwargs):
38
+ super().__init__(_output_types=output_types, **kwargs)
39
+
40
+ @classmethod
41
+ def _get_out_index(cls, df, out_shape):
42
+ if isinstance(df.index, pd.RangeIndex):
43
+ range_value = -1 if np.isnan(out_shape[0]) else out_shape[0]
44
+ index_value = parse_index(pd.RangeIndex(range_value))
45
+ else:
46
+ index_value = parse_index(df.index)
47
+ return index_value
48
+
49
+ def _call_series(self, a):
50
+ if self.drop:
51
+ range_value = -1 if np.isnan(a.shape[0]) else a.shape[0]
52
+ index_value = parse_index(pd.RangeIndex(range_value))
53
+ return self.new_series(
54
+ [a], shape=a.shape, dtype=a.dtype, name=a.name, index_value=index_value
55
+ )
56
+ else:
57
+ empty_series = build_empty_series(
58
+ dtype=a.dtype, index=a.index_value.to_pandas()[:0], name=a.name
59
+ )
60
+ empty_df = empty_series.reset_index(level=self.level, name=self.name)
61
+ shape = (a.shape[0], len(empty_df.dtypes))
62
+ index_value = self._get_out_index(empty_df, shape)
63
+ return self.new_dataframe(
64
+ [a],
65
+ shape=shape,
66
+ index_value=index_value,
67
+ columns_value=parse_index(empty_df.columns),
68
+ dtypes=empty_df.dtypes,
69
+ )
70
+
71
+ def _call_dataframe(self, a):
72
+ if self.drop:
73
+ shape = a.shape
74
+ columns_value = a.columns_value
75
+ dtypes = a.dtypes
76
+ range_value = -1 if np.isnan(a.shape[0]) else a.shape[0]
77
+ index_value = parse_index(pd.RangeIndex(range_value))
78
+ else:
79
+ empty_df = build_empty_df(a.dtypes)
80
+ empty_df.index = a.index_value.to_pandas()[:0]
81
+ empty_df = empty_df.reset_index(
82
+ level=self.level, col_level=self.col_level, col_fill=self.col_fill
83
+ )
84
+ shape = (a.shape[0], len(empty_df.columns))
85
+ columns_value = parse_index(empty_df.columns, store_data=True)
86
+ dtypes = empty_df.dtypes
87
+ index_value = self._get_out_index(empty_df, shape)
88
+ return self.new_dataframe(
89
+ [a],
90
+ shape=shape,
91
+ columns_value=columns_value,
92
+ index_value=index_value,
93
+ dtypes=dtypes,
94
+ )
95
+
96
+ def __call__(self, a):
97
+ if isinstance(a, DATAFRAME_TYPE):
98
+ return self._call_dataframe(a)
99
+ else:
100
+ return self._call_series(a)
101
+
102
+
103
+ def df_reset_index(
104
+ df,
105
+ level=None,
106
+ drop=False,
107
+ inplace=False,
108
+ col_level=0,
109
+ col_fill="",
110
+ ):
111
+ """
112
+ Reset the index, or a level of it.
113
+
114
+ Reset the index of the DataFrame, and use the default one instead.
115
+ If the DataFrame has a MultiIndex, this method can remove one or more
116
+ levels.
117
+
118
+ Parameters
119
+ ----------
120
+ level : int, str, tuple, or list, default None
121
+ Only remove the given levels from the index. Removes all levels by
122
+ default.
123
+ drop : bool, default False
124
+ Do not try to insert index into dataframe columns. This resets
125
+ the index to the default integer index.
126
+ inplace : bool, default False
127
+ Modify the DataFrame in place (do not create a new object).
128
+ col_level : int or str, default 0
129
+ If the columns have multiple levels, determines which level the
130
+ labels are inserted into. By default it is inserted into the first
131
+ level.
132
+ col_fill : object, default ''
133
+ If the columns have multiple levels, determines how the other
134
+ levels are named. If None then the index name is repeated.
135
+
136
+ Returns
137
+ -------
138
+ DataFrame or None
139
+ DataFrame with the new index or None if ``inplace=True``.
140
+
141
+ See Also
142
+ --------
143
+ DataFrame.set_index : Opposite of reset_index.
144
+ DataFrame.reindex : Change to new indices or expand indices.
145
+ DataFrame.reindex_like : Change to same indices as other DataFrame.
146
+
147
+ Examples
148
+ --------
149
+ >>> import maxframe.tensor as mt
150
+ >>> import maxframe.dataframe as md
151
+ >>> df = md.DataFrame([('bird', 389.0),
152
+ ... ('bird', 24.0),
153
+ ... ('mammal', 80.5),
154
+ ... ('mammal', mt.nan)],
155
+ ... index=['falcon', 'parrot', 'lion', 'monkey'],
156
+ ... columns=('class', 'max_speed'))
157
+ >>> df.execute()
158
+ class max_speed
159
+ falcon bird 389.0
160
+ parrot bird 24.0
161
+ lion mammal 80.5
162
+ monkey mammal NaN
163
+
164
+ When we reset the index, the old index is added as a column, and a
165
+ new sequential index is used:
166
+
167
+ >>> df.reset_index().execute()
168
+ index class max_speed
169
+ 0 falcon bird 389.0
170
+ 1 parrot bird 24.0
171
+ 2 lion mammal 80.5
172
+ 3 monkey mammal NaN
173
+
174
+ We can use the `drop` parameter to avoid the old index being added as
175
+ a column:
176
+
177
+ >>> df.reset_index(drop=True).execute()
178
+ class max_speed
179
+ 0 bird 389.0
180
+ 1 bird 24.0
181
+ 2 mammal 80.5
182
+ 3 mammal NaN
183
+
184
+ You can also use `reset_index` with `MultiIndex`.
185
+
186
+ >>> import pandas as pd
187
+ >>> index = pd.MultiIndex.from_tuples([('bird', 'falcon'),
188
+ ... ('bird', 'parrot'),
189
+ ... ('mammal', 'lion'),
190
+ ... ('mammal', 'monkey')],
191
+ ... names=['class', 'name'])
192
+ >>> columns = pd.MultiIndex.from_tuples([('speed', 'max'),
193
+ ... ('species', 'type')])
194
+ >>> df = md.DataFrame([(389.0, 'fly'),
195
+ ... ( 24.0, 'fly'),
196
+ ... ( 80.5, 'run'),
197
+ ... (mt.nan, 'jump')],
198
+ ... index=index,
199
+ ... columns=columns)
200
+ >>> df.execute()
201
+ speed species
202
+ max type
203
+ class name
204
+ bird falcon 389.0 fly
205
+ parrot 24.0 fly
206
+ mammal lion 80.5 run
207
+ monkey NaN jump
208
+
209
+ If the index has multiple levels, we can reset a subset of them:
210
+
211
+ >>> df.reset_index(level='class').execute()
212
+ class speed species
213
+ max type
214
+ name
215
+ falcon bird 389.0 fly
216
+ parrot bird 24.0 fly
217
+ lion mammal 80.5 run
218
+ monkey mammal NaN jump
219
+
220
+ If we are not dropping the index, by default, it is placed in the top
221
+ level. We can place it in another level:
222
+
223
+ >>> df.reset_index(level='class', col_level=1).execute()
224
+ speed species
225
+ class max type
226
+ name
227
+ falcon bird 389.0 fly
228
+ parrot bird 24.0 fly
229
+ lion mammal 80.5 run
230
+ monkey mammal NaN jump
231
+
232
+ When the index is inserted under another level, we can specify under
233
+ which one with the parameter `col_fill`:
234
+
235
+ >>> df.reset_index(level='class', col_level=1, col_fill='species').execute()
236
+ species speed species
237
+ class max type
238
+ name
239
+ falcon bird 389.0 fly
240
+ parrot bird 24.0 fly
241
+ lion mammal 80.5 run
242
+ monkey mammal NaN jump
243
+
244
+ If we specify a nonexistent level for `col_fill`, it is created:
245
+
246
+ >>> df.reset_index(level='class', col_level=1, col_fill='genus').execute()
247
+ genus speed species
248
+ class max type
249
+ name
250
+ falcon bird 389.0 fly
251
+ parrot bird 24.0 fly
252
+ lion mammal 80.5 run
253
+ monkey mammal NaN jump
254
+ """
255
+ op = DataFrameResetIndex(
256
+ level=level,
257
+ drop=drop,
258
+ col_level=col_level,
259
+ col_fill=col_fill,
260
+ output_types=[OutputType.dataframe],
261
+ )
262
+ ret = op(df)
263
+ if not inplace:
264
+ return ret
265
+ else:
266
+ df.data = ret.data
267
+
268
+
269
+ def series_reset_index(
270
+ series,
271
+ level=None,
272
+ drop=False,
273
+ name=no_default,
274
+ inplace=False,
275
+ ):
276
+ """
277
+ Generate a new DataFrame or Series with the index reset.
278
+
279
+ This is useful when the index needs to be treated as a column, or
280
+ when the index is meaningless and needs to be reset to the default
281
+ before another operation.
282
+
283
+ Parameters
284
+ ----------
285
+ level : int, str, tuple, or list, default optional
286
+ For a Series with a MultiIndex, only remove the specified levels
287
+ from the index. Removes all levels by default.
288
+ drop : bool, default False
289
+ Just reset the index, without inserting it as a column in
290
+ the new DataFrame.
291
+ name : object, optional
292
+ The name to use for the column containing the original Series
293
+ values. Uses ``self.name`` by default. This argument is ignored
294
+ when `drop` is True.
295
+ inplace : bool, default False
296
+ Modify the Series in place (do not create a new object).
297
+
298
+ Returns
299
+ -------
300
+ Series or DataFrame
301
+ When `drop` is False (the default), a DataFrame is returned.
302
+ The newly created columns will come first in the DataFrame,
303
+ followed by the original Series values.
304
+ When `drop` is True, a `Series` is returned.
305
+ In either case, if ``inplace=True``, no value is returned.
306
+
307
+ See Also
308
+ --------
309
+ DataFrame.reset_index: Analogous function for DataFrame.
310
+
311
+ Examples
312
+ --------
313
+ >>> import maxframe.tensor as mt
314
+ >>> import maxframe.dataframe as md
315
+ >>> s = md.Series([1, 2, 3, 4], name='foo',
316
+ ... index=md.Index(['a', 'b', 'c', 'd'], name='idx'))
317
+
318
+ Generate a DataFrame with default index.
319
+
320
+ >>> s.reset_index().execute()
321
+ idx foo
322
+ 0 a 1
323
+ 1 b 2
324
+ 2 c 3
325
+ 3 d 4
326
+
327
+ To specify the name of the new column use `name`.
328
+
329
+ >>> s.reset_index(name='values').execute()
330
+ idx values
331
+ 0 a 1
332
+ 1 b 2
333
+ 2 c 3
334
+ 3 d 4
335
+
336
+ To generate a new Series with the default set `drop` to True.
337
+
338
+ >>> s.reset_index(drop=True).execute()
339
+ 0 1
340
+ 1 2
341
+ 2 3
342
+ 3 4
343
+ Name: foo, dtype: int64
344
+
345
+ To update the Series in place, without generating a new one
346
+ set `inplace` to True. Note that it also requires ``drop=True``.
347
+
348
+ >>> s.reset_index(inplace=True, drop=True)
349
+ >>> s.execute()
350
+ 0 1
351
+ 1 2
352
+ 2 3
353
+ 3 4
354
+ Name: foo, dtype: int64
355
+
356
+ The `level` parameter is interesting for Series with a multi-level
357
+ index.
358
+
359
+ >>> import numpy as np
360
+ >>> import pandas as pd
361
+ >>> arrays = [np.array(['bar', 'bar', 'baz', 'baz']),
362
+ ... np.array(['one', 'two', 'one', 'two'])]
363
+ >>> s2 = md.Series(
364
+ ... range(4), name='foo',
365
+ ... index=pd.MultiIndex.from_arrays(arrays,
366
+ ... names=['a', 'b']))
367
+
368
+ To remove a specific level from the Index, use `level`.
369
+
370
+ >>> s2.reset_index(level='a').execute()
371
+ a foo
372
+ b
373
+ one bar 0
374
+ two bar 1
375
+ one baz 2
376
+ two baz 3
377
+
378
+ If `level` is not set, all levels are removed from the Index.
379
+
380
+ >>> s2.reset_index().execute()
381
+ a b foo
382
+ 0 bar one 0
383
+ 1 bar two 1
384
+ 2 baz one 2
385
+ 3 baz two 3
386
+ """
387
+ if name is no_default:
388
+ name = series.name if series.name is not None else 0
389
+
390
+ op = DataFrameResetIndex(
391
+ level=level,
392
+ drop=drop,
393
+ name=name,
394
+ output_types=[OutputType.series if drop else OutputType.dataframe],
395
+ )
396
+ ret = op(series)
397
+ if not inplace:
398
+ return ret
399
+ elif ret.ndim == 2:
400
+ raise TypeError("Cannot reset_index inplace on a Series to create a DataFrame")
401
+ else:
402
+ series.data = ret.data
@@ -0,0 +1,221 @@
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 copy
16
+
17
+ import numpy as np
18
+
19
+ from ... import opcodes
20
+ from ...core import ENTITY_TYPE, get_output_types
21
+ from ...serialization.serializables import (
22
+ AnyField,
23
+ BoolField,
24
+ Float64Field,
25
+ Int8Field,
26
+ Int64Field,
27
+ )
28
+ from ...tensor.random import RandomStateField
29
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
30
+ from ..utils import parse_index, validate_axis
31
+
32
+
33
+ class DataFrameSample(DataFrameOperator, DataFrameOperatorMixin):
34
+ _op_type_ = opcodes.RAND_SAMPLE
35
+
36
+ size = Int64Field("size", default=None)
37
+ frac = Float64Field("frac", default=None)
38
+ replace = BoolField("replace", default=False)
39
+ weights = AnyField("weights", default=None)
40
+ axis = Int8Field("axis", default=None)
41
+ seed = Int64Field("seed", default=None)
42
+ random_state = RandomStateField("random_state", default=None)
43
+
44
+ def __init__(self, random_state=None, seed=None, **kw):
45
+ if random_state is None:
46
+ random_state = np.random.RandomState(seed)
47
+ super().__init__(random_state=random_state, seed=seed, **kw)
48
+
49
+ def _set_inputs(self, inputs):
50
+ super()._set_inputs(inputs)
51
+ it = iter(inputs)
52
+ next(it)
53
+ if isinstance(self.weights, ENTITY_TYPE):
54
+ self.weights = next(it)
55
+
56
+ def __call__(self, df):
57
+ params = df.params
58
+ new_shape = list(df.shape)
59
+
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
+ if self.size is not None:
65
+ new_shape[self.axis] = self.size
66
+ params["shape"] = tuple(new_shape)
67
+ params["index_value"] = parse_index(df.index_value.to_pandas()[:0])
68
+
69
+ input_dfs = [df]
70
+ if isinstance(self.weights, ENTITY_TYPE):
71
+ input_dfs.append(self.weights)
72
+
73
+ self._output_types = get_output_types(df)
74
+ return self.new_tileable(input_dfs, **params)
75
+
76
+
77
+ def sample(
78
+ df_or_series,
79
+ n=None,
80
+ frac=None,
81
+ replace=False,
82
+ weights=None,
83
+ random_state=None,
84
+ axis=None,
85
+ always_multinomial=False,
86
+ ):
87
+ """
88
+ Return a random sample of items from an axis of object.
89
+
90
+ You can use `random_state` for reproducibility.
91
+
92
+ Parameters
93
+ ----------
94
+ n : int, optional
95
+ Number of items from axis to return. Cannot be used with `frac`.
96
+ Default = 1 if `frac` = None.
97
+ frac : float, optional
98
+ Fraction of axis items to return. Cannot be used with `n`.
99
+ replace : bool, default False
100
+ Allow or disallow sampling of the same row more than once.
101
+ weights : str or ndarray-like, optional
102
+ Default 'None' results in equal probability weighting.
103
+ If passed a Series, will align with target object on index. Index
104
+ values in weights not found in sampled object will be ignored and
105
+ index values in sampled object not in weights will be assigned
106
+ weights of zero.
107
+ If called on a DataFrame, will accept the name of a column
108
+ when axis = 0.
109
+ Unless weights are a Series, weights must be same length as axis
110
+ being sampled.
111
+ If weights do not sum to 1, they will be normalized to sum to 1.
112
+ Missing values in the weights column will be treated as zero.
113
+ Infinite values not allowed.
114
+ random_state : int, array-like, BitGenerator, np.random.RandomState, optional
115
+ If int, array-like, or BitGenerator (NumPy>=1.17), seed for
116
+ random number generator
117
+ If np.random.RandomState, use as numpy RandomState object.
118
+ axis : {0 or ‘index’, 1 or ‘columns’, None}, default None
119
+ Axis to sample. Accepts axis number or name. Default is stat axis
120
+ for given data type (0 for Series and DataFrames).
121
+ always_multinomial : bool, default False
122
+ If True, always treat distribution of sample counts between data chunks
123
+ as multinomial distribution. This will accelerate sampling when data
124
+ is huge, but may affect randomness of samples when number of instances
125
+ is not very large.
126
+
127
+ Returns
128
+ -------
129
+ Series or DataFrame
130
+ A new object of same type as caller containing `n` items randomly
131
+ sampled from the caller object.
132
+
133
+ See Also
134
+ --------
135
+ DataFrameGroupBy.sample: Generates random samples from each group of a
136
+ DataFrame object.
137
+ SeriesGroupBy.sample: Generates random samples from each group of a
138
+ Series object.
139
+ numpy.random.choice: Generates a random sample from a given 1-D numpy
140
+ array.
141
+
142
+ Notes
143
+ -----
144
+ If `frac` > 1, `replacement` should be set to `True`.
145
+
146
+ Examples
147
+ --------
148
+ >>> import maxframe.dataframe as md
149
+ >>> df = md.DataFrame({'num_legs': [2, 4, 8, 0],
150
+ ... 'num_wings': [2, 0, 0, 0],
151
+ ... 'num_specimen_seen': [10, 2, 1, 8]},
152
+ ... index=['falcon', 'dog', 'spider', 'fish'])
153
+ >>> df.execute()
154
+ num_legs num_wings num_specimen_seen
155
+ falcon 2 2 10
156
+ dog 4 0 2
157
+ spider 8 0 1
158
+ fish 0 0 8
159
+
160
+ Extract 3 random elements from the ``Series`` ``df['num_legs']``:
161
+ Note that we use `random_state` to ensure the reproducibility of
162
+ the examples.
163
+
164
+ >>> df['num_legs'].sample(n=3, random_state=1).execute()
165
+ fish 0
166
+ spider 8
167
+ falcon 2
168
+ Name: num_legs, dtype: int64
169
+
170
+ A random 50% sample of the ``DataFrame`` with replacement:
171
+
172
+ >>> df.sample(frac=0.5, replace=True, random_state=1).execute()
173
+ num_legs num_wings num_specimen_seen
174
+ dog 4 0 2
175
+ fish 0 0 8
176
+
177
+ An upsample sample of the ``DataFrame`` with replacement:
178
+ Note that `replace` parameter has to be `True` for `frac` parameter > 1.
179
+
180
+ >>> df.sample(frac=2, replace=True, random_state=1).execute()
181
+ num_legs num_wings num_specimen_seen
182
+ dog 4 0 2
183
+ fish 0 0 8
184
+ falcon 2 2 10
185
+ falcon 2 2 10
186
+ fish 0 0 8
187
+ dog 4 0 2
188
+ fish 0 0 8
189
+ dog 4 0 2
190
+
191
+ Using a DataFrame column as weights. Rows with larger value in the
192
+ `num_specimen_seen` column are more likely to be sampled.
193
+
194
+ >>> df.sample(n=2, weights='num_specimen_seen', random_state=1).execute()
195
+ num_legs num_wings num_specimen_seen
196
+ falcon 2 2 10
197
+ fish 0 0 8
198
+
199
+ """
200
+ axis = validate_axis(axis or 0, df_or_series)
201
+ if axis == 1:
202
+ raise NotImplementedError("Currently cannot sample over columns")
203
+ if frac is not None and frac < 0 or n is not None and n < 0:
204
+ raise ValueError(
205
+ "A negative number of rows requested. Please provide positive value."
206
+ )
207
+ rs = copy.deepcopy(
208
+ random_state.to_numpy() if hasattr(random_state, "to_numpy") else random_state
209
+ )
210
+ if isinstance(rs, (int, np.ndarray)):
211
+ rs = np.random.RandomState(rs)
212
+ op = DataFrameSample(
213
+ size=n,
214
+ frac=frac,
215
+ replace=replace,
216
+ weights=weights,
217
+ random_state=rs,
218
+ axis=axis,
219
+ always_multinomial=always_multinomial,
220
+ )
221
+ return op(df_or_series)