maxframe 0.1.0b5__cp39-cp39-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-39-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-39-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-39-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-39-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,308 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import numpy as np
16
+ import pandas as pd
17
+
18
+ from ... import opcodes
19
+ from ...core import ENTITY_TYPE
20
+ from ...serialization.serializables import AnyField, BoolField, Int32Field, StringField
21
+ from ...tensor.utils import filter_inputs
22
+ from ..core import DATAFRAME_TYPE, SERIES_TYPE
23
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
24
+ from ..utils import build_df, build_series, validate_axis
25
+
26
+
27
+ class DataFrameWhere(DataFrameOperator, DataFrameOperatorMixin):
28
+ _op_type_ = opcodes.WHERE
29
+
30
+ _input = AnyField("input")
31
+ cond = AnyField("cond", default=None)
32
+ other = AnyField("other", default=None)
33
+ axis = Int32Field("axis", default=None)
34
+ level = AnyField("level", default=None)
35
+ errors = StringField("errors", default=None)
36
+ try_cast = BoolField("try_cast", default=None)
37
+ replace_true = BoolField("replace_true", default=None)
38
+
39
+ def __init__(self, input=None, **kw):
40
+ super().__init__(_input=input, **kw)
41
+
42
+ @property
43
+ def input(self):
44
+ return self._input
45
+
46
+ def __call__(self, df_or_series):
47
+ def _check_input_index(obj, axis=None):
48
+ axis = axis if axis is not None else self.axis
49
+ if isinstance(obj, DATAFRAME_TYPE) and (
50
+ df_or_series.columns_value.key != obj.columns_value.key
51
+ or df_or_series.index_value.key != obj.index_value.key
52
+ ):
53
+ raise NotImplementedError("Aligning different indices not supported")
54
+ elif (
55
+ isinstance(obj, SERIES_TYPE)
56
+ and df_or_series.axes[axis].index_value.key != obj.index_value.key
57
+ ):
58
+ raise NotImplementedError("Aligning different indices not supported")
59
+
60
+ _check_input_index(self.cond, axis=0)
61
+ _check_input_index(self.other)
62
+
63
+ if isinstance(df_or_series, DATAFRAME_TYPE):
64
+ mock_obj = build_df(df_or_series)
65
+ else:
66
+ mock_obj = build_series(df_or_series)
67
+
68
+ if isinstance(self.other, (pd.DataFrame, DATAFRAME_TYPE)):
69
+ mock_other = build_df(self.other)
70
+ elif isinstance(self.other, (pd.Series, SERIES_TYPE)):
71
+ mock_other = build_series(self.other)
72
+ else:
73
+ mock_other = self.other
74
+
75
+ result_df = mock_obj.where(
76
+ np.zeros(mock_obj.shape).astype(bool),
77
+ other=mock_other,
78
+ axis=self.axis,
79
+ level=self.level,
80
+ errors=self.errors,
81
+ try_cast=self.try_cast,
82
+ )
83
+
84
+ inputs = filter_inputs([df_or_series, self.cond, self.other])
85
+ if isinstance(df_or_series, DATAFRAME_TYPE):
86
+ return self.new_dataframe(
87
+ inputs,
88
+ shape=df_or_series.shape,
89
+ dtypes=result_df.dtypes,
90
+ index_value=df_or_series.index_value,
91
+ columns_value=df_or_series.columns_value,
92
+ )
93
+ else:
94
+ return self.new_series(
95
+ inputs,
96
+ shape=df_or_series.shape,
97
+ name=df_or_series.name,
98
+ dtype=result_df.dtype,
99
+ index_value=df_or_series.index_value,
100
+ )
101
+
102
+ def _set_inputs(self, inputs):
103
+ super()._set_inputs(inputs)
104
+ inputs_iter = iter(self._inputs)
105
+ self._input = next(inputs_iter)
106
+ if isinstance(self.cond, ENTITY_TYPE):
107
+ self.cond = next(inputs_iter)
108
+ if isinstance(self.other, ENTITY_TYPE):
109
+ self.other = next(inputs_iter)
110
+
111
+
112
+ _doc_template = """
113
+ Replace values where the condition is {replace_true}.
114
+
115
+ Parameters
116
+ ----------
117
+ cond : bool Series/DataFrame, array-like, or callable
118
+ Where `cond` is False, keep the original value. Where
119
+ True, replace with corresponding value from `other`.
120
+ If `cond` is callable, it is computed on the Series/DataFrame and
121
+ should return boolean Series/DataFrame or array. The callable must
122
+ not change input Series/DataFrame (though pandas doesn't check it).
123
+ other : scalar, Series/DataFrame, or callable
124
+ Entries where `cond` is True are replaced with
125
+ corresponding value from `other`.
126
+ If other is callable, it is computed on the Series/DataFrame and
127
+ should return scalar or Series/DataFrame. The callable must not
128
+ change input Series/DataFrame (though pandas doesn't check it).
129
+ inplace : bool, default False
130
+ Whether to perform the operation in place on the data.
131
+ axis : int, default None
132
+ Alignment axis if needed.
133
+ level : int, default None
134
+ Alignment level if needed.
135
+ errors : str, {{'raise', 'ignore'}}, default 'raise'
136
+ Note that currently this parameter won't affect
137
+ the results and will always coerce to a suitable dtype.
138
+
139
+ - 'raise' : allow exceptions to be raised.
140
+ - 'ignore' : suppress exceptions. On error return original object.
141
+
142
+ try_cast : bool, default False
143
+ Try to cast the result back to the input type (if possible).
144
+
145
+ Returns
146
+ -------
147
+ Same type as caller
148
+
149
+ See Also
150
+ --------
151
+ :func:`DataFrame.{opposite}` : Return an object of same shape as
152
+ self.
153
+
154
+ Notes
155
+ -----
156
+ The mask method is an application of the if-then idiom. For each
157
+ element in the calling DataFrame, if ``cond`` is ``False`` the
158
+ element is used; otherwise the corresponding element from the DataFrame
159
+ ``other`` is used.
160
+
161
+ The signature for :func:`DataFrame.where` differs from
162
+ :func:`numpy.where`. Roughly ``df1.where(m, df2)`` is equivalent to
163
+ ``np.where(m, df1, df2)``.
164
+
165
+ For further details and examples see the ``mask`` documentation in
166
+ :ref:`indexing <indexing.where_mask>`.
167
+
168
+ Examples
169
+ --------
170
+ >>> import maxframe.tensor as mt
171
+ >>> import maxframe.dataframe as md
172
+ >>> s = md.Series(range(5))
173
+ >>> s.where(s > 0).execute()
174
+ 0 NaN
175
+ 1 1.0
176
+ 2 2.0
177
+ 3 3.0
178
+ 4 4.0
179
+ dtype: float64
180
+
181
+ >>> s.mask(s > 0).execute()
182
+ 0 0.0
183
+ 1 NaN
184
+ 2 NaN
185
+ 3 NaN
186
+ 4 NaN
187
+ dtype: float64
188
+
189
+ >>> s.where(s > 1, 10).execute()
190
+ 0 10
191
+ 1 10
192
+ 2 2
193
+ 3 3
194
+ 4 4
195
+ dtype: int64
196
+
197
+ >>> df = md.DataFrame(mt.arange(10).reshape(-1, 2), columns=['A', 'B'])
198
+ >>> df.execute()
199
+ A B
200
+ 0 0 1
201
+ 1 2 3
202
+ 2 4 5
203
+ 3 6 7
204
+ 4 8 9
205
+ >>> m = df % 3 == 0
206
+ >>> df.where(m, -df).execute()
207
+ A B
208
+ 0 0 -1
209
+ 1 -2 3
210
+ 2 -4 -5
211
+ 3 6 -7
212
+ 4 -8 9
213
+ >>> df.where(m, -df) == mt.where(m, df, -df).execute()
214
+ A B
215
+ 0 True True
216
+ 1 True True
217
+ 2 True True
218
+ 3 True True
219
+ 4 True True
220
+ >>> df.where(m, -df) == df.mask(~m, -df).execute()
221
+ A B
222
+ 0 True True
223
+ 1 True True
224
+ 2 True True
225
+ 3 True True
226
+ 4 True True
227
+ """
228
+
229
+
230
+ def _where(
231
+ df_or_series,
232
+ cond,
233
+ other=np.nan,
234
+ inplace=False,
235
+ axis=None,
236
+ level=None,
237
+ errors="raise",
238
+ try_cast=False,
239
+ replace_true=False,
240
+ ):
241
+ if df_or_series.ndim == 2 and getattr(other, "ndim", 2) == 1 and axis is None:
242
+ raise ValueError("Must specify axis=0 or 1")
243
+
244
+ axis = validate_axis(axis or 0, df_or_series)
245
+ op = DataFrameWhere(
246
+ cond=cond,
247
+ other=other,
248
+ axis=axis,
249
+ level=level,
250
+ errors=errors,
251
+ try_cast=try_cast,
252
+ replace_true=replace_true,
253
+ )
254
+ result = op(df_or_series)
255
+ if inplace:
256
+ df_or_series.data = result.data
257
+ else:
258
+ return result
259
+
260
+
261
+ def where(
262
+ df_or_series,
263
+ cond,
264
+ other=np.nan,
265
+ inplace=False,
266
+ axis=None,
267
+ level=None,
268
+ errors="raise",
269
+ try_cast=False,
270
+ ):
271
+ return _where(
272
+ df_or_series,
273
+ cond,
274
+ other=other,
275
+ inplace=inplace,
276
+ axis=axis,
277
+ level=level,
278
+ errors=errors,
279
+ try_cast=try_cast,
280
+ replace_true=False,
281
+ )
282
+
283
+
284
+ def mask(
285
+ df_or_series,
286
+ cond,
287
+ other=np.nan,
288
+ inplace=False,
289
+ axis=None,
290
+ level=None,
291
+ errors="raise",
292
+ try_cast=False,
293
+ ):
294
+ return _where(
295
+ df_or_series,
296
+ cond,
297
+ other=other,
298
+ inplace=inplace,
299
+ axis=axis,
300
+ level=level,
301
+ errors=errors,
302
+ try_cast=try_cast,
303
+ replace_true=True,
304
+ )
305
+
306
+
307
+ mask.__doc__ = _doc_template.format(replace_true=True, opposite="where")
308
+ where.__doc__ = _doc_template.format(replace_true=False, opposite="mask")
@@ -0,0 +1,288 @@
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 typing import Union
16
+
17
+ import pandas as pd
18
+ from pandas.core.dtypes.common import pandas_dtype
19
+
20
+ from ..core import ENTITY_TYPE
21
+ from ..serialization.serializables import SerializableMeta
22
+ from ..tensor import stack
23
+ from ..tensor import tensor as astensor
24
+ from ..tensor.array_utils import is_cupy
25
+ from ..tensor.core import TENSOR_TYPE
26
+ from ..utils import ceildiv, lazy_import
27
+ from .core import DATAFRAME_TYPE, INDEX_TYPE, SERIES_TYPE
28
+ from .core import DataFrame as _Frame
29
+ from .core import Index as _Index
30
+ from .core import Series as _Series
31
+ from .datasource.dataframe import from_pandas as from_pandas_df
32
+ from .datasource.from_tensor import (
33
+ dataframe_from_1d_tileables,
34
+ dataframe_from_tensor,
35
+ series_from_tensor,
36
+ )
37
+ from .datasource.index import from_pandas as from_pandas_index
38
+ from .datasource.index import from_tileable as from_tileable_index
39
+ from .datasource.series import from_pandas as from_pandas_series
40
+ from .utils import is_cudf, is_index
41
+
42
+ cudf = lazy_import("cudf")
43
+
44
+
45
+ class InitializerMeta(SerializableMeta):
46
+ def __instancecheck__(cls, instance):
47
+ return isinstance(instance, (cls.__base__,) + getattr(cls, "_allow_data_type_"))
48
+
49
+
50
+ class DataFrame(_Frame, metaclass=InitializerMeta):
51
+ def __init__(
52
+ self,
53
+ data=None,
54
+ index=None,
55
+ columns=None,
56
+ dtype=None,
57
+ copy=False,
58
+ chunk_size=None,
59
+ gpu=None,
60
+ sparse=None,
61
+ num_partitions=None,
62
+ ):
63
+ need_repart = False
64
+ if isinstance(data, TENSOR_TYPE):
65
+ if chunk_size is not None:
66
+ data = data.rechunk(chunk_size)
67
+ df = dataframe_from_tensor(
68
+ data, index=index, columns=columns, gpu=gpu, sparse=sparse
69
+ )
70
+ need_repart = num_partitions is not None
71
+ elif isinstance(data, SERIES_TYPE):
72
+ df = data.to_frame()
73
+ need_repart = num_partitions is not None
74
+ elif isinstance(data, DATAFRAME_TYPE):
75
+ if not hasattr(data, "data"):
76
+ # DataFrameData
77
+ df = _Frame(data)
78
+ else:
79
+ df = data
80
+ need_repart = num_partitions is not None
81
+ elif isinstance(data, dict) and self._can_process_by_1d_tileables(data):
82
+ # data is a dict and some value is tensor
83
+ df = dataframe_from_1d_tileables(
84
+ data, index=index, columns=columns, gpu=gpu, sparse=sparse
85
+ )
86
+ need_repart = num_partitions is not None
87
+ elif isinstance(data, list) and any(isinstance(v, ENTITY_TYPE) for v in data):
88
+ # stack data together
89
+ data = stack(data)
90
+ df = dataframe_from_tensor(
91
+ data, index=index, columns=columns, gpu=gpu, sparse=sparse
92
+ )
93
+ need_repart = num_partitions is not None
94
+ elif isinstance(index, (INDEX_TYPE, SERIES_TYPE)):
95
+ if isinstance(data, dict):
96
+ data = {k: astensor(v, chunk_size=chunk_size) for k, v in data.items()}
97
+ df = dataframe_from_1d_tileables(
98
+ data, index=index, columns=columns, gpu=gpu, sparse=sparse
99
+ )
100
+ else:
101
+ if data is not None:
102
+ data = astensor(data, chunk_size=chunk_size)
103
+ df = dataframe_from_tensor(
104
+ data, index=index, columns=columns, gpu=gpu, sparse=sparse
105
+ )
106
+ need_repart = num_partitions is not None
107
+ else:
108
+ if is_cudf(data) or is_cupy(data): # pragma: no cover
109
+ pdf = cudf.DataFrame(data, index=index, columns=columns, dtype=dtype)
110
+ if copy:
111
+ pdf = pdf.copy()
112
+ else:
113
+ pdf = pd.DataFrame(
114
+ data, index=index, columns=columns, dtype=dtype, copy=copy
115
+ )
116
+ if num_partitions is not None:
117
+ chunk_size = ceildiv(len(pdf), num_partitions)
118
+ df = from_pandas_df(pdf, chunk_size=chunk_size, gpu=gpu, sparse=sparse)
119
+
120
+ if need_repart:
121
+ df = df.rebalance(num_partitions=num_partitions)
122
+ super().__init__(df.data)
123
+
124
+ @classmethod
125
+ def _can_process_by_1d_tileables(cls, data: dict):
126
+ for value in data.values():
127
+ if isinstance(value, ENTITY_TYPE):
128
+ return True
129
+ elif isinstance(value, (list, tuple)) and any(
130
+ isinstance(v, ENTITY_TYPE) for v in value
131
+ ):
132
+ return True
133
+ return False
134
+
135
+
136
+ class Series(_Series, metaclass=InitializerMeta):
137
+ def __init__(
138
+ self,
139
+ data=None,
140
+ index=None,
141
+ dtype=None,
142
+ name=None,
143
+ copy=False,
144
+ chunk_size=None,
145
+ gpu=None,
146
+ sparse=None,
147
+ num_partitions=None,
148
+ ):
149
+ if dtype is not None:
150
+ dtype = pandas_dtype(dtype)
151
+ need_repart = False
152
+ if isinstance(data, (TENSOR_TYPE, INDEX_TYPE)):
153
+ if chunk_size is not None:
154
+ data = data.rechunk(chunk_size)
155
+ name = name or getattr(data, "name", None)
156
+ series = series_from_tensor(
157
+ data, index=index, name=name, gpu=gpu, sparse=sparse
158
+ )
159
+ need_repart = num_partitions is not None
160
+ elif isinstance(index, INDEX_TYPE):
161
+ if data is not None:
162
+ data = astensor(data, chunk_size=chunk_size)
163
+ series = series_from_tensor(
164
+ data, index=index, name=name, dtype=dtype, gpu=gpu, sparse=sparse
165
+ )
166
+ need_repart = num_partitions is not None
167
+ elif isinstance(data, SERIES_TYPE):
168
+ if not hasattr(data, "data"):
169
+ # SeriesData
170
+ series = _Series(data)
171
+ else:
172
+ series = data
173
+ need_repart = num_partitions is not None
174
+ else:
175
+ if is_cudf(data) or is_cupy(data): # pragma: no cover
176
+ pd_series = cudf.Series(data, index=index, dtype=dtype, name=name)
177
+ if copy:
178
+ pd_series = pd_series.copy()
179
+ else:
180
+ pd_series = pd.Series(
181
+ data, index=index, dtype=dtype, name=name, copy=copy
182
+ )
183
+ if num_partitions is not None:
184
+ chunk_size = ceildiv(len(pd_series), num_partitions)
185
+ series = from_pandas_series(
186
+ pd_series, chunk_size=chunk_size, gpu=gpu, sparse=sparse
187
+ )
188
+
189
+ if need_repart:
190
+ series = series.rebalance(num_partitions=num_partitions)
191
+ super().__init__(series.data)
192
+
193
+
194
+ class Index(_Index, metaclass=InitializerMeta):
195
+ def __new__(cls, data, **_):
196
+ # just return cls always until we support other Index's initializers
197
+ return object.__new__(cls)
198
+
199
+ def __init__(
200
+ self,
201
+ data=None,
202
+ dtype=None,
203
+ copy=False,
204
+ name=None,
205
+ tupleize_cols=True,
206
+ chunk_size=None,
207
+ gpu=None,
208
+ sparse=None,
209
+ names=None,
210
+ num_partitions=None,
211
+ store_data=False,
212
+ ):
213
+ need_repart = False
214
+ if isinstance(data, INDEX_TYPE):
215
+ if not hasattr(data, "data"):
216
+ # IndexData
217
+ index = _Index(data)
218
+ else:
219
+ index = data
220
+ need_repart = num_partitions is not None
221
+ else:
222
+ if isinstance(data, ENTITY_TYPE):
223
+ name = name if name is not None else getattr(data, "name", None)
224
+ index = from_tileable_index(data, dtype=dtype, name=name, names=names)
225
+ need_repart = num_partitions is not None
226
+ else:
227
+ if not is_index(data):
228
+ name = name if name is not None else getattr(data, "name", None)
229
+ xdf = cudf if is_cudf(data) or is_cupy(data) else pd
230
+ try:
231
+ pd_index = xdf.Index(
232
+ data=data,
233
+ dtype=dtype,
234
+ copy=copy,
235
+ name=name,
236
+ tupleize_cols=tupleize_cols,
237
+ )
238
+ except TypeError: # pragma: no cover
239
+ pd_index = xdf.Index(
240
+ data=data, dtype=dtype, copy=copy, name=name
241
+ )
242
+ else:
243
+ pd_index = data
244
+
245
+ if num_partitions is not None:
246
+ chunk_size = ceildiv(len(pd_index), num_partitions)
247
+ index = from_pandas_index(
248
+ pd_index,
249
+ chunk_size=chunk_size,
250
+ gpu=gpu,
251
+ sparse=sparse,
252
+ store_data=store_data,
253
+ )
254
+
255
+ if need_repart:
256
+ index = index.rebalance(num_partitions=num_partitions)
257
+ super().__init__(index.data)
258
+
259
+
260
+ _pd_type_mapping = {
261
+ pd.DataFrame: DataFrame,
262
+ pd.Series: Series,
263
+ pd.Index: Index,
264
+ }
265
+
266
+
267
+ def read_pandas(
268
+ data: Union[pd.DataFrame, pd.Series, pd.Index], **kwargs
269
+ ) -> Union[DataFrame, Series, Index]:
270
+ """
271
+ Create MaxFrame objects from pandas.
272
+
273
+ Parameters
274
+ ----------
275
+ data: Union[pd.DataFrame, pd.Series, pd.Index]
276
+ pandas data
277
+ kwargs: dict
278
+ arguments to be passed to initializers.
279
+
280
+ Returns
281
+ -------
282
+ result: Union[DataFrame, Series, Index]
283
+ result MaxFrame object
284
+ """
285
+ for pd_cls, cls in _pd_type_mapping.items():
286
+ if isinstance(data, pd_cls):
287
+ return cls(data, **kwargs)
288
+ raise ValueError(f"Type {type(data)} not supported")
@@ -0,0 +1,32 @@
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 .append import DataFrameAppend, append
16
+ from .concat import DataFrameConcat, concat
17
+ from .merge import DataFrameMerge, DataFrameMergeAlign, join, merge
18
+
19
+
20
+ def _install():
21
+ from ..core import DATAFRAME_TYPE, SERIES_TYPE
22
+
23
+ for cls in DATAFRAME_TYPE:
24
+ setattr(cls, "join", join)
25
+ setattr(cls, "merge", merge)
26
+
27
+ for cls in DATAFRAME_TYPE + SERIES_TYPE:
28
+ setattr(cls, "append", append)
29
+
30
+
31
+ _install()
32
+ del _install