maxframe 0.1.0b5__cp311-cp311-macosx_11_0_arm64.whl

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

Potentially problematic release.


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

Files changed (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-311-darwin.so +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyx +547 -0
  5. maxframe/codegen.py +528 -0
  6. maxframe/config/__init__.py +15 -0
  7. maxframe/config/config.py +443 -0
  8. maxframe/config/tests/__init__.py +13 -0
  9. maxframe/config/tests/test_config.py +103 -0
  10. maxframe/config/tests/test_validators.py +34 -0
  11. maxframe/config/validators.py +57 -0
  12. maxframe/conftest.py +139 -0
  13. maxframe/core/__init__.py +65 -0
  14. maxframe/core/base.py +156 -0
  15. maxframe/core/entity/__init__.py +44 -0
  16. maxframe/core/entity/chunks.py +68 -0
  17. maxframe/core/entity/core.py +152 -0
  18. maxframe/core/entity/executable.py +337 -0
  19. maxframe/core/entity/fuse.py +73 -0
  20. maxframe/core/entity/objects.py +100 -0
  21. maxframe/core/entity/output_types.py +90 -0
  22. maxframe/core/entity/tileables.py +438 -0
  23. maxframe/core/entity/utils.py +24 -0
  24. maxframe/core/graph/__init__.py +17 -0
  25. maxframe/core/graph/builder/__init__.py +16 -0
  26. maxframe/core/graph/builder/base.py +86 -0
  27. maxframe/core/graph/builder/chunk.py +430 -0
  28. maxframe/core/graph/builder/tileable.py +34 -0
  29. maxframe/core/graph/builder/utils.py +41 -0
  30. maxframe/core/graph/core.cpython-311-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +467 -0
  32. maxframe/core/graph/entity.py +171 -0
  33. maxframe/core/graph/tests/__init__.py +13 -0
  34. maxframe/core/graph/tests/test_graph.py +205 -0
  35. maxframe/core/mode.py +96 -0
  36. maxframe/core/operator/__init__.py +34 -0
  37. maxframe/core/operator/base.py +450 -0
  38. maxframe/core/operator/core.py +276 -0
  39. maxframe/core/operator/fetch.py +53 -0
  40. maxframe/core/operator/fuse.py +29 -0
  41. maxframe/core/operator/objects.py +72 -0
  42. maxframe/core/operator/shuffle.py +111 -0
  43. maxframe/core/operator/tests/__init__.py +13 -0
  44. maxframe/core/operator/tests/test_core.py +64 -0
  45. maxframe/core/tests/__init__.py +13 -0
  46. maxframe/core/tests/test_mode.py +75 -0
  47. maxframe/dataframe/__init__.py +81 -0
  48. maxframe/dataframe/arithmetic/__init__.py +359 -0
  49. maxframe/dataframe/arithmetic/abs.py +33 -0
  50. maxframe/dataframe/arithmetic/add.py +60 -0
  51. maxframe/dataframe/arithmetic/arccos.py +28 -0
  52. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  53. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  54. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  55. maxframe/dataframe/arithmetic/arctan.py +28 -0
  56. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  57. maxframe/dataframe/arithmetic/around.py +152 -0
  58. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  59. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  60. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  61. maxframe/dataframe/arithmetic/ceil.py +28 -0
  62. maxframe/dataframe/arithmetic/core.py +342 -0
  63. maxframe/dataframe/arithmetic/cos.py +28 -0
  64. maxframe/dataframe/arithmetic/cosh.py +28 -0
  65. maxframe/dataframe/arithmetic/degrees.py +28 -0
  66. maxframe/dataframe/arithmetic/docstring.py +442 -0
  67. maxframe/dataframe/arithmetic/equal.py +56 -0
  68. maxframe/dataframe/arithmetic/exp.py +28 -0
  69. maxframe/dataframe/arithmetic/exp2.py +28 -0
  70. maxframe/dataframe/arithmetic/expm1.py +28 -0
  71. maxframe/dataframe/arithmetic/floor.py +28 -0
  72. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  73. maxframe/dataframe/arithmetic/greater.py +57 -0
  74. maxframe/dataframe/arithmetic/greater_equal.py +57 -0
  75. maxframe/dataframe/arithmetic/invert.py +33 -0
  76. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  77. maxframe/dataframe/arithmetic/less.py +57 -0
  78. maxframe/dataframe/arithmetic/less_equal.py +57 -0
  79. maxframe/dataframe/arithmetic/log.py +28 -0
  80. maxframe/dataframe/arithmetic/log10.py +28 -0
  81. maxframe/dataframe/arithmetic/log2.py +28 -0
  82. maxframe/dataframe/arithmetic/mod.py +60 -0
  83. maxframe/dataframe/arithmetic/multiply.py +60 -0
  84. maxframe/dataframe/arithmetic/negative.py +33 -0
  85. maxframe/dataframe/arithmetic/not_equal.py +56 -0
  86. maxframe/dataframe/arithmetic/power.py +68 -0
  87. maxframe/dataframe/arithmetic/radians.py +28 -0
  88. maxframe/dataframe/arithmetic/sin.py +28 -0
  89. maxframe/dataframe/arithmetic/sinh.py +28 -0
  90. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  91. maxframe/dataframe/arithmetic/subtract.py +64 -0
  92. maxframe/dataframe/arithmetic/tan.py +28 -0
  93. maxframe/dataframe/arithmetic/tanh.py +28 -0
  94. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  95. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
  96. maxframe/dataframe/arithmetic/truediv.py +64 -0
  97. maxframe/dataframe/arithmetic/trunc.py +28 -0
  98. maxframe/dataframe/arrays.py +864 -0
  99. maxframe/dataframe/core.py +2417 -0
  100. maxframe/dataframe/datasource/__init__.py +15 -0
  101. maxframe/dataframe/datasource/core.py +81 -0
  102. maxframe/dataframe/datasource/dataframe.py +59 -0
  103. maxframe/dataframe/datasource/date_range.py +504 -0
  104. maxframe/dataframe/datasource/from_index.py +54 -0
  105. maxframe/dataframe/datasource/from_records.py +107 -0
  106. maxframe/dataframe/datasource/from_tensor.py +419 -0
  107. maxframe/dataframe/datasource/index.py +117 -0
  108. maxframe/dataframe/datasource/read_csv.py +528 -0
  109. maxframe/dataframe/datasource/read_odps_query.py +299 -0
  110. maxframe/dataframe/datasource/read_odps_table.py +253 -0
  111. maxframe/dataframe/datasource/read_parquet.py +421 -0
  112. maxframe/dataframe/datasource/series.py +55 -0
  113. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  114. maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
  115. maxframe/dataframe/datastore/__init__.py +26 -0
  116. maxframe/dataframe/datastore/core.py +19 -0
  117. maxframe/dataframe/datastore/to_csv.py +227 -0
  118. maxframe/dataframe/datastore/to_odps.py +162 -0
  119. maxframe/dataframe/extensions/__init__.py +41 -0
  120. maxframe/dataframe/extensions/accessor.py +50 -0
  121. maxframe/dataframe/extensions/reshuffle.py +83 -0
  122. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  123. maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
  124. maxframe/dataframe/fetch/__init__.py +15 -0
  125. maxframe/dataframe/fetch/core.py +86 -0
  126. maxframe/dataframe/groupby/__init__.py +82 -0
  127. maxframe/dataframe/groupby/aggregation.py +350 -0
  128. maxframe/dataframe/groupby/apply.py +251 -0
  129. maxframe/dataframe/groupby/core.py +179 -0
  130. maxframe/dataframe/groupby/cum.py +124 -0
  131. maxframe/dataframe/groupby/fill.py +141 -0
  132. maxframe/dataframe/groupby/getitem.py +92 -0
  133. maxframe/dataframe/groupby/head.py +105 -0
  134. maxframe/dataframe/groupby/sample.py +214 -0
  135. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  136. maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
  137. maxframe/dataframe/groupby/transform.py +255 -0
  138. maxframe/dataframe/indexing/__init__.py +84 -0
  139. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  140. maxframe/dataframe/indexing/align.py +349 -0
  141. maxframe/dataframe/indexing/at.py +83 -0
  142. maxframe/dataframe/indexing/getitem.py +204 -0
  143. maxframe/dataframe/indexing/iat.py +37 -0
  144. maxframe/dataframe/indexing/iloc.py +566 -0
  145. maxframe/dataframe/indexing/insert.py +86 -0
  146. maxframe/dataframe/indexing/loc.py +411 -0
  147. maxframe/dataframe/indexing/reindex.py +526 -0
  148. maxframe/dataframe/indexing/rename.py +462 -0
  149. maxframe/dataframe/indexing/rename_axis.py +209 -0
  150. maxframe/dataframe/indexing/reset_index.py +402 -0
  151. maxframe/dataframe/indexing/sample.py +221 -0
  152. maxframe/dataframe/indexing/set_axis.py +194 -0
  153. maxframe/dataframe/indexing/set_index.py +61 -0
  154. maxframe/dataframe/indexing/setitem.py +130 -0
  155. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  156. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  157. maxframe/dataframe/indexing/where.py +308 -0
  158. maxframe/dataframe/initializer.py +288 -0
  159. maxframe/dataframe/merge/__init__.py +32 -0
  160. maxframe/dataframe/merge/append.py +121 -0
  161. maxframe/dataframe/merge/concat.py +325 -0
  162. maxframe/dataframe/merge/merge.py +593 -0
  163. maxframe/dataframe/merge/tests/__init__.py +13 -0
  164. maxframe/dataframe/merge/tests/test_merge.py +215 -0
  165. maxframe/dataframe/misc/__init__.py +134 -0
  166. maxframe/dataframe/misc/_duplicate.py +46 -0
  167. maxframe/dataframe/misc/accessor.py +276 -0
  168. maxframe/dataframe/misc/apply.py +692 -0
  169. maxframe/dataframe/misc/astype.py +236 -0
  170. maxframe/dataframe/misc/case_when.py +141 -0
  171. maxframe/dataframe/misc/check_monotonic.py +84 -0
  172. maxframe/dataframe/misc/cut.py +383 -0
  173. maxframe/dataframe/misc/datetimes.py +79 -0
  174. maxframe/dataframe/misc/describe.py +108 -0
  175. maxframe/dataframe/misc/diff.py +210 -0
  176. maxframe/dataframe/misc/drop.py +440 -0
  177. maxframe/dataframe/misc/drop_duplicates.py +248 -0
  178. maxframe/dataframe/misc/duplicated.py +292 -0
  179. maxframe/dataframe/misc/eval.py +728 -0
  180. maxframe/dataframe/misc/explode.py +171 -0
  181. maxframe/dataframe/misc/get_dummies.py +208 -0
  182. maxframe/dataframe/misc/isin.py +217 -0
  183. maxframe/dataframe/misc/map.py +236 -0
  184. maxframe/dataframe/misc/melt.py +162 -0
  185. maxframe/dataframe/misc/memory_usage.py +248 -0
  186. maxframe/dataframe/misc/pct_change.py +150 -0
  187. maxframe/dataframe/misc/pivot_table.py +262 -0
  188. maxframe/dataframe/misc/qcut.py +104 -0
  189. maxframe/dataframe/misc/select_dtypes.py +104 -0
  190. maxframe/dataframe/misc/shift.py +256 -0
  191. maxframe/dataframe/misc/stack.py +238 -0
  192. maxframe/dataframe/misc/string_.py +221 -0
  193. maxframe/dataframe/misc/tests/__init__.py +13 -0
  194. maxframe/dataframe/misc/tests/test_misc.py +468 -0
  195. maxframe/dataframe/misc/to_numeric.py +178 -0
  196. maxframe/dataframe/misc/transform.py +361 -0
  197. maxframe/dataframe/misc/transpose.py +136 -0
  198. maxframe/dataframe/misc/value_counts.py +182 -0
  199. maxframe/dataframe/missing/__init__.py +53 -0
  200. maxframe/dataframe/missing/checkna.py +223 -0
  201. maxframe/dataframe/missing/dropna.py +280 -0
  202. maxframe/dataframe/missing/fillna.py +275 -0
  203. maxframe/dataframe/missing/replace.py +439 -0
  204. maxframe/dataframe/missing/tests/__init__.py +13 -0
  205. maxframe/dataframe/missing/tests/test_missing.py +89 -0
  206. maxframe/dataframe/operators.py +273 -0
  207. maxframe/dataframe/plotting/__init__.py +40 -0
  208. maxframe/dataframe/plotting/core.py +78 -0
  209. maxframe/dataframe/plotting/tests/__init__.py +13 -0
  210. maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
  211. maxframe/dataframe/reduction/__init__.py +107 -0
  212. maxframe/dataframe/reduction/aggregation.py +344 -0
  213. maxframe/dataframe/reduction/all.py +78 -0
  214. maxframe/dataframe/reduction/any.py +78 -0
  215. maxframe/dataframe/reduction/core.py +837 -0
  216. maxframe/dataframe/reduction/count.py +59 -0
  217. maxframe/dataframe/reduction/cummax.py +30 -0
  218. maxframe/dataframe/reduction/cummin.py +30 -0
  219. maxframe/dataframe/reduction/cumprod.py +30 -0
  220. maxframe/dataframe/reduction/cumsum.py +30 -0
  221. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  222. maxframe/dataframe/reduction/kurtosis.py +104 -0
  223. maxframe/dataframe/reduction/max.py +65 -0
  224. maxframe/dataframe/reduction/mean.py +61 -0
  225. maxframe/dataframe/reduction/min.py +65 -0
  226. maxframe/dataframe/reduction/nunique.py +141 -0
  227. maxframe/dataframe/reduction/prod.py +76 -0
  228. maxframe/dataframe/reduction/reduction_size.py +36 -0
  229. maxframe/dataframe/reduction/sem.py +69 -0
  230. maxframe/dataframe/reduction/skew.py +89 -0
  231. maxframe/dataframe/reduction/std.py +53 -0
  232. maxframe/dataframe/reduction/str_concat.py +48 -0
  233. maxframe/dataframe/reduction/sum.py +77 -0
  234. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  235. maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
  236. maxframe/dataframe/reduction/unique.py +90 -0
  237. maxframe/dataframe/reduction/var.py +72 -0
  238. maxframe/dataframe/sort/__init__.py +34 -0
  239. maxframe/dataframe/sort/core.py +36 -0
  240. maxframe/dataframe/sort/sort_index.py +153 -0
  241. maxframe/dataframe/sort/sort_values.py +311 -0
  242. maxframe/dataframe/sort/tests/__init__.py +13 -0
  243. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  244. maxframe/dataframe/statistics/__init__.py +33 -0
  245. maxframe/dataframe/statistics/corr.py +280 -0
  246. maxframe/dataframe/statistics/quantile.py +341 -0
  247. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  248. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  249. maxframe/dataframe/tests/__init__.py +13 -0
  250. maxframe/dataframe/tests/test_initializer.py +29 -0
  251. maxframe/dataframe/tseries/__init__.py +13 -0
  252. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  253. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  254. maxframe/dataframe/tseries/to_datetime.py +297 -0
  255. maxframe/dataframe/ufunc/__init__.py +27 -0
  256. maxframe/dataframe/ufunc/tensor.py +54 -0
  257. maxframe/dataframe/ufunc/ufunc.py +52 -0
  258. maxframe/dataframe/utils.py +1267 -0
  259. maxframe/dataframe/window/__init__.py +29 -0
  260. maxframe/dataframe/window/aggregation.py +96 -0
  261. maxframe/dataframe/window/core.py +69 -0
  262. maxframe/dataframe/window/ewm.py +249 -0
  263. maxframe/dataframe/window/expanding.py +147 -0
  264. maxframe/dataframe/window/rolling.py +376 -0
  265. maxframe/dataframe/window/tests/__init__.py +13 -0
  266. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  267. maxframe/dataframe/window/tests/test_expanding.py +66 -0
  268. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  269. maxframe/env.py +33 -0
  270. maxframe/errors.py +21 -0
  271. maxframe/extension.py +81 -0
  272. maxframe/learn/__init__.py +17 -0
  273. maxframe/learn/contrib/__init__.py +17 -0
  274. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  275. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  276. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  277. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  278. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  279. maxframe/learn/contrib/utils.py +52 -0
  280. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  281. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  282. maxframe/learn/contrib/xgboost/core.py +156 -0
  283. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  284. maxframe/learn/contrib/xgboost/predict.py +138 -0
  285. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  286. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  287. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  288. maxframe/learn/contrib/xgboost/train.py +121 -0
  289. maxframe/learn/utils/__init__.py +15 -0
  290. maxframe/learn/utils/core.py +29 -0
  291. maxframe/lib/__init__.py +15 -0
  292. maxframe/lib/aio/__init__.py +27 -0
  293. maxframe/lib/aio/_runners.py +162 -0
  294. maxframe/lib/aio/_threads.py +35 -0
  295. maxframe/lib/aio/base.py +82 -0
  296. maxframe/lib/aio/file.py +85 -0
  297. maxframe/lib/aio/isolation.py +100 -0
  298. maxframe/lib/aio/lru.py +242 -0
  299. maxframe/lib/aio/parallelism.py +37 -0
  300. maxframe/lib/aio/tests/__init__.py +13 -0
  301. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  302. maxframe/lib/compression.py +55 -0
  303. maxframe/lib/cython/__init__.py +13 -0
  304. maxframe/lib/cython/libcpp.pxd +30 -0
  305. maxframe/lib/filesystem/__init__.py +21 -0
  306. maxframe/lib/filesystem/_glob.py +173 -0
  307. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  308. maxframe/lib/filesystem/_oss_lib/common.py +198 -0
  309. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  310. maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
  311. maxframe/lib/filesystem/arrow.py +236 -0
  312. maxframe/lib/filesystem/base.py +263 -0
  313. maxframe/lib/filesystem/core.py +95 -0
  314. maxframe/lib/filesystem/fsmap.py +164 -0
  315. maxframe/lib/filesystem/hdfs.py +31 -0
  316. maxframe/lib/filesystem/local.py +112 -0
  317. maxframe/lib/filesystem/oss.py +157 -0
  318. maxframe/lib/filesystem/tests/__init__.py +13 -0
  319. maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
  320. maxframe/lib/filesystem/tests/test_oss.py +182 -0
  321. maxframe/lib/functools_compat.py +81 -0
  322. maxframe/lib/mmh3.cpython-311-darwin.so +0 -0
  323. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  324. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  325. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  326. maxframe/lib/sparse/__init__.py +861 -0
  327. maxframe/lib/sparse/array.py +1604 -0
  328. maxframe/lib/sparse/core.py +92 -0
  329. maxframe/lib/sparse/matrix.py +241 -0
  330. maxframe/lib/sparse/tests/__init__.py +15 -0
  331. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  332. maxframe/lib/sparse/vector.py +150 -0
  333. maxframe/lib/tblib/LICENSE +20 -0
  334. maxframe/lib/tblib/__init__.py +327 -0
  335. maxframe/lib/tblib/cpython.py +83 -0
  336. maxframe/lib/tblib/decorators.py +44 -0
  337. maxframe/lib/tblib/pickling_support.py +90 -0
  338. maxframe/lib/tests/__init__.py +13 -0
  339. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  340. maxframe/lib/version.py +620 -0
  341. maxframe/lib/wrapped_pickle.py +139 -0
  342. maxframe/mixin.py +100 -0
  343. maxframe/odpsio/__init__.py +21 -0
  344. maxframe/odpsio/arrow.py +91 -0
  345. maxframe/odpsio/schema.py +364 -0
  346. maxframe/odpsio/tableio.py +322 -0
  347. maxframe/odpsio/tests/__init__.py +13 -0
  348. maxframe/odpsio/tests/test_arrow.py +88 -0
  349. maxframe/odpsio/tests/test_schema.py +297 -0
  350. maxframe/odpsio/tests/test_tableio.py +136 -0
  351. maxframe/odpsio/tests/test_volumeio.py +90 -0
  352. maxframe/odpsio/volumeio.py +95 -0
  353. maxframe/opcodes.py +590 -0
  354. maxframe/protocol.py +415 -0
  355. maxframe/remote/__init__.py +18 -0
  356. maxframe/remote/core.py +210 -0
  357. maxframe/remote/run_script.py +121 -0
  358. maxframe/serialization/__init__.py +26 -0
  359. maxframe/serialization/arrow.py +95 -0
  360. maxframe/serialization/core.cpython-311-darwin.so +0 -0
  361. maxframe/serialization/core.pxd +44 -0
  362. maxframe/serialization/core.pyi +61 -0
  363. maxframe/serialization/core.pyx +1094 -0
  364. maxframe/serialization/exception.py +86 -0
  365. maxframe/serialization/maxframe_objects.py +39 -0
  366. maxframe/serialization/numpy.py +91 -0
  367. maxframe/serialization/pandas.py +202 -0
  368. maxframe/serialization/scipy.py +71 -0
  369. maxframe/serialization/serializables/__init__.py +55 -0
  370. maxframe/serialization/serializables/core.py +262 -0
  371. maxframe/serialization/serializables/field.py +624 -0
  372. maxframe/serialization/serializables/field_type.py +589 -0
  373. maxframe/serialization/serializables/tests/__init__.py +13 -0
  374. maxframe/serialization/serializables/tests/test_field_type.py +121 -0
  375. maxframe/serialization/serializables/tests/test_serializable.py +250 -0
  376. maxframe/serialization/tests/__init__.py +13 -0
  377. maxframe/serialization/tests/test_serial.py +412 -0
  378. maxframe/session.py +1310 -0
  379. maxframe/tensor/__init__.py +183 -0
  380. maxframe/tensor/arithmetic/__init__.py +315 -0
  381. maxframe/tensor/arithmetic/abs.py +68 -0
  382. maxframe/tensor/arithmetic/absolute.py +68 -0
  383. maxframe/tensor/arithmetic/add.py +82 -0
  384. maxframe/tensor/arithmetic/angle.py +72 -0
  385. maxframe/tensor/arithmetic/arccos.py +104 -0
  386. maxframe/tensor/arithmetic/arccosh.py +91 -0
  387. maxframe/tensor/arithmetic/arcsin.py +94 -0
  388. maxframe/tensor/arithmetic/arcsinh.py +86 -0
  389. maxframe/tensor/arithmetic/arctan.py +106 -0
  390. maxframe/tensor/arithmetic/arctan2.py +128 -0
  391. maxframe/tensor/arithmetic/arctanh.py +86 -0
  392. maxframe/tensor/arithmetic/around.py +114 -0
  393. maxframe/tensor/arithmetic/bitand.py +95 -0
  394. maxframe/tensor/arithmetic/bitor.py +102 -0
  395. maxframe/tensor/arithmetic/bitxor.py +95 -0
  396. maxframe/tensor/arithmetic/cbrt.py +66 -0
  397. maxframe/tensor/arithmetic/ceil.py +71 -0
  398. maxframe/tensor/arithmetic/clip.py +165 -0
  399. maxframe/tensor/arithmetic/conj.py +74 -0
  400. maxframe/tensor/arithmetic/copysign.py +78 -0
  401. maxframe/tensor/arithmetic/core.py +544 -0
  402. maxframe/tensor/arithmetic/cos.py +85 -0
  403. maxframe/tensor/arithmetic/cosh.py +72 -0
  404. maxframe/tensor/arithmetic/deg2rad.py +72 -0
  405. maxframe/tensor/arithmetic/degrees.py +77 -0
  406. maxframe/tensor/arithmetic/divide.py +114 -0
  407. maxframe/tensor/arithmetic/equal.py +76 -0
  408. maxframe/tensor/arithmetic/exp.py +106 -0
  409. maxframe/tensor/arithmetic/exp2.py +67 -0
  410. maxframe/tensor/arithmetic/expm1.py +79 -0
  411. maxframe/tensor/arithmetic/fabs.py +74 -0
  412. maxframe/tensor/arithmetic/fix.py +69 -0
  413. maxframe/tensor/arithmetic/float_power.py +103 -0
  414. maxframe/tensor/arithmetic/floor.py +77 -0
  415. maxframe/tensor/arithmetic/floordiv.py +94 -0
  416. maxframe/tensor/arithmetic/fmax.py +105 -0
  417. maxframe/tensor/arithmetic/fmin.py +106 -0
  418. maxframe/tensor/arithmetic/fmod.py +99 -0
  419. maxframe/tensor/arithmetic/frexp.py +92 -0
  420. maxframe/tensor/arithmetic/greater.py +77 -0
  421. maxframe/tensor/arithmetic/greater_equal.py +69 -0
  422. maxframe/tensor/arithmetic/hypot.py +77 -0
  423. maxframe/tensor/arithmetic/i0.py +89 -0
  424. maxframe/tensor/arithmetic/imag.py +67 -0
  425. maxframe/tensor/arithmetic/invert.py +110 -0
  426. maxframe/tensor/arithmetic/isclose.py +115 -0
  427. maxframe/tensor/arithmetic/iscomplex.py +64 -0
  428. maxframe/tensor/arithmetic/isfinite.py +106 -0
  429. maxframe/tensor/arithmetic/isinf.py +103 -0
  430. maxframe/tensor/arithmetic/isnan.py +82 -0
  431. maxframe/tensor/arithmetic/isreal.py +63 -0
  432. maxframe/tensor/arithmetic/ldexp.py +99 -0
  433. maxframe/tensor/arithmetic/less.py +69 -0
  434. maxframe/tensor/arithmetic/less_equal.py +69 -0
  435. maxframe/tensor/arithmetic/log.py +92 -0
  436. maxframe/tensor/arithmetic/log10.py +85 -0
  437. maxframe/tensor/arithmetic/log1p.py +95 -0
  438. maxframe/tensor/arithmetic/log2.py +85 -0
  439. maxframe/tensor/arithmetic/logaddexp.py +80 -0
  440. maxframe/tensor/arithmetic/logaddexp2.py +78 -0
  441. maxframe/tensor/arithmetic/logical_and.py +81 -0
  442. maxframe/tensor/arithmetic/logical_not.py +74 -0
  443. maxframe/tensor/arithmetic/logical_or.py +82 -0
  444. maxframe/tensor/arithmetic/logical_xor.py +88 -0
  445. maxframe/tensor/arithmetic/lshift.py +82 -0
  446. maxframe/tensor/arithmetic/maximum.py +108 -0
  447. maxframe/tensor/arithmetic/minimum.py +108 -0
  448. maxframe/tensor/arithmetic/mod.py +104 -0
  449. maxframe/tensor/arithmetic/modf.py +83 -0
  450. maxframe/tensor/arithmetic/multiply.py +81 -0
  451. maxframe/tensor/arithmetic/nan_to_num.py +99 -0
  452. maxframe/tensor/arithmetic/negative.py +65 -0
  453. maxframe/tensor/arithmetic/nextafter.py +68 -0
  454. maxframe/tensor/arithmetic/not_equal.py +72 -0
  455. maxframe/tensor/arithmetic/positive.py +47 -0
  456. maxframe/tensor/arithmetic/power.py +106 -0
  457. maxframe/tensor/arithmetic/rad2deg.py +71 -0
  458. maxframe/tensor/arithmetic/radians.py +77 -0
  459. maxframe/tensor/arithmetic/real.py +70 -0
  460. maxframe/tensor/arithmetic/reciprocal.py +76 -0
  461. maxframe/tensor/arithmetic/rint.py +68 -0
  462. maxframe/tensor/arithmetic/rshift.py +81 -0
  463. maxframe/tensor/arithmetic/setimag.py +29 -0
  464. maxframe/tensor/arithmetic/setreal.py +29 -0
  465. maxframe/tensor/arithmetic/sign.py +81 -0
  466. maxframe/tensor/arithmetic/signbit.py +65 -0
  467. maxframe/tensor/arithmetic/sin.py +98 -0
  468. maxframe/tensor/arithmetic/sinc.py +102 -0
  469. maxframe/tensor/arithmetic/sinh.py +93 -0
  470. maxframe/tensor/arithmetic/spacing.py +72 -0
  471. maxframe/tensor/arithmetic/sqrt.py +81 -0
  472. maxframe/tensor/arithmetic/square.py +69 -0
  473. maxframe/tensor/arithmetic/subtract.py +81 -0
  474. maxframe/tensor/arithmetic/tan.py +88 -0
  475. maxframe/tensor/arithmetic/tanh.py +92 -0
  476. maxframe/tensor/arithmetic/tests/__init__.py +15 -0
  477. maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
  478. maxframe/tensor/arithmetic/truediv.py +104 -0
  479. maxframe/tensor/arithmetic/trunc.py +72 -0
  480. maxframe/tensor/arithmetic/utils.py +65 -0
  481. maxframe/tensor/array_utils.py +186 -0
  482. maxframe/tensor/base/__init__.py +34 -0
  483. maxframe/tensor/base/astype.py +119 -0
  484. maxframe/tensor/base/atleast_1d.py +74 -0
  485. maxframe/tensor/base/broadcast_to.py +89 -0
  486. maxframe/tensor/base/ravel.py +92 -0
  487. maxframe/tensor/base/tests/__init__.py +13 -0
  488. maxframe/tensor/base/tests/test_base.py +114 -0
  489. maxframe/tensor/base/transpose.py +125 -0
  490. maxframe/tensor/base/unique.py +205 -0
  491. maxframe/tensor/base/where.py +127 -0
  492. maxframe/tensor/core.py +724 -0
  493. maxframe/tensor/datasource/__init__.py +32 -0
  494. maxframe/tensor/datasource/arange.py +156 -0
  495. maxframe/tensor/datasource/array.py +415 -0
  496. maxframe/tensor/datasource/core.py +109 -0
  497. maxframe/tensor/datasource/empty.py +169 -0
  498. maxframe/tensor/datasource/from_dataframe.py +70 -0
  499. maxframe/tensor/datasource/from_dense.py +54 -0
  500. maxframe/tensor/datasource/from_sparse.py +47 -0
  501. maxframe/tensor/datasource/full.py +186 -0
  502. maxframe/tensor/datasource/ones.py +173 -0
  503. maxframe/tensor/datasource/scalar.py +40 -0
  504. maxframe/tensor/datasource/tests/__init__.py +13 -0
  505. maxframe/tensor/datasource/tests/test_datasource.py +278 -0
  506. maxframe/tensor/datasource/zeros.py +188 -0
  507. maxframe/tensor/fetch/__init__.py +15 -0
  508. maxframe/tensor/fetch/core.py +54 -0
  509. maxframe/tensor/indexing/__init__.py +47 -0
  510. maxframe/tensor/indexing/choose.py +196 -0
  511. maxframe/tensor/indexing/compress.py +124 -0
  512. maxframe/tensor/indexing/core.py +190 -0
  513. maxframe/tensor/indexing/extract.py +71 -0
  514. maxframe/tensor/indexing/fill_diagonal.py +183 -0
  515. maxframe/tensor/indexing/flatnonzero.py +60 -0
  516. maxframe/tensor/indexing/getitem.py +175 -0
  517. maxframe/tensor/indexing/nonzero.py +120 -0
  518. maxframe/tensor/indexing/setitem.py +132 -0
  519. maxframe/tensor/indexing/slice.py +29 -0
  520. maxframe/tensor/indexing/take.py +130 -0
  521. maxframe/tensor/indexing/tests/__init__.py +15 -0
  522. maxframe/tensor/indexing/tests/test_indexing.py +234 -0
  523. maxframe/tensor/indexing/unravel_index.py +103 -0
  524. maxframe/tensor/merge/__init__.py +15 -0
  525. maxframe/tensor/merge/stack.py +132 -0
  526. maxframe/tensor/merge/tests/__init__.py +13 -0
  527. maxframe/tensor/merge/tests/test_merge.py +52 -0
  528. maxframe/tensor/operators.py +123 -0
  529. maxframe/tensor/random/__init__.py +168 -0
  530. maxframe/tensor/random/beta.py +87 -0
  531. maxframe/tensor/random/binomial.py +137 -0
  532. maxframe/tensor/random/bytes.py +39 -0
  533. maxframe/tensor/random/chisquare.py +110 -0
  534. maxframe/tensor/random/choice.py +186 -0
  535. maxframe/tensor/random/core.py +234 -0
  536. maxframe/tensor/random/dirichlet.py +123 -0
  537. maxframe/tensor/random/exponential.py +94 -0
  538. maxframe/tensor/random/f.py +135 -0
  539. maxframe/tensor/random/gamma.py +128 -0
  540. maxframe/tensor/random/geometric.py +93 -0
  541. maxframe/tensor/random/gumbel.py +167 -0
  542. maxframe/tensor/random/hypergeometric.py +148 -0
  543. maxframe/tensor/random/laplace.py +133 -0
  544. maxframe/tensor/random/logistic.py +129 -0
  545. maxframe/tensor/random/lognormal.py +159 -0
  546. maxframe/tensor/random/logseries.py +122 -0
  547. maxframe/tensor/random/multinomial.py +133 -0
  548. maxframe/tensor/random/multivariate_normal.py +192 -0
  549. maxframe/tensor/random/negative_binomial.py +125 -0
  550. maxframe/tensor/random/noncentral_chisquare.py +132 -0
  551. maxframe/tensor/random/noncentral_f.py +126 -0
  552. maxframe/tensor/random/normal.py +143 -0
  553. maxframe/tensor/random/pareto.py +140 -0
  554. maxframe/tensor/random/permutation.py +104 -0
  555. maxframe/tensor/random/poisson.py +111 -0
  556. maxframe/tensor/random/power.py +142 -0
  557. maxframe/tensor/random/rand.py +82 -0
  558. maxframe/tensor/random/randint.py +121 -0
  559. maxframe/tensor/random/randn.py +96 -0
  560. maxframe/tensor/random/random_integers.py +123 -0
  561. maxframe/tensor/random/random_sample.py +86 -0
  562. maxframe/tensor/random/rayleigh.py +110 -0
  563. maxframe/tensor/random/shuffle.py +61 -0
  564. maxframe/tensor/random/standard_cauchy.py +105 -0
  565. maxframe/tensor/random/standard_exponential.py +72 -0
  566. maxframe/tensor/random/standard_gamma.py +120 -0
  567. maxframe/tensor/random/standard_normal.py +74 -0
  568. maxframe/tensor/random/standard_t.py +135 -0
  569. maxframe/tensor/random/tests/__init__.py +15 -0
  570. maxframe/tensor/random/tests/test_random.py +167 -0
  571. maxframe/tensor/random/triangular.py +119 -0
  572. maxframe/tensor/random/uniform.py +131 -0
  573. maxframe/tensor/random/vonmises.py +131 -0
  574. maxframe/tensor/random/wald.py +114 -0
  575. maxframe/tensor/random/weibull.py +140 -0
  576. maxframe/tensor/random/zipf.py +122 -0
  577. maxframe/tensor/rechunk/__init__.py +26 -0
  578. maxframe/tensor/rechunk/rechunk.py +43 -0
  579. maxframe/tensor/reduction/__init__.py +66 -0
  580. maxframe/tensor/reduction/all.py +103 -0
  581. maxframe/tensor/reduction/allclose.py +88 -0
  582. maxframe/tensor/reduction/any.py +105 -0
  583. maxframe/tensor/reduction/argmax.py +103 -0
  584. maxframe/tensor/reduction/argmin.py +103 -0
  585. maxframe/tensor/reduction/array_equal.py +64 -0
  586. maxframe/tensor/reduction/core.py +168 -0
  587. maxframe/tensor/reduction/count_nonzero.py +81 -0
  588. maxframe/tensor/reduction/cumprod.py +97 -0
  589. maxframe/tensor/reduction/cumsum.py +101 -0
  590. maxframe/tensor/reduction/max.py +120 -0
  591. maxframe/tensor/reduction/mean.py +123 -0
  592. maxframe/tensor/reduction/min.py +120 -0
  593. maxframe/tensor/reduction/nanargmax.py +82 -0
  594. maxframe/tensor/reduction/nanargmin.py +76 -0
  595. maxframe/tensor/reduction/nancumprod.py +91 -0
  596. maxframe/tensor/reduction/nancumsum.py +94 -0
  597. maxframe/tensor/reduction/nanmax.py +111 -0
  598. maxframe/tensor/reduction/nanmean.py +106 -0
  599. maxframe/tensor/reduction/nanmin.py +111 -0
  600. maxframe/tensor/reduction/nanprod.py +94 -0
  601. maxframe/tensor/reduction/nanstd.py +126 -0
  602. maxframe/tensor/reduction/nansum.py +115 -0
  603. maxframe/tensor/reduction/nanvar.py +149 -0
  604. maxframe/tensor/reduction/prod.py +130 -0
  605. maxframe/tensor/reduction/std.py +134 -0
  606. maxframe/tensor/reduction/sum.py +125 -0
  607. maxframe/tensor/reduction/tests/__init__.py +13 -0
  608. maxframe/tensor/reduction/tests/test_reduction.py +181 -0
  609. maxframe/tensor/reduction/var.py +176 -0
  610. maxframe/tensor/reshape/__init__.py +17 -0
  611. maxframe/tensor/reshape/reshape.py +188 -0
  612. maxframe/tensor/reshape/tests/__init__.py +15 -0
  613. maxframe/tensor/reshape/tests/test_reshape.py +37 -0
  614. maxframe/tensor/statistics/__init__.py +13 -0
  615. maxframe/tensor/statistics/percentile.py +175 -0
  616. maxframe/tensor/statistics/quantile.py +288 -0
  617. maxframe/tensor/ufunc/__init__.py +26 -0
  618. maxframe/tensor/ufunc/ufunc.py +200 -0
  619. maxframe/tensor/utils.py +718 -0
  620. maxframe/tests/__init__.py +13 -0
  621. maxframe/tests/test_codegen.py +69 -0
  622. maxframe/tests/test_protocol.py +144 -0
  623. maxframe/tests/test_utils.py +376 -0
  624. maxframe/tests/utils.py +164 -0
  625. maxframe/typing_.py +37 -0
  626. maxframe/udf.py +134 -0
  627. maxframe/utils.py +1114 -0
  628. maxframe-0.1.0b5.dist-info/METADATA +104 -0
  629. maxframe-0.1.0b5.dist-info/RECORD +647 -0
  630. maxframe-0.1.0b5.dist-info/WHEEL +5 -0
  631. maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
  632. maxframe_client/__init__.py +17 -0
  633. maxframe_client/clients/__init__.py +13 -0
  634. maxframe_client/clients/framedriver.py +118 -0
  635. maxframe_client/clients/spe.py +104 -0
  636. maxframe_client/conftest.py +15 -0
  637. maxframe_client/fetcher.py +264 -0
  638. maxframe_client/session/__init__.py +22 -0
  639. maxframe_client/session/consts.py +36 -0
  640. maxframe_client/session/graph.py +119 -0
  641. maxframe_client/session/odps.py +482 -0
  642. maxframe_client/session/task.py +280 -0
  643. maxframe_client/session/tests/__init__.py +13 -0
  644. maxframe_client/session/tests/test_task.py +85 -0
  645. maxframe_client/tests/__init__.py +13 -0
  646. maxframe_client/tests/test_fetcher.py +89 -0
  647. maxframe_client/tests/test_session.py +255 -0
@@ -0,0 +1,280 @@
1
+ # Copyright 1999-2024 Alibaba Group Holding Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import numpy as np
16
+ import pandas as pd
17
+
18
+ from ... import opcodes
19
+ from ...core import ENTITY_TYPE
20
+ from ...serialization.serializables import AnyField, BoolField, Int32Field, KeyField
21
+ from ...tensor.utils import filter_inputs
22
+ from ..core import DATAFRAME_TYPE, SERIES_TYPE
23
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
24
+ from ..utils import build_empty_df, parse_index, validate_axis
25
+
26
+
27
+ class DataFrameCorr(DataFrameOperator, DataFrameOperatorMixin):
28
+ _op_type_ = opcodes.CORR
29
+
30
+ other = KeyField("other", default=None)
31
+ method = AnyField("method", default=None)
32
+ min_periods = Int32Field("min_periods", default=None)
33
+ axis = Int32Field("axis", default=None)
34
+ drop = BoolField("drop", default=None)
35
+
36
+ def _set_inputs(self, inputs):
37
+ super()._set_inputs(inputs)
38
+ inputs_iter = iter(self._inputs)
39
+ next(inputs_iter)
40
+ if isinstance(self.other, ENTITY_TYPE):
41
+ self.other = next(inputs_iter)
42
+
43
+ def __call__(self, df_or_series):
44
+ if isinstance(df_or_series, SERIES_TYPE):
45
+ inputs = filter_inputs([df_or_series, self.other])
46
+ return self.new_scalar(inputs, dtype=np.dtype(np.float_))
47
+ else:
48
+
49
+ def _filter_numeric(obj):
50
+ if not isinstance(obj, DATAFRAME_TYPE):
51
+ return obj
52
+ num_dtypes = build_empty_df(obj.dtypes)._get_numeric_data().dtypes
53
+ if len(num_dtypes) != len(obj.dtypes):
54
+ return obj[list(num_dtypes.index)]
55
+ return obj
56
+
57
+ df_or_series = _filter_numeric(df_or_series)
58
+ self.other = _filter_numeric(self.other)
59
+
60
+ inputs = filter_inputs([df_or_series, self.other])
61
+ if self.axis is None:
62
+ dtypes = pd.Series(
63
+ [np.dtype(np.float_)] * len(df_or_series.dtypes),
64
+ index=df_or_series.dtypes.index,
65
+ )
66
+ return self.new_dataframe(
67
+ inputs,
68
+ shape=(df_or_series.shape[1],) * 2,
69
+ dtypes=dtypes,
70
+ index_value=df_or_series.columns_value,
71
+ columns_value=df_or_series.columns_value,
72
+ )
73
+ else:
74
+ new_index_value = df_or_series.axes[1 - self.axis].index_value
75
+ if isinstance(self.other, DATAFRAME_TYPE):
76
+ align_dtypes = pd.concat(
77
+ [self.other.dtypes, df_or_series.dtypes], axis=1
78
+ )
79
+ align_shape = (np.nan, align_dtypes.shape[0])
80
+ new_index_value = parse_index(align_dtypes.index)
81
+ else:
82
+ align_shape = df_or_series.shape
83
+
84
+ shape = (np.nan,) if self.drop else (align_shape[1 - self.axis],)
85
+ return self.new_series(
86
+ inputs,
87
+ shape=shape,
88
+ dtype=np.dtype(np.float_),
89
+ index_value=new_index_value,
90
+ )
91
+
92
+
93
+ def df_corr(df, method="pearson", min_periods=1):
94
+ """
95
+ Compute pairwise correlation of columns, excluding NA/null values.
96
+
97
+ Parameters
98
+ ----------
99
+ method : {'pearson', 'kendall', 'spearman'} or callable
100
+ Method of correlation:
101
+
102
+ * pearson : standard correlation coefficient
103
+ * kendall : Kendall Tau correlation coefficient
104
+ * spearman : Spearman rank correlation
105
+ * callable: callable with input two 1d ndarrays
106
+ and returning a float. Note that the returned matrix from corr
107
+ will have 1 along the diagonals and will be symmetric
108
+ regardless of the callable's behavior.
109
+
110
+ .. note::
111
+ kendall, spearman and callables not supported on multiple chunks yet.
112
+
113
+ min_periods : int, optional
114
+ Minimum number of observations required per pair of columns
115
+ to have a valid result. Currently only available for Pearson
116
+ and Spearman correlation.
117
+
118
+ Returns
119
+ -------
120
+ DataFrame
121
+ Correlation matrix.
122
+
123
+ See Also
124
+ --------
125
+ DataFrame.corrwith : Compute pairwise correlation with another
126
+ DataFrame or Series.
127
+ Series.corr : Compute the correlation between two Series.
128
+
129
+ Examples
130
+ --------
131
+ >>> import maxframe.dataframe as md
132
+ >>> df = md.DataFrame([(.2, .3), (.0, .6), (.6, .0), (.2, .1)],
133
+ ... columns=['dogs', 'cats'])
134
+ >>> df.corr(method='pearson').execute()
135
+ dogs cats
136
+ dogs 1.000000 -0.851064
137
+ cats -0.851064 1.000000
138
+ """
139
+ op = DataFrameCorr(method=method, min_periods=min_periods)
140
+ return op(df)
141
+
142
+
143
+ def df_corrwith(df, other, axis=0, drop=False, method="pearson"):
144
+ """
145
+ Compute pairwise correlation.
146
+
147
+ Pairwise correlation is computed between rows or columns of
148
+ DataFrame with rows or columns of Series or DataFrame. DataFrames
149
+ are first aligned along both axes before computing the
150
+ correlations.
151
+
152
+ Parameters
153
+ ----------
154
+ other : DataFrame, Series
155
+ Object with which to compute correlations.
156
+ axis : {0 or 'index', 1 or 'columns'}, default 0
157
+ The axis to use. 0 or 'index' to compute column-wise, 1 or 'columns' for
158
+ row-wise.
159
+ drop : bool, default False
160
+ Drop missing indices from result.
161
+ method : {'pearson', 'kendall', 'spearman'} or callable
162
+ Method of correlation:
163
+
164
+ * pearson : standard correlation coefficient
165
+ * kendall : Kendall Tau correlation coefficient
166
+ * spearman : Spearman rank correlation
167
+ * callable: callable with input two 1d ndarrays
168
+ and returning a float.
169
+
170
+ .. note::
171
+ kendall, spearman and callables not supported on multiple chunks yet.
172
+
173
+ Returns
174
+ -------
175
+ Series
176
+ Pairwise correlations.
177
+
178
+ See Also
179
+ --------
180
+ DataFrame.corr : Compute pairwise correlation of columns.
181
+ """
182
+ axis = validate_axis(axis, df)
183
+ if drop:
184
+ # TODO implement with df.align(method='inner')
185
+ raise NotImplementedError("drop=True not implemented")
186
+ op = DataFrameCorr(other=other, method=method, axis=axis, drop=drop)
187
+ return op(df)
188
+
189
+
190
+ def series_corr(series, other, method="pearson", min_periods=None):
191
+ """
192
+ Compute correlation with `other` Series, excluding missing values.
193
+
194
+ Parameters
195
+ ----------
196
+ other : Series
197
+ Series with which to compute the correlation.
198
+ method : {'pearson', 'kendall', 'spearman'} or callable
199
+ Method used to compute correlation:
200
+
201
+ - pearson : Standard correlation coefficient
202
+ - kendall : Kendall Tau correlation coefficient
203
+ - spearman : Spearman rank correlation
204
+ - callable: Callable with input two 1d ndarrays and returning a float.
205
+
206
+ .. note::
207
+ kendall, spearman and callables not supported on multiple chunks yet.
208
+
209
+ min_periods : int, optional
210
+ Minimum number of observations needed to have a valid result.
211
+
212
+ Returns
213
+ -------
214
+ float
215
+ Correlation with other.
216
+
217
+ See Also
218
+ --------
219
+ DataFrame.corr : Compute pairwise correlation between columns.
220
+ DataFrame.corrwith : Compute pairwise correlation with another
221
+ DataFrame or Series.
222
+
223
+ Examples
224
+ --------
225
+ >>> import maxframe.dataframe as md
226
+ >>> s1 = md.Series([.2, .0, .6, .2])
227
+ >>> s2 = md.Series([.3, .6, .0, .1])
228
+ >>> s1.corr(s2, method='pearson').execute()
229
+ -0.8510644963469898
230
+ """
231
+ op = DataFrameCorr(other=other, method=method, min_periods=min_periods)
232
+ return op(series)
233
+
234
+
235
+ def series_autocorr(series, lag=1):
236
+ """
237
+ Compute the lag-N autocorrelation.
238
+
239
+ This method computes the Pearson correlation between
240
+ the Series and its shifted self.
241
+
242
+ Parameters
243
+ ----------
244
+ lag : int, default 1
245
+ Number of lags to apply before performing autocorrelation.
246
+
247
+ Returns
248
+ -------
249
+ float
250
+ The Pearson correlation between self and self.shift(lag).
251
+
252
+ See Also
253
+ --------
254
+ Series.corr : Compute the correlation between two Series.
255
+ Series.shift : Shift index by desired number of periods.
256
+ DataFrame.corr : Compute pairwise correlation of columns.
257
+ DataFrame.corrwith : Compute pairwise correlation between rows or
258
+ columns of two DataFrame objects.
259
+
260
+ Notes
261
+ -----
262
+ If the Pearson correlation is not well defined return 'NaN'.
263
+
264
+ Examples
265
+ --------
266
+ >>> import maxframe.dataframe as md
267
+ >>> s = md.Series([0.25, 0.5, 0.2, -0.05])
268
+ >>> s.autocorr().execute() # doctest: +ELLIPSIS.execute()
269
+ 0.10355...
270
+ >>> s.autocorr(lag=2).execute() # doctest: +ELLIPSIS.execute()
271
+ -0.99999...
272
+
273
+ If the Pearson correlation is not well defined, then 'NaN' is returned.
274
+
275
+ >>> s = md.Series([1, 0, 0, 0])
276
+ >>> s.autocorr().execute()
277
+ nan
278
+ """
279
+ op = DataFrameCorr(other=series.shift(lag), method="pearson")
280
+ return op(series)
@@ -0,0 +1,341 @@
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 as OperandDef
19
+ from ...core import ENTITY_TYPE
20
+ from ...serialization.serializables import (
21
+ AnyField,
22
+ BoolField,
23
+ DataTypeField,
24
+ Int32Field,
25
+ KeyField,
26
+ StringField,
27
+ )
28
+ from ...tensor.core import TENSOR_TYPE
29
+ from ...tensor.datasource import empty
30
+ from ...tensor.datasource import from_series as tensor_from_series
31
+ from ...tensor.datasource import tensor as astensor
32
+ from ...tensor.statistics.quantile import quantile as tensor_quantile
33
+ from ..core import DATAFRAME_TYPE
34
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
35
+ from ..utils import build_empty_df, find_common_type, parse_index, validate_axis
36
+
37
+
38
+ class DataFrameQuantile(DataFrameOperator, DataFrameOperatorMixin):
39
+ _op_type_ = OperandDef.QUANTILE
40
+
41
+ input = KeyField("input", default=None)
42
+ q = AnyField("q", default=None)
43
+ axis = Int32Field("axis", default=None)
44
+ numeric_only = BoolField("numeric_only", default=None)
45
+ interpolation = StringField("interpolation", default=None)
46
+
47
+ dtype = DataTypeField("dtype", default=None)
48
+
49
+ def __init__(self, output_types=None, **kw):
50
+ super().__init__(_output_types=output_types, **kw)
51
+
52
+ def _set_inputs(self, inputs):
53
+ super()._set_inputs(inputs)
54
+ self.input = self._inputs[0]
55
+ if isinstance(self.q, TENSOR_TYPE):
56
+ self.q = self._inputs[-1]
57
+
58
+ def _calc_dtype_on_axis_1(self, a, dtypes):
59
+ quantile_dtypes = []
60
+ for name in dtypes.index:
61
+ dt = tensor_quantile(
62
+ tensor_from_series(a[name]),
63
+ self.q,
64
+ interpolation=self.interpolation,
65
+ handle_non_numeric=not self.numeric_only,
66
+ ).dtype
67
+ quantile_dtypes.append(dt)
68
+ return find_common_type(quantile_dtypes)
69
+
70
+ def _call_dataframe(self, a, inputs):
71
+ if self.numeric_only:
72
+ empty_df = build_empty_df(a.dtypes)
73
+ dtypes = empty_df._get_numeric_data().dtypes
74
+ else:
75
+ dtypes = a.dtypes
76
+ if isinstance(self.q, TENSOR_TYPE):
77
+ q_val = self.q
78
+ pd_index = pd.Index([], dtype=q_val.dtype)
79
+ name = None
80
+ store_index_value = False
81
+ else:
82
+ q_val = np.asanyarray(self.q)
83
+ pd_index = pd.Index(q_val)
84
+ name = self.q if q_val.size == 1 else None
85
+ store_index_value = True
86
+ tokenize_objects = (a, q_val, self.interpolation, type(self).__name__)
87
+
88
+ if q_val.ndim == 0 and self.axis == 0:
89
+ index_value = parse_index(dtypes.index, store_data=store_index_value)
90
+ shape = (len(dtypes),)
91
+ # calc dtype
92
+ dtype = self._calc_dtype_on_axis_1(a, dtypes)
93
+ return self.new_series(
94
+ inputs,
95
+ shape=shape,
96
+ dtype=dtype,
97
+ index_value=index_value,
98
+ name=name or dtypes.index.name,
99
+ )
100
+ elif q_val.ndim == 0 and self.axis == 1:
101
+ index_value = a.index_value
102
+ shape = (len(a),)
103
+ # calc dtype
104
+ dt = tensor_quantile(
105
+ empty(a.shape[1], dtype=find_common_type(list(dtypes))),
106
+ self.q,
107
+ interpolation=self.interpolation,
108
+ handle_non_numeric=not self.numeric_only,
109
+ ).dtype
110
+ return self.new_series(
111
+ inputs,
112
+ shape=shape,
113
+ dtype=dt,
114
+ index_value=index_value,
115
+ name=name or index_value.name,
116
+ )
117
+ elif q_val.ndim == 1 and self.axis == 0:
118
+ shape = (len(q_val), len(dtypes))
119
+ index_value = parse_index(
120
+ pd_index, *tokenize_objects, store_data=store_index_value
121
+ )
122
+ dtype_list = []
123
+ for name in dtypes.index:
124
+ dtype_list.append(
125
+ tensor_quantile(
126
+ tensor_from_series(a[name]),
127
+ self.q,
128
+ interpolation=self.interpolation,
129
+ handle_non_numeric=not self.numeric_only,
130
+ ).dtype
131
+ )
132
+ dtypes = pd.Series(dtype_list, index=dtypes.index)
133
+ return self.new_dataframe(
134
+ inputs,
135
+ shape=shape,
136
+ dtypes=dtypes,
137
+ index_value=index_value,
138
+ columns_value=parse_index(dtypes.index, store_data=True),
139
+ )
140
+ else:
141
+ assert q_val.ndim == 1 and self.axis == 1
142
+ shape = (len(q_val), a.shape[0])
143
+ index_value = parse_index(
144
+ pd_index, *tokenize_objects, store_data=store_index_value
145
+ )
146
+ pd_columns = a.index_value.to_pandas()
147
+ dtype_list = np.full(len(pd_columns), self._calc_dtype_on_axis_1(a, dtypes))
148
+ dtypes = pd.Series(dtype_list, index=pd_columns)
149
+ return self.new_dataframe(
150
+ inputs,
151
+ shape=shape,
152
+ dtypes=dtypes,
153
+ index_value=index_value,
154
+ columns_value=parse_index(
155
+ dtypes.index, store_data=True, key=a.index_value.key
156
+ ),
157
+ )
158
+
159
+ def _call_series(self, a, inputs):
160
+ if isinstance(self.q, TENSOR_TYPE):
161
+ q_val = self.q
162
+ index_val = pd.Index([], dtype=q_val.dtype)
163
+ store_index_value = False
164
+ else:
165
+ q_val = np.asanyarray(self.q)
166
+ index_val = pd.Index(q_val)
167
+ store_index_value = True
168
+
169
+ # get dtype by tensor
170
+ a_t = astensor(a)
171
+ self._dtype = dtype = tensor_quantile(
172
+ a_t,
173
+ self.q,
174
+ interpolation=self.interpolation,
175
+ handle_non_numeric=not self.numeric_only,
176
+ ).dtype
177
+
178
+ if q_val.ndim == 0:
179
+ return self.new_scalar(inputs, dtype=dtype)
180
+ else:
181
+ return self.new_series(
182
+ inputs,
183
+ shape=q_val.shape,
184
+ dtype=dtype,
185
+ index_value=parse_index(
186
+ index_val,
187
+ a,
188
+ q_val,
189
+ self.interpolation,
190
+ type(self).__name__,
191
+ store_data=store_index_value,
192
+ ),
193
+ name=a.name,
194
+ )
195
+
196
+ def __call__(self, a, q_input=None):
197
+ inputs = [a]
198
+ if q_input is not None:
199
+ inputs.append(q_input)
200
+ if isinstance(a, DATAFRAME_TYPE):
201
+ return self._call_dataframe(a, inputs)
202
+ else:
203
+ return self._call_series(a, inputs)
204
+
205
+
206
+ def quantile_series(series, q=0.5, interpolation="linear"):
207
+ """
208
+ Return value at the given quantile.
209
+
210
+ Parameters
211
+ ----------
212
+ q : float or array-like, default 0.5 (50% quantile)
213
+ 0 <= q <= 1, the quantile(s) to compute.
214
+ interpolation : {'linear', 'lower', 'higher', 'midpoint', 'nearest'}
215
+
216
+ This optional parameter specifies the interpolation method to use,
217
+ when the desired quantile lies between two data points `i` and `j`:
218
+
219
+ * linear: `i + (j - i) * fraction`, where `fraction` is the
220
+ fractional part of the index surrounded by `i` and `j`.
221
+ * lower: `i`.
222
+ * higher: `j`.
223
+ * nearest: `i` or `j` whichever is nearest.
224
+ * midpoint: (`i` + `j`) / 2.
225
+
226
+ Returns
227
+ -------
228
+ float or Series
229
+ If ``q`` is an array or a tensor, a Series will be returned where the
230
+ index is ``q`` and the values are the quantiles, otherwise
231
+ a float will be returned.
232
+
233
+ See Also
234
+ --------
235
+ core.window.Rolling.quantile
236
+ numpy.percentile
237
+
238
+ Examples
239
+ --------
240
+ >>> import maxframe.dataframe as md
241
+ >>> s = md.Series([1, 2, 3, 4])
242
+ >>> s.quantile(.5).execute()
243
+ 2.5
244
+ >>> s.quantile([.25, .5, .75]).execute()
245
+ 0.25 1.75
246
+ 0.50 2.50
247
+ 0.75 3.25
248
+ dtype: float64
249
+ """
250
+
251
+ if isinstance(q, ENTITY_TYPE):
252
+ q = astensor(q)
253
+ q_input = q
254
+ else:
255
+ q_input = None
256
+
257
+ op = DataFrameQuantile(q=q, interpolation=interpolation, gpu=series.op.gpu)
258
+ return op(series, q_input=q_input)
259
+
260
+
261
+ def quantile_dataframe(df, q=0.5, axis=0, numeric_only=True, interpolation="linear"):
262
+ """
263
+ Return values at the given quantile over requested axis.
264
+
265
+ Parameters
266
+ ----------
267
+ q : float or array-like, default 0.5 (50% quantile)
268
+ Value between 0 <= q <= 1, the quantile(s) to compute.
269
+ axis : {0, 1, 'index', 'columns'} (default 0)
270
+ Equals 0 or 'index' for row-wise, 1 or 'columns' for column-wise.
271
+ numeric_only : bool, default True
272
+ If False, the quantile of datetime and timedelta data will be
273
+ computed as well.
274
+ interpolation : {'linear', 'lower', 'higher', 'midpoint', 'nearest'}
275
+ This optional parameter specifies the interpolation method to use,
276
+ when the desired quantile lies between two data points `i` and `j`:
277
+ * linear: `i + (j - i) * fraction`, where `fraction` is the
278
+ fractional part of the index surrounded by `i` and `j`.
279
+ * lower: `i`.
280
+ * higher: `j`.
281
+ * nearest: `i` or `j` whichever is nearest.
282
+ * midpoint: (`i` + `j`) / 2.
283
+
284
+ Returns
285
+ -------
286
+ Series or DataFrame
287
+ If ``q`` is an array or a tensor, a DataFrame will be returned where the
288
+ index is ``q``, the columns are the columns of self, and the
289
+ values are the quantiles.
290
+ If ``q`` is a float, a Series will be returned where the
291
+ index is the columns of self and the values are the quantiles.
292
+
293
+ See Also
294
+ --------
295
+ core.window.Rolling.quantile: Rolling quantile.
296
+ numpy.percentile: Numpy function to compute the percentile.
297
+
298
+ Examples
299
+ --------
300
+ >>> import maxframe.dataframe as md
301
+ >>> df = md.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),
302
+ ... columns=['a', 'b'])
303
+ >>> df.quantile(.1).execute()
304
+ a 1.3
305
+ b 3.7
306
+ Name: 0.1, dtype: float64
307
+
308
+ >>> df.quantile([.1, .5]).execute()
309
+ a b
310
+ 0.1 1.3 3.7
311
+ 0.5 2.5 55.0
312
+
313
+ Specifying `numeric_only=False` will also compute the quantile of
314
+ datetime and timedelta data.
315
+
316
+ >>> df = md.DataFrame({'A': [1, 2],
317
+ ... 'B': [md.Timestamp('2010'),
318
+ ... md.Timestamp('2011')],
319
+ ... 'C': [md.Timedelta('1 days'),
320
+ ... md.Timedelta('2 days')]})
321
+ >>> df.quantile(0.5, numeric_only=False).execute()
322
+ A 1.5
323
+ B 2010-07-02 12:00:00
324
+ C 1 days 12:00:00
325
+ Name: 0.5, dtype: object
326
+ """
327
+ if isinstance(q, ENTITY_TYPE):
328
+ q = astensor(q)
329
+ q_input = q
330
+ else:
331
+ q_input = None
332
+ axis = validate_axis(axis, df)
333
+
334
+ op = DataFrameQuantile(
335
+ q=q,
336
+ interpolation=interpolation,
337
+ axis=axis,
338
+ numeric_only=numeric_only,
339
+ gpu=df.op.gpu,
340
+ )
341
+ return op(df, q_input=q_input)
@@ -0,0 +1,13 @@
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.