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,236 @@
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 inspect
16
+ from collections.abc import MutableMapping
17
+
18
+ import numpy as np
19
+ import pandas as pd
20
+
21
+ from ... import opcodes
22
+ from ...core import OutputType
23
+ from ...serialization.serializables import AnyField, KeyField, StringField
24
+ from ...utils import quiet_stdio
25
+ from ..core import SERIES_TYPE
26
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
27
+ from ..utils import build_series
28
+
29
+
30
+ class DataFrameMap(DataFrameOperator, DataFrameOperatorMixin):
31
+ _op_type_ = opcodes.MAP
32
+
33
+ input = KeyField("input", default=None)
34
+ arg = AnyField("arg", default=None)
35
+ na_action = StringField("na_action", default=None)
36
+
37
+ def __init__(self, output_types=None, memory_scale=None, **kw):
38
+ super().__init__(_output_types=output_types, _memory_scale=memory_scale, **kw)
39
+ if not self.output_types:
40
+ self.output_types = [OutputType.series]
41
+
42
+ def _set_inputs(self, inputs):
43
+ super()._set_inputs(inputs)
44
+ self.input = self._inputs[0]
45
+ if len(inputs) == 2:
46
+ self.arg = self._inputs[1]
47
+
48
+ def __call__(self, series, dtype, skip_infer=False):
49
+ if dtype is None and not skip_infer:
50
+ inferred_dtype = None
51
+ if callable(self.arg):
52
+ # arg is a function, try to inspect the signature
53
+ sig = inspect.signature(self.arg)
54
+ return_type = sig.return_annotation
55
+ if return_type is not inspect._empty:
56
+ inferred_dtype = np.dtype(return_type)
57
+ else:
58
+ try:
59
+ with quiet_stdio():
60
+ # try to infer dtype by calling the function
61
+ inferred_dtype = (
62
+ build_series(series)
63
+ .map(self.arg, na_action=self.na_action)
64
+ .dtype
65
+ )
66
+ except: # noqa: E722 # nosec
67
+ pass
68
+ else:
69
+ if isinstance(self.arg, MutableMapping):
70
+ inferred_dtype = pd.Series(self.arg).dtype
71
+ else:
72
+ inferred_dtype = self.arg.dtype
73
+ if inferred_dtype is not None and np.issubdtype(inferred_dtype, np.number):
74
+ if np.issubdtype(inferred_dtype, np.inexact):
75
+ # for the inexact e.g. float
76
+ # we can make the decision,
77
+ # but for int, due to the nan which may occur,
78
+ # we cannot infer the dtype
79
+ dtype = inferred_dtype
80
+ else:
81
+ dtype = inferred_dtype
82
+
83
+ if dtype is None:
84
+ if not skip_infer:
85
+ raise ValueError(
86
+ "cannot infer dtype, it needs to be specified manually for `map`"
87
+ )
88
+ else:
89
+ dtype = np.int64 if dtype is int else dtype
90
+ dtype = np.dtype(dtype)
91
+
92
+ inputs = [series]
93
+ if isinstance(self.arg, SERIES_TYPE):
94
+ inputs.append(self.arg)
95
+
96
+ if isinstance(series, SERIES_TYPE):
97
+ return self.new_series(
98
+ inputs,
99
+ shape=series.shape,
100
+ dtype=dtype,
101
+ index_value=series.index_value,
102
+ name=series.name,
103
+ )
104
+ else:
105
+ return self.new_index(
106
+ inputs,
107
+ shape=series.shape,
108
+ dtype=dtype,
109
+ index_value=series.index_value,
110
+ name=series.name,
111
+ )
112
+
113
+
114
+ def series_map(
115
+ series, arg, na_action=None, dtype=None, memory_scale=None, skip_infer=False
116
+ ):
117
+ """
118
+ Map values of Series according to input correspondence.
119
+
120
+ Used for substituting each value in a Series with another value,
121
+ that may be derived from a function, a ``dict`` or
122
+ a :class:`Series`.
123
+
124
+ Parameters
125
+ ----------
126
+ arg : function, collections.abc.Mapping subclass or Series
127
+ Mapping correspondence.
128
+ na_action : {None, 'ignore'}, default None
129
+ If 'ignore', propagate NaN values, without passing them to the
130
+ mapping correspondence.
131
+ dtype : np.dtype, default None
132
+ Specify return type of the function. Must be specified when
133
+ we cannot decide the return type of the function.
134
+ memory_scale : float
135
+ Specify the scale of memory uses in the function versus
136
+ input size.
137
+ skip_infer: bool, default False
138
+ Whether infer dtypes when dtypes or output_type is not specified
139
+
140
+ Returns
141
+ -------
142
+ Series
143
+ Same index as caller.
144
+
145
+ See Also
146
+ --------
147
+ Series.apply : For applying more complex functions on a Series.
148
+ DataFrame.apply : Apply a function row-/column-wise.
149
+ DataFrame.applymap : Apply a function elementwise on a whole DataFrame.
150
+
151
+ Notes
152
+ -----
153
+ When ``arg`` is a dictionary, values in Series that are not in the
154
+ dictionary (as keys) are converted to ``NaN``. However, if the
155
+ dictionary is a ``dict`` subclass that defines ``__missing__`` (i.e.
156
+ provides a method for default values), then this default is used
157
+ rather than ``NaN``.
158
+
159
+ Examples
160
+ --------
161
+ >>> import maxframe.tensor as mt
162
+ >>> import maxframe.dataframe as md
163
+ >>> s = md.Series(['cat', 'dog', mt.nan, 'rabbit'])
164
+ >>> s.execute()
165
+ 0 cat
166
+ 1 dog
167
+ 2 NaN
168
+ 3 rabbit
169
+ dtype: object
170
+
171
+ ``map`` accepts a ``dict`` or a ``Series``. Values that are not found
172
+ in the ``dict`` are converted to ``NaN``, unless the dict has a default
173
+ value (e.g. ``defaultdict``):
174
+
175
+ >>> s.map({'cat': 'kitten', 'dog': 'puppy'}).execute()
176
+ 0 kitten
177
+ 1 puppy
178
+ 2 NaN
179
+ 3 NaN
180
+ dtype: object
181
+
182
+ It also accepts a function:
183
+
184
+ >>> s.map('I am a {}'.format).execute()
185
+ 0 I am a cat
186
+ 1 I am a dog
187
+ 2 I am a nan
188
+ 3 I am a rabbit
189
+ dtype: object
190
+
191
+ To avoid applying the function to missing values (and keep them as
192
+ ``NaN``) ``na_action='ignore'`` can be used:
193
+
194
+ >>> s.map('I am a {}'.format, na_action='ignore').execute()
195
+ 0 I am a cat
196
+ 1 I am a dog
197
+ 2 NaN
198
+ 3 I am a rabbit
199
+ dtype: object
200
+ """
201
+ op = DataFrameMap(arg=arg, na_action=na_action, memory_scale=memory_scale)
202
+ return op(series, dtype=dtype, skip_infer=skip_infer)
203
+
204
+
205
+ def index_map(
206
+ idx, mapper, na_action=None, dtype=None, memory_scale=None, skip_infer=False
207
+ ):
208
+ """
209
+ Map values using input correspondence (a dict, Series, or function).
210
+
211
+ Parameters
212
+ ----------
213
+ mapper : function, dict, or Series
214
+ Mapping correspondence.
215
+ na_action : {None, 'ignore'}
216
+ If 'ignore', propagate NA values, without passing them to the
217
+ mapping correspondence.
218
+ dtype : np.dtype, default None
219
+ Specify return type of the function. Must be specified when
220
+ we cannot decide the return type of the function.
221
+ memory_scale : float
222
+ Specify the scale of memory uses in the function versus
223
+ input size.
224
+ skip_infer: bool, default False
225
+ Whether infer dtypes when dtypes or output_type is not specified
226
+
227
+
228
+ Returns
229
+ -------
230
+ applied : Union[Index, MultiIndex], inferred
231
+ The output of the mapping function applied to the index.
232
+ If the function returns a tuple with more than one element
233
+ a MultiIndex will be returned.
234
+ """
235
+ op = DataFrameMap(arg=mapper, na_action=na_action, memory_scale=memory_scale)
236
+ return op(idx, dtype=dtype, skip_infer=skip_infer)
@@ -0,0 +1,162 @@
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 ...serialization.serializables import AnyField, StringField
20
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin, OutputType
21
+ from ..utils import build_empty_df, parse_index
22
+
23
+
24
+ class DataFrameMelt(DataFrameOperator, DataFrameOperatorMixin):
25
+ _op_type_ = opcodes.MELT
26
+
27
+ id_vars = AnyField("id_vars", default=None)
28
+ value_vars = AnyField("value_vars", default=None)
29
+ var_name = StringField("var_name", default=None)
30
+ value_name = StringField("value_name", default=None)
31
+ col_level = AnyField("col_level", default=None)
32
+
33
+ def __call__(self, df):
34
+ empty_result = build_empty_df(df.dtypes).melt(
35
+ id_vars=self.id_vars,
36
+ value_vars=self.value_vars,
37
+ var_name=self.var_name,
38
+ value_name=self.value_name,
39
+ col_level=self.col_level,
40
+ )
41
+ self._output_types = [OutputType.dataframe]
42
+ return self.new_tileable(
43
+ [df],
44
+ shape=(np.nan, len(empty_result.columns)),
45
+ dtypes=empty_result.dtypes,
46
+ index_value=parse_index(pd.RangeIndex(-1), df.key, df.index_value.key),
47
+ columns_value=parse_index(empty_result.columns, store_data=True),
48
+ )
49
+
50
+
51
+ def melt(
52
+ frame,
53
+ id_vars=None,
54
+ value_vars=None,
55
+ var_name=None,
56
+ value_name="value",
57
+ col_level=None,
58
+ ):
59
+ """
60
+ Unpivot a DataFrame from wide to long format, optionally leaving identifiers set.
61
+
62
+ This function is useful to massage a DataFrame into a format where one
63
+ or more columns are identifier variables (`id_vars`), while all other
64
+ columns, considered measured variables (`value_vars`), are "unpivoted" to
65
+ the row axis, leaving just two non-identifier columns, 'variable' and
66
+ 'value'.
67
+
68
+ Parameters
69
+ ----------
70
+ id_vars : tuple, list, or ndarray, optional
71
+ Column(s) to use as identifier variables.
72
+ value_vars : tuple, list, or ndarray, optional
73
+ Column(s) to unpivot. If not specified, uses all columns that
74
+ are not set as `id_vars`.
75
+ var_name : scalar
76
+ Name to use for the 'variable' column. If None it uses
77
+ ``frame.columns.name`` or 'variable'.
78
+ value_name : scalar, default 'value'
79
+ Name to use for the 'value' column.
80
+ col_level : int or str, optional
81
+ If columns are a MultiIndex then use this level to melt.
82
+
83
+ Returns
84
+ -------
85
+ DataFrame
86
+ Unpivoted DataFrame.
87
+
88
+ See Also
89
+ --------
90
+ melt
91
+ pivot_table
92
+ DataFrame.pivot
93
+ Series.explode
94
+
95
+ Examples
96
+ --------
97
+ >>> import maxframe.dataframe as md
98
+ >>> df = md.DataFrame({'A': {0: 'a', 1: 'b', 2: 'c'},
99
+ ... 'B': {0: 1, 1: 3, 2: 5},
100
+ ... 'C': {0: 2, 1: 4, 2: 6}})
101
+ >>> df.execute()
102
+ A B C
103
+ 0 a 1 2
104
+ 1 b 3 4
105
+ 2 c 5 6
106
+
107
+ >>> df.melt(id_vars=['A'], value_vars=['B']).execute()
108
+ A variable value
109
+ 0 a B 1
110
+ 1 b B 3
111
+ 2 c B 5
112
+
113
+ >>> df.melt(id_vars=['A'], value_vars=['B', 'C']).execute()
114
+ A variable value
115
+ 0 a B 1
116
+ 1 b B 3
117
+ 2 c B 5
118
+ 3 a C 2
119
+ 4 b C 4
120
+ 5 c C 6
121
+
122
+ The names of 'variable' and 'value' columns can be customized:
123
+
124
+ >>> df.melt(id_vars=['A'], value_vars=['B'],
125
+ ... var_name='myVarname', value_name='myValname').execute()
126
+ A myVarname myValname
127
+ 0 a B 1
128
+ 1 b B 3
129
+ 2 c B 5
130
+
131
+ If you have multi-index columns:
132
+
133
+ >>> df = md.DataFrame({('A', 'D'): {0: 'a', 1: 'b', 2: 'c'},
134
+ ... ('B', 'E'): {0: 1, 1: 3, 2: 5},
135
+ ... ('C', 'F'): {0: 2, 1: 4, 2: 6}})
136
+ >>> df.execute()
137
+ A B C
138
+ D E F
139
+ 0 a 1 2
140
+ 1 b 3 4
141
+ 2 c 5 6
142
+
143
+ >>> df.melt(col_level=0, id_vars=['A'], value_vars=['B']).execute()
144
+ A variable value
145
+ 0 a B 1
146
+ 1 b B 3
147
+ 2 c B 5
148
+
149
+ >>> df.melt(id_vars=[('A', 'D')], value_vars=[('B', 'E')]).execute()
150
+ (A, D) variable_0 variable_1 value
151
+ 0 a B E 1
152
+ 1 b B E 3
153
+ 2 c B E 5
154
+ """
155
+ op = DataFrameMelt(
156
+ id_vars=id_vars,
157
+ value_vars=value_vars,
158
+ var_name=var_name,
159
+ value_name=value_name,
160
+ col_level=col_level,
161
+ )
162
+ return op(frame)
@@ -0,0 +1,248 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import numpy as np
16
+
17
+ from ... import opcodes
18
+ from ...serialization.serializables import BoolField, Int64Field
19
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
20
+ from ..utils import parse_index
21
+
22
+
23
+ class DataFrameMemoryUsage(DataFrameOperator, DataFrameOperatorMixin):
24
+ _op_type_ = opcodes.MEMORY_USAGE
25
+
26
+ # raw arguments of memory_usage method
27
+ index = BoolField("index", default=None)
28
+ deep = BoolField("deep", default=None)
29
+
30
+ # size of range index, when set, the value will be prepended to the result series
31
+ # if the input is a dataframe, or added to the result when the input is a series
32
+ range_index_size = Int64Field("range_index_size", default=None)
33
+
34
+ def _adapt_index(self, input_index, index=0):
35
+ """
36
+ When ``index=True`` is passed, an extra column will be prepended to the result series
37
+ Thus we need to update the index of initial chunk for returned dataframe chunks
38
+ """
39
+ if not self.index or index != 0:
40
+ return input_index
41
+ idx_data = input_index.to_pandas().insert(0, "Index")
42
+ return parse_index(idx_data, store_data=True)
43
+
44
+ def _adapt_nsplits(self, input_nsplit):
45
+ """
46
+ When ``index=True`` is passed, the size of returned series is one element larger
47
+ than the number of columns, which affects ``nsplits``.
48
+ """
49
+ if not self.index:
50
+ return (input_nsplit[-1],)
51
+ nsplits_list = list(input_nsplit[-1])
52
+ nsplits_list[0] += 1
53
+ return (tuple(nsplits_list),)
54
+
55
+ def __call__(self, df_or_series):
56
+ """
57
+ Return output object of memory_usage() call
58
+ """
59
+ if df_or_series.ndim == 1:
60
+ # the input data is a series, a Scalar will be returned
61
+ return self.new_scalar([df_or_series], dtype=np.dtype(np.int_))
62
+ else:
63
+ # the input data is a DataFrame, a Scalar will be returned
64
+ # calculate shape of returning series given ``op.index``
65
+ new_shape = (
66
+ (df_or_series.shape[-1] + 1,)
67
+ if self.index
68
+ else (df_or_series.shape[-1],)
69
+ )
70
+ return self.new_series(
71
+ [df_or_series],
72
+ index_value=self._adapt_index(df_or_series.columns_value),
73
+ shape=new_shape,
74
+ dtype=np.dtype(np.int_),
75
+ )
76
+
77
+
78
+ def df_memory_usage(df, index=True, deep=False):
79
+ """
80
+ Return the memory usage of each column in bytes.
81
+
82
+ The memory usage can optionally include the contribution of
83
+ the index and elements of `object` dtype.
84
+
85
+ This value is displayed in `DataFrame.info` by default. This can be
86
+ suppressed by setting ``pandas.options.display.memory_usage`` to False.
87
+
88
+ Parameters
89
+ ----------
90
+ index : bool, default True
91
+ Specifies whether to include the memory usage of the DataFrame's
92
+ index in returned Series. If ``index=True``, the memory usage of
93
+ the index is the first item in the output.
94
+ deep : bool, default False
95
+ If True, introspect the data deeply by interrogating
96
+ `object` dtypes for system-level memory consumption, and include
97
+ it in the returned values.
98
+
99
+ Returns
100
+ -------
101
+ Series
102
+ A Series whose index is the original column names and whose values
103
+ is the memory usage of each column in bytes.
104
+
105
+ See Also
106
+ --------
107
+ numpy.ndarray.nbytes : Total bytes consumed by the elements of an
108
+ ndarray.
109
+ Series.memory_usage : Bytes consumed by a Series.
110
+ Categorical : Memory-efficient array for string values with
111
+ many repeated values.
112
+ DataFrame.info : Concise summary of a DataFrame.
113
+
114
+ Examples
115
+ --------
116
+ >>> import maxframe.tensor as mt
117
+ >>> import maxframe.dataframe as md
118
+ >>> dtypes = ['int64', 'float64', 'complex128', 'object', 'bool']
119
+ >>> data = dict([(t, mt.ones(shape=5000).astype(t))
120
+ ... for t in dtypes])
121
+ >>> df = md.DataFrame(data)
122
+ >>> df.head().execute()
123
+ int64 float64 complex128 object bool
124
+ 0 1 1.0 1.000000+0.000000j 1 True
125
+ 1 1 1.0 1.000000+0.000000j 1 True
126
+ 2 1 1.0 1.000000+0.000000j 1 True
127
+ 3 1 1.0 1.000000+0.000000j 1 True
128
+ 4 1 1.0 1.000000+0.000000j 1 True
129
+
130
+ >>> df.memory_usage().execute()
131
+ Index 128
132
+ int64 40000
133
+ float64 40000
134
+ complex128 80000
135
+ object 40000
136
+ bool 5000
137
+ dtype: int64
138
+
139
+ >>> df.memory_usage(index=False).execute()
140
+ int64 40000
141
+ float64 40000
142
+ complex128 80000
143
+ object 40000
144
+ bool 5000
145
+ dtype: int64
146
+
147
+ The memory footprint of `object` dtype columns is ignored by default:
148
+
149
+ >>> df.memory_usage(deep=True).execute()
150
+ Index 128
151
+ int64 40000
152
+ float64 40000
153
+ complex128 80000
154
+ object 160000
155
+ bool 5000
156
+ dtype: int64
157
+
158
+ Use a Categorical for efficient storage of an object-dtype column with
159
+ many repeated values.
160
+
161
+ >>> df['object'].astype('category').memory_usage(deep=True).execute()
162
+ 5216
163
+ """
164
+ op = DataFrameMemoryUsage(index=index, deep=deep)
165
+ return op(df)
166
+
167
+
168
+ def series_memory_usage(series, index=True, deep=False):
169
+ """
170
+ Return the memory usage of the Series.
171
+
172
+ The memory usage can optionally include the contribution of
173
+ the index and of elements of `object` dtype.
174
+
175
+ Parameters
176
+ ----------
177
+ index : bool, default True
178
+ Specifies whether to include the memory usage of the Series index.
179
+ deep : bool, default False
180
+ If True, introspect the data deeply by interrogating
181
+ `object` dtypes for system-level memory consumption, and include
182
+ it in the returned value.
183
+
184
+ Returns
185
+ -------
186
+ int
187
+ Bytes of memory consumed.
188
+
189
+ See Also
190
+ --------
191
+ numpy.ndarray.nbytes : Total bytes consumed by the elements of the
192
+ array.
193
+ DataFrame.memory_usage : Bytes consumed by a DataFrame.
194
+
195
+ Examples
196
+ --------
197
+ >>> import maxframe.dataframe as md
198
+ >>> s = md.Series(range(3))
199
+ >>> s.memory_usage().execute()
200
+ 152
201
+
202
+ Not including the index gives the size of the rest of the data, which
203
+ is necessarily smaller:
204
+
205
+ >>> s.memory_usage(index=False).execute()
206
+ 24
207
+
208
+ The memory footprint of `object` values is ignored by default:
209
+
210
+ >>> s = md.Series(["a", "b"])
211
+ >>> s.values.execute()
212
+ array(['a', 'b'], dtype=object)
213
+
214
+ >>> s.memory_usage().execute()
215
+ 144
216
+
217
+ >>> s.memory_usage(deep=True).execute()
218
+ 260
219
+ """
220
+ op = DataFrameMemoryUsage(index=index, deep=deep)
221
+ return op(series)
222
+
223
+
224
+ def index_memory_usage(index, deep=False):
225
+ """
226
+ Memory usage of the values.
227
+
228
+ Parameters
229
+ ----------
230
+ deep : bool
231
+ Introspect the data deeply, interrogate
232
+ `object` dtypes for system-level memory consumption.
233
+
234
+ Returns
235
+ -------
236
+ bytes used
237
+
238
+ See Also
239
+ --------
240
+ numpy.ndarray.nbytes
241
+
242
+ Notes
243
+ -----
244
+ Memory usage does not include memory consumed by elements that
245
+ are not components of the array if deep=False
246
+ """
247
+ op = DataFrameMemoryUsage(index=False, deep=deep)
248
+ return op(index)