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,178 @@
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 ...core import ENTITY_TYPE, OutputType
19
+ from ...serialization.serializables import StringField
20
+ from ...tensor import tensor as astensor
21
+ from ..initializer import Series as asseries
22
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
23
+
24
+
25
+ class DataFrameToNumeric(DataFrameOperator, DataFrameOperatorMixin):
26
+ errors = StringField("errors")
27
+ downcast = StringField("downcast")
28
+
29
+ def __init__(self, errors="raise", downcast=None, **kw):
30
+ super().__init__(errors=errors, downcast=downcast, **kw)
31
+
32
+ @property
33
+ def input(self):
34
+ return self.inputs[0]
35
+
36
+ def __call__(self, arg):
37
+ if isinstance(arg, pd.Series):
38
+ arg = asseries(arg)
39
+ elif not isinstance(arg, ENTITY_TYPE):
40
+ arg = astensor(arg)
41
+ if arg.ndim != 1:
42
+ raise ValueError("Input array must be 1 dimensional")
43
+ if arg.size == 0:
44
+ raise ValueError("Input array can not be empty")
45
+
46
+ if isinstance(arg, asseries):
47
+ series = arg
48
+ self.output_types = [OutputType.series]
49
+ return self.new_series(
50
+ [series],
51
+ shape=series.shape,
52
+ name=series.name,
53
+ index_value=series.index_value,
54
+ dtype=series.dtype,
55
+ )
56
+ else:
57
+ tensor = arg
58
+ self.output_types = [OutputType.tensor]
59
+ dtype = tensor.dtype
60
+ if dtype.kind == "U":
61
+ dtype = np.dtype(object)
62
+ return self.new_tileables([tensor], shape=tensor.shape, dtype=dtype)[0]
63
+
64
+
65
+ def to_numeric(arg, errors="raise", downcast=None):
66
+ """
67
+ Convert argument to a numeric type.
68
+
69
+ The default return dtype is `float64` or `int64`
70
+ depending on the data supplied. Use the `downcast` parameter
71
+ to obtain other dtypes.
72
+
73
+ Please note that precision loss may occur if really large numbers
74
+ are passed in. Due to the internal limitations of `ndarray`, if
75
+ numbers smaller than `-9223372036854775808` (np.iinfo(np.int64).min)
76
+ or larger than `18446744073709551615` (np.iinfo(np.uint64).max) are
77
+ passed in, it is very likely they will be converted to float so that
78
+ they can stored in an `ndarray`. These warnings apply similarly to
79
+ `Series` since it internally leverages `ndarray`.
80
+
81
+ Parameters
82
+ ----------
83
+ arg : scalar, list, tuple, 1-d array, or Series
84
+ Argument to be converted.
85
+ errors : {'ignore', 'raise', 'coerce'}, default 'raise'
86
+ - If 'raise', then invalid parsing will raise an exception.
87
+ - If 'coerce', then invalid parsing will be set as NaN.
88
+ - If 'ignore', then invalid parsing will return the input.
89
+ downcast : {'integer', 'signed', 'unsigned', 'float'}, default None
90
+ If not None, and if the data has been successfully cast to a
91
+ numerical dtype (or if the data was numeric to begin with),
92
+ downcast that resulting data to the smallest numerical dtype
93
+ possible according to the following rules:
94
+
95
+ - 'integer' or 'signed': smallest signed int dtype (min.: np.int8)
96
+ - 'unsigned': smallest unsigned int dtype (min.: np.uint8)
97
+ - 'float': smallest float dtype (min.: np.float32)
98
+
99
+ As this behaviour is separate from the core conversion to
100
+ numeric values, any errors raised during the downcasting
101
+ will be surfaced regardless of the value of the 'errors' input.
102
+
103
+ In addition, downcasting will only occur if the size
104
+ of the resulting data's dtype is strictly larger than
105
+ the dtype it is to be cast to, so if none of the dtypes
106
+ checked satisfy that specification, no downcasting will be
107
+ performed on the data.
108
+
109
+ Returns
110
+ -------
111
+ ret
112
+ Numeric if parsing succeeded.
113
+ Return type depends on input. Series if Series, otherwise Tensor.
114
+
115
+ See Also
116
+ --------
117
+ DataFrame.astype : Cast argument to a specified dtype.
118
+ to_datetime : Convert argument to datetime.
119
+ to_timedelta : Convert argument to timedelta.
120
+ numpy.ndarray.astype : Cast a numpy array to a specified type.
121
+ DataFrame.convert_dtypes : Convert dtypes.
122
+
123
+ Examples
124
+ --------
125
+ Take separate series and convert to numeric, coercing when told to
126
+
127
+ >>> s = md.Series(['1.0', '2', -3])
128
+ >>> md.to_numeric(s).execute()
129
+ 0 1.0
130
+ 1 2.0
131
+ 2 -3.0
132
+ dtype: float64
133
+ >>> md.to_numeric(s, downcast='float').execute()
134
+ 0 1.0
135
+ 1 2.0
136
+ 2 -3.0
137
+ dtype: float32
138
+ >>> md.to_numeric(s, downcast='signed').execute()
139
+ 0 1
140
+ 1 2
141
+ 2 -3
142
+ dtype: int8
143
+ >>> s = md.Series(['apple', '1.0', '2', -3])
144
+ >>> md.to_numeric(s, errors='ignore').execute()
145
+ 0 apple
146
+ 1 1.0
147
+ 2 2
148
+ 3 -3
149
+ dtype: object
150
+ >>> md.to_numeric(s, errors='coerce').execute()
151
+ 0 NaN
152
+ 1 1.0
153
+ 2 2.0
154
+ 3 -3.0
155
+ dtype: float64
156
+
157
+ Downcasting of nullable integer and floating dtypes is supported:
158
+
159
+ >>> s = md.Series([1, 2, 3], dtype="int64")
160
+ >>> md.to_numeric(s, downcast="integer").execute()
161
+ 0 1
162
+ 1 2
163
+ 2 3
164
+ dtype: int8
165
+ >>> s = md.Series([1.0, 2.1, 3.0], dtype="float64")
166
+ >>> md.to_numeric(s, downcast="float").execute()
167
+ 0 1.0
168
+ 1 2.1
169
+ 2 3.0
170
+ dtype: float32
171
+ """
172
+ if errors not in ("ignore", "raise", "coerce"):
173
+ raise ValueError("invalid error value specified")
174
+ if downcast not in (None, "integer", "signed", "unsigned", "float"):
175
+ raise ValueError("invalid downcasting method provided")
176
+
177
+ op = DataFrameToNumeric(errors=errors, downcast=downcast)
178
+ return op(arg)
@@ -0,0 +1,361 @@
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 Any, Union
16
+
17
+ import numpy as np
18
+ import pandas as pd
19
+ from pandas import DataFrame, Series
20
+
21
+ from ... import opcodes
22
+ from ...core import OutputType
23
+ from ...serialization.serializables import AnyField, BoolField, DictField, TupleField
24
+ from ...utils import pd_release_version, quiet_stdio
25
+ from ..core import DATAFRAME_TYPE
26
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
27
+ from ..utils import (
28
+ build_df,
29
+ build_series,
30
+ make_dtypes,
31
+ pack_func_args,
32
+ parse_index,
33
+ validate_axis,
34
+ )
35
+
36
+ _with_convert_dtype = pd_release_version < (1, 2, 0)
37
+
38
+
39
+ class TransformOperator(DataFrameOperator, DataFrameOperatorMixin):
40
+ _op_type_ = opcodes.TRANSFORM
41
+
42
+ func = AnyField("func", default=None)
43
+ axis = AnyField("axis", default=None)
44
+ convert_dtype = BoolField("convert_dtype", default=None)
45
+ args = TupleField("args", default=())
46
+ kwds = DictField("kwds", default_factory=dict)
47
+
48
+ call_agg = BoolField("call_agg", default=None)
49
+
50
+ def __init__(self, output_types=None, memory_scale=None, **kw):
51
+ super().__init__(_output_types=output_types, _memory_scale=memory_scale, **kw)
52
+
53
+ def _infer_df_func_returns(self, df, dtypes):
54
+ packed_funcs = self.get_packed_funcs(df)
55
+ test_df = self._build_stub_pandas_obj(df)
56
+ if self.output_types[0] == OutputType.dataframe:
57
+ try:
58
+ with np.errstate(all="ignore"), quiet_stdio():
59
+ if self.call_agg:
60
+ infer_df = test_df.agg(packed_funcs, axis=self.axis)
61
+ else:
62
+ infer_df = test_df.transform(packed_funcs, axis=self.axis)
63
+ except: # noqa: E722
64
+ infer_df = None
65
+ else:
66
+ try:
67
+ with np.errstate(all="ignore"), quiet_stdio():
68
+ if self.call_agg:
69
+ infer_df = test_df.agg(packed_funcs)
70
+ else:
71
+ if not _with_convert_dtype:
72
+ infer_df = test_df.transform(packed_funcs)
73
+ else: # pragma: no cover
74
+ infer_df = test_df.transform(
75
+ packed_funcs, convert_dtype=self.convert_dtype
76
+ )
77
+ except: # noqa: E722
78
+ infer_df = None
79
+
80
+ if infer_df is None and dtypes is None:
81
+ raise TypeError(
82
+ "Failed to infer dtype, please specify dtypes as arguments."
83
+ )
84
+
85
+ if infer_df is None:
86
+ is_df = self.output_types[0] == OutputType.dataframe
87
+ else:
88
+ is_df = isinstance(infer_df, pd.DataFrame)
89
+
90
+ if is_df:
91
+ new_dtypes = make_dtypes(dtypes) if dtypes is not None else infer_df.dtypes
92
+ self.output_types = [OutputType.dataframe]
93
+ else:
94
+ new_dtypes = (
95
+ dtypes if dtypes is not None else (infer_df.name, infer_df.dtype)
96
+ )
97
+ self.output_types = [OutputType.series]
98
+
99
+ return new_dtypes
100
+
101
+ def __call__(self, df, dtypes=None, index=None, skip_infer=None):
102
+ axis = getattr(self, "axis", None) or 0
103
+ self.axis = validate_axis(axis, df)
104
+ if not skip_infer:
105
+ dtypes = self._infer_df_func_returns(df, dtypes)
106
+
107
+ if self.output_types[0] == OutputType.dataframe:
108
+ new_shape = list(df.shape)
109
+ new_index_value = df.index_value
110
+ if len(new_shape) == 1:
111
+ new_shape.append(len(dtypes) if dtypes is not None else np.nan)
112
+ else:
113
+ new_shape[1] = len(dtypes) if dtypes is not None else np.nan
114
+
115
+ if self.call_agg:
116
+ new_shape[self.axis] = np.nan
117
+ new_index_value = parse_index(None, (df.key, df.index_value.key))
118
+ if dtypes is None:
119
+ columns_value = None
120
+ else:
121
+ columns_value = parse_index(dtypes.index, store_data=True)
122
+ return self.new_dataframe(
123
+ [df],
124
+ shape=tuple(new_shape),
125
+ dtypes=dtypes,
126
+ index_value=new_index_value,
127
+ columns_value=columns_value,
128
+ )
129
+ else:
130
+ if dtypes is not None:
131
+ name, dtype = dtypes
132
+ else:
133
+ name, dtype = None, None
134
+
135
+ if isinstance(df, DATAFRAME_TYPE):
136
+ new_shape = (df.shape[1 - axis],)
137
+ new_index_value = [df.columns_value, df.index_value][axis]
138
+ else:
139
+ new_shape = (np.nan,) if self.call_agg else df.shape
140
+ new_index_value = df.index_value
141
+
142
+ return self.new_series(
143
+ [df],
144
+ shape=new_shape,
145
+ name=name,
146
+ dtype=dtype,
147
+ index_value=new_index_value,
148
+ )
149
+
150
+ def get_packed_funcs(self, df=None) -> Any:
151
+ stub_df = self._build_stub_pandas_obj(df or self.inputs[0])
152
+ return pack_func_args(stub_df, self.func, *self.args, **self.kwds)
153
+
154
+ def _build_stub_pandas_obj(self, df) -> Union[DataFrame, Series]:
155
+ # TODO: Simulate a dataframe with the corresponding indexes if self.func is
156
+ # a dict and axis=1
157
+ if self.output_types[0] == OutputType.dataframe:
158
+ return build_df(df, fill_value=1, size=1)
159
+ return build_series(df, size=1, name=df.name)
160
+
161
+
162
+ def df_transform(df, func, axis=0, *args, dtypes=None, skip_infer=False, **kwargs):
163
+ """
164
+ Call ``func`` on self producing a DataFrame with transformed values.
165
+
166
+ Produced DataFrame will have same axis length as self.
167
+
168
+ Parameters
169
+ ----------
170
+ func : function, str, list or dict
171
+ Function to use for transforming the data. If a function, must either
172
+ work when passed a DataFrame or when passed to DataFrame.apply.
173
+
174
+ Accepted combinations are:
175
+
176
+ - function
177
+ - string function name
178
+ - list of functions and/or function names, e.g. ``[np.exp. 'sqrt']``
179
+ - dict of axis labels -> functions, function names or list of such.
180
+ axis : {0 or 'index', 1 or 'columns'}, default 0
181
+ If 0 or 'index': apply function to each column.
182
+ If 1 or 'columns': apply function to each row.
183
+
184
+ dtypes : Series, default None
185
+ Specify dtypes of returned DataFrames. See `Notes` for more details.
186
+
187
+ skip_infer: bool, default False
188
+ Whether infer dtypes when dtypes or output_type is not specified.
189
+
190
+ *args
191
+ Positional arguments to pass to `func`.
192
+ **kwargs
193
+ Keyword arguments to pass to `func`.
194
+
195
+ Returns
196
+ -------
197
+ DataFrame
198
+ A DataFrame that must have the same length as self.
199
+
200
+ Raises
201
+ ------
202
+ ValueError : If the returned DataFrame has a different length than self.
203
+
204
+ See Also
205
+ --------
206
+ DataFrame.agg : Only perform aggregating type operations.
207
+ DataFrame.apply : Invoke function on a DataFrame.
208
+
209
+ Notes
210
+ -----
211
+ When deciding output dtypes and shape of the return value, MaxFrame will
212
+ try applying ``func`` onto a mock DataFrame and the apply call may
213
+ fail. When this happens, you need to specify a list or a pandas
214
+ Series as ``dtypes`` of output DataFrame.
215
+
216
+ Examples
217
+ --------
218
+ >>> import maxframe.tensor as mt
219
+ >>> import maxframe.dataframe as md
220
+ >>> df = md.DataFrame({'A': range(3), 'B': range(1, 4)})
221
+ >>> df.execute()
222
+ A B
223
+ 0 0 1
224
+ 1 1 2
225
+ 2 2 3
226
+ >>> df.transform(lambda x: x + 1).execute()
227
+ A B
228
+ 0 1 2
229
+ 1 2 3
230
+ 2 3 4
231
+
232
+ Even though the resulting DataFrame must have the same length as the
233
+ input DataFrame, it is possible to provide several input functions:
234
+
235
+ >>> s = md.Series(range(3))
236
+ >>> s.execute()
237
+ 0 0
238
+ 1 1
239
+ 2 2
240
+ dtype: int64
241
+ >>> s.transform([mt.sqrt, mt.exp]).execute()
242
+ sqrt exp
243
+ 0 0.000000 1.000000
244
+ 1 1.000000 2.718282
245
+ 2 1.414214 7.389056
246
+ """
247
+ op = TransformOperator(
248
+ func=func,
249
+ axis=axis,
250
+ args=args,
251
+ kwds=kwargs,
252
+ output_types=[OutputType.dataframe],
253
+ call_agg=kwargs.pop("_call_agg", False),
254
+ )
255
+ return op(df, dtypes=dtypes, skip_infer=skip_infer)
256
+
257
+
258
+ def series_transform(
259
+ series,
260
+ func,
261
+ convert_dtype=True,
262
+ axis=0,
263
+ *args,
264
+ skip_infer=False,
265
+ dtype=None,
266
+ **kwargs
267
+ ):
268
+ """
269
+ Call ``func`` on self producing a Series with transformed values.
270
+
271
+ Produced Series will have same axis length as self.
272
+
273
+ Parameters
274
+ ----------
275
+ func : function, str, list or dict
276
+ Function to use for transforming the data. If a function, must either
277
+ work when passed a Series or when passed to Series.apply.
278
+
279
+ Accepted combinations are:
280
+
281
+ - function
282
+ - string function name
283
+ - list of functions and/or function names, e.g. ``[np.exp. 'sqrt']``
284
+ - dict of axis labels -> functions, function names or list of such.
285
+ axis : {0 or 'index'}
286
+ Parameter needed for compatibility with DataFrame.
287
+
288
+ dtype : numpy.dtype, default None
289
+ Specify dtypes of returned DataFrames. See `Notes` for more details.
290
+
291
+ skip_infer: bool, default False
292
+ Whether infer dtypes when dtypes or output_type is not specified.
293
+
294
+ *args
295
+ Positional arguments to pass to `func`.
296
+ **kwargs
297
+ Keyword arguments to pass to `func`.
298
+
299
+ Returns
300
+ -------
301
+ Series
302
+ A Series that must have the same length as self.
303
+
304
+ Raises
305
+ ------
306
+ ValueError : If the returned Series has a different length than self.
307
+
308
+ See Also
309
+ --------
310
+ Series.agg : Only perform aggregating type operations.
311
+ Series.apply : Invoke function on a Series.
312
+
313
+ Notes
314
+ -----
315
+ When deciding output dtypes and shape of the return value, MaxFrame will
316
+ try applying ``func`` onto a mock Series, and the transform call may
317
+ fail. When this happens, you need to specify ``dtype`` of output
318
+ Series.
319
+
320
+ Examples
321
+ --------
322
+ >>> import maxframe.tensor as mt
323
+ >>> import maxframe.dataframe as md
324
+ >>> df = md.DataFrame({'A': range(3), 'B': range(1, 4)})
325
+ >>> df.execute()
326
+ A B
327
+ 0 0 1
328
+ 1 1 2
329
+ 2 2 3
330
+ >>> df.transform(lambda x: x + 1).execute()
331
+ A B
332
+ 0 1 2
333
+ 1 2 3
334
+ 2 3 4
335
+
336
+ Even though the resulting Series must have the same length as the
337
+ input Series, it is possible to provide several input functions:
338
+
339
+ >>> s = md.Series(range(3))
340
+ >>> s.execute()
341
+ 0 0
342
+ 1 1
343
+ 2 2
344
+ dtype: int64
345
+ >>> s.transform([mt.sqrt, mt.exp]).execute()
346
+ sqrt exp
347
+ 0 0.000000 1.000000
348
+ 1 1.000000 2.718282
349
+ 2 1.414214 7.389056
350
+ """
351
+ op = TransformOperator(
352
+ func=func,
353
+ axis=axis,
354
+ convert_dtype=convert_dtype,
355
+ args=args,
356
+ kwds=kwargs,
357
+ output_types=[OutputType.series],
358
+ call_agg=kwargs.pop("_call_agg", False),
359
+ )
360
+ dtypes = (series.name, dtype) if dtype is not None else None
361
+ return op(series, dtypes=dtypes, skip_infer=skip_infer)
@@ -0,0 +1,136 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ from ... import opcodes
16
+ from ...core import OutputType
17
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
18
+ from ..utils import parse_index
19
+
20
+
21
+ class DataFrameTranspose(DataFrameOperator, DataFrameOperatorMixin):
22
+ _op_type_ = opcodes.TRANSPOSE
23
+
24
+ def __init__(self, **kw):
25
+ super().__init__(**kw)
26
+ self.output_types = [OutputType.dataframe]
27
+
28
+ def __call__(self, args):
29
+ arg = args[0]
30
+ new_shape = arg.shape[::-1]
31
+ columns_value = arg.index_value
32
+ index_value = parse_index(arg.dtypes.index)
33
+ return self.new_dataframe(
34
+ [arg],
35
+ shape=new_shape,
36
+ dtypes=None,
37
+ columns_value=columns_value,
38
+ index_value=index_value,
39
+ )
40
+
41
+
42
+ def transpose(*args):
43
+ """
44
+ Transpose index and columns.
45
+
46
+ Reflect the DataFrame over its main diagonal by writing rows as columns
47
+ and vice-versa. The property :attr:`.T` is an accessor to the method
48
+ :meth:`transpose`.
49
+
50
+ Parameters
51
+ ----------
52
+ *args : tuple, optional
53
+ Accepted for compatibility with NumPy.
54
+
55
+ Returns
56
+ -------
57
+ DataFrame
58
+ The transposed DataFrame.
59
+
60
+ See Also
61
+ --------
62
+ numpy.transpose : Permute the dimensions of a given array.
63
+
64
+ Notes
65
+ -----
66
+ Transposing a DataFrame with mixed dtypes will result in a homogeneous
67
+ DataFrame with the `object` dtype.
68
+
69
+ Examples
70
+ --------
71
+ **Square DataFrame with homogeneous dtype**
72
+
73
+ >>> import maxframe.dataframe as md
74
+ >>> d1 = {'col1': [1, 2], 'col2': [3, 4]}
75
+ >>> df1 = md.DataFrame(data=d1).execute()
76
+ >>> df1
77
+ col1 col2
78
+ 0 1 3
79
+ 1 2 4
80
+
81
+ >>> df1_transposed = df1.T.execute() # or df1.transpose().execute()
82
+ >>> df1_transposed
83
+ 0 1
84
+ col1 1 2
85
+ col2 3 4
86
+
87
+ When the dtype is homogeneous in the original DataFrame, we get a
88
+ transposed DataFrame with the same dtype:
89
+
90
+ >>> df1.dtypes
91
+ col1 int64
92
+ col2 int64
93
+ dtype: object
94
+
95
+ >>> df1_transposed.dtypes
96
+ 0 int64
97
+ 1 int64
98
+ dtype: object
99
+
100
+ **Non-square DataFrame with mixed dtypes**
101
+
102
+ >>> d2 = {'name': ['Alice', 'Bob'],
103
+ ... 'score': [9.5, 8],
104
+ ... 'employed': [False, True],
105
+ ... 'kids': [0, 0]}
106
+ >>> df2 = md.DataFrame(data=d2).execute()
107
+ >>> df2
108
+ name score employed kids
109
+ 0 Alice 9.5 False 0
110
+ 1 Bob 8.0 True 0
111
+
112
+ >>> df2_transposed = df2.T.execute() # or df2.transpose().execute()
113
+ >>> df2_transposed
114
+ 0 1
115
+ name Alice Bob
116
+ score 9.5 8.0
117
+ employed False True
118
+ kids 0 0
119
+
120
+ When the DataFrame has mixed dtypes, we get a transposed DataFrame with
121
+ the `object` dtype:
122
+
123
+ >>> df2.dtypes
124
+ name object
125
+ score float64
126
+ employed bool
127
+ kids int64
128
+ dtype: object
129
+
130
+ >>> df2_transposed.dtypes
131
+ 0 object
132
+ 1 object
133
+ dtype: object
134
+ """
135
+ op = DataFrameTranspose()
136
+ return op(args)