maxframe 0.1.0b5__cp310-cp310-macosx_11_0_arm64.whl

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

Potentially problematic release.


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

Files changed (647) hide show
  1. maxframe/__init__.py +32 -0
  2. maxframe/_utils.cpython-310-darwin.so +0 -0
  3. maxframe/_utils.pxd +33 -0
  4. maxframe/_utils.pyx +547 -0
  5. maxframe/codegen.py +528 -0
  6. maxframe/config/__init__.py +15 -0
  7. maxframe/config/config.py +443 -0
  8. maxframe/config/tests/__init__.py +13 -0
  9. maxframe/config/tests/test_config.py +103 -0
  10. maxframe/config/tests/test_validators.py +34 -0
  11. maxframe/config/validators.py +57 -0
  12. maxframe/conftest.py +139 -0
  13. maxframe/core/__init__.py +65 -0
  14. maxframe/core/base.py +156 -0
  15. maxframe/core/entity/__init__.py +44 -0
  16. maxframe/core/entity/chunks.py +68 -0
  17. maxframe/core/entity/core.py +152 -0
  18. maxframe/core/entity/executable.py +337 -0
  19. maxframe/core/entity/fuse.py +73 -0
  20. maxframe/core/entity/objects.py +100 -0
  21. maxframe/core/entity/output_types.py +90 -0
  22. maxframe/core/entity/tileables.py +438 -0
  23. maxframe/core/entity/utils.py +24 -0
  24. maxframe/core/graph/__init__.py +17 -0
  25. maxframe/core/graph/builder/__init__.py +16 -0
  26. maxframe/core/graph/builder/base.py +86 -0
  27. maxframe/core/graph/builder/chunk.py +430 -0
  28. maxframe/core/graph/builder/tileable.py +34 -0
  29. maxframe/core/graph/builder/utils.py +41 -0
  30. maxframe/core/graph/core.cpython-310-darwin.so +0 -0
  31. maxframe/core/graph/core.pyx +467 -0
  32. maxframe/core/graph/entity.py +171 -0
  33. maxframe/core/graph/tests/__init__.py +13 -0
  34. maxframe/core/graph/tests/test_graph.py +205 -0
  35. maxframe/core/mode.py +96 -0
  36. maxframe/core/operator/__init__.py +34 -0
  37. maxframe/core/operator/base.py +450 -0
  38. maxframe/core/operator/core.py +276 -0
  39. maxframe/core/operator/fetch.py +53 -0
  40. maxframe/core/operator/fuse.py +29 -0
  41. maxframe/core/operator/objects.py +72 -0
  42. maxframe/core/operator/shuffle.py +111 -0
  43. maxframe/core/operator/tests/__init__.py +13 -0
  44. maxframe/core/operator/tests/test_core.py +64 -0
  45. maxframe/core/tests/__init__.py +13 -0
  46. maxframe/core/tests/test_mode.py +75 -0
  47. maxframe/dataframe/__init__.py +81 -0
  48. maxframe/dataframe/arithmetic/__init__.py +359 -0
  49. maxframe/dataframe/arithmetic/abs.py +33 -0
  50. maxframe/dataframe/arithmetic/add.py +60 -0
  51. maxframe/dataframe/arithmetic/arccos.py +28 -0
  52. maxframe/dataframe/arithmetic/arccosh.py +28 -0
  53. maxframe/dataframe/arithmetic/arcsin.py +28 -0
  54. maxframe/dataframe/arithmetic/arcsinh.py +28 -0
  55. maxframe/dataframe/arithmetic/arctan.py +28 -0
  56. maxframe/dataframe/arithmetic/arctanh.py +28 -0
  57. maxframe/dataframe/arithmetic/around.py +152 -0
  58. maxframe/dataframe/arithmetic/bitwise_and.py +46 -0
  59. maxframe/dataframe/arithmetic/bitwise_or.py +50 -0
  60. maxframe/dataframe/arithmetic/bitwise_xor.py +46 -0
  61. maxframe/dataframe/arithmetic/ceil.py +28 -0
  62. maxframe/dataframe/arithmetic/core.py +342 -0
  63. maxframe/dataframe/arithmetic/cos.py +28 -0
  64. maxframe/dataframe/arithmetic/cosh.py +28 -0
  65. maxframe/dataframe/arithmetic/degrees.py +28 -0
  66. maxframe/dataframe/arithmetic/docstring.py +442 -0
  67. maxframe/dataframe/arithmetic/equal.py +56 -0
  68. maxframe/dataframe/arithmetic/exp.py +28 -0
  69. maxframe/dataframe/arithmetic/exp2.py +28 -0
  70. maxframe/dataframe/arithmetic/expm1.py +28 -0
  71. maxframe/dataframe/arithmetic/floor.py +28 -0
  72. maxframe/dataframe/arithmetic/floordiv.py +64 -0
  73. maxframe/dataframe/arithmetic/greater.py +57 -0
  74. maxframe/dataframe/arithmetic/greater_equal.py +57 -0
  75. maxframe/dataframe/arithmetic/invert.py +33 -0
  76. maxframe/dataframe/arithmetic/is_ufuncs.py +62 -0
  77. maxframe/dataframe/arithmetic/less.py +57 -0
  78. maxframe/dataframe/arithmetic/less_equal.py +57 -0
  79. maxframe/dataframe/arithmetic/log.py +28 -0
  80. maxframe/dataframe/arithmetic/log10.py +28 -0
  81. maxframe/dataframe/arithmetic/log2.py +28 -0
  82. maxframe/dataframe/arithmetic/mod.py +60 -0
  83. maxframe/dataframe/arithmetic/multiply.py +60 -0
  84. maxframe/dataframe/arithmetic/negative.py +33 -0
  85. maxframe/dataframe/arithmetic/not_equal.py +56 -0
  86. maxframe/dataframe/arithmetic/power.py +68 -0
  87. maxframe/dataframe/arithmetic/radians.py +28 -0
  88. maxframe/dataframe/arithmetic/sin.py +28 -0
  89. maxframe/dataframe/arithmetic/sinh.py +28 -0
  90. maxframe/dataframe/arithmetic/sqrt.py +28 -0
  91. maxframe/dataframe/arithmetic/subtract.py +64 -0
  92. maxframe/dataframe/arithmetic/tan.py +28 -0
  93. maxframe/dataframe/arithmetic/tanh.py +28 -0
  94. maxframe/dataframe/arithmetic/tests/__init__.py +13 -0
  95. maxframe/dataframe/arithmetic/tests/test_arithmetic.py +695 -0
  96. maxframe/dataframe/arithmetic/truediv.py +64 -0
  97. maxframe/dataframe/arithmetic/trunc.py +28 -0
  98. maxframe/dataframe/arrays.py +864 -0
  99. maxframe/dataframe/core.py +2417 -0
  100. maxframe/dataframe/datasource/__init__.py +15 -0
  101. maxframe/dataframe/datasource/core.py +81 -0
  102. maxframe/dataframe/datasource/dataframe.py +59 -0
  103. maxframe/dataframe/datasource/date_range.py +504 -0
  104. maxframe/dataframe/datasource/from_index.py +54 -0
  105. maxframe/dataframe/datasource/from_records.py +107 -0
  106. maxframe/dataframe/datasource/from_tensor.py +419 -0
  107. maxframe/dataframe/datasource/index.py +117 -0
  108. maxframe/dataframe/datasource/read_csv.py +528 -0
  109. maxframe/dataframe/datasource/read_odps_query.py +299 -0
  110. maxframe/dataframe/datasource/read_odps_table.py +253 -0
  111. maxframe/dataframe/datasource/read_parquet.py +421 -0
  112. maxframe/dataframe/datasource/series.py +55 -0
  113. maxframe/dataframe/datasource/tests/__init__.py +13 -0
  114. maxframe/dataframe/datasource/tests/test_datasource.py +401 -0
  115. maxframe/dataframe/datastore/__init__.py +26 -0
  116. maxframe/dataframe/datastore/core.py +19 -0
  117. maxframe/dataframe/datastore/to_csv.py +227 -0
  118. maxframe/dataframe/datastore/to_odps.py +162 -0
  119. maxframe/dataframe/extensions/__init__.py +41 -0
  120. maxframe/dataframe/extensions/accessor.py +50 -0
  121. maxframe/dataframe/extensions/reshuffle.py +83 -0
  122. maxframe/dataframe/extensions/tests/__init__.py +13 -0
  123. maxframe/dataframe/extensions/tests/test_extensions.py +38 -0
  124. maxframe/dataframe/fetch/__init__.py +15 -0
  125. maxframe/dataframe/fetch/core.py +86 -0
  126. maxframe/dataframe/groupby/__init__.py +82 -0
  127. maxframe/dataframe/groupby/aggregation.py +350 -0
  128. maxframe/dataframe/groupby/apply.py +251 -0
  129. maxframe/dataframe/groupby/core.py +179 -0
  130. maxframe/dataframe/groupby/cum.py +124 -0
  131. maxframe/dataframe/groupby/fill.py +141 -0
  132. maxframe/dataframe/groupby/getitem.py +92 -0
  133. maxframe/dataframe/groupby/head.py +105 -0
  134. maxframe/dataframe/groupby/sample.py +214 -0
  135. maxframe/dataframe/groupby/tests/__init__.py +13 -0
  136. maxframe/dataframe/groupby/tests/test_groupby.py +374 -0
  137. maxframe/dataframe/groupby/transform.py +255 -0
  138. maxframe/dataframe/indexing/__init__.py +84 -0
  139. maxframe/dataframe/indexing/add_prefix_suffix.py +110 -0
  140. maxframe/dataframe/indexing/align.py +349 -0
  141. maxframe/dataframe/indexing/at.py +83 -0
  142. maxframe/dataframe/indexing/getitem.py +204 -0
  143. maxframe/dataframe/indexing/iat.py +37 -0
  144. maxframe/dataframe/indexing/iloc.py +566 -0
  145. maxframe/dataframe/indexing/insert.py +86 -0
  146. maxframe/dataframe/indexing/loc.py +411 -0
  147. maxframe/dataframe/indexing/reindex.py +526 -0
  148. maxframe/dataframe/indexing/rename.py +462 -0
  149. maxframe/dataframe/indexing/rename_axis.py +209 -0
  150. maxframe/dataframe/indexing/reset_index.py +402 -0
  151. maxframe/dataframe/indexing/sample.py +221 -0
  152. maxframe/dataframe/indexing/set_axis.py +194 -0
  153. maxframe/dataframe/indexing/set_index.py +61 -0
  154. maxframe/dataframe/indexing/setitem.py +130 -0
  155. maxframe/dataframe/indexing/tests/__init__.py +13 -0
  156. maxframe/dataframe/indexing/tests/test_indexing.py +488 -0
  157. maxframe/dataframe/indexing/where.py +308 -0
  158. maxframe/dataframe/initializer.py +288 -0
  159. maxframe/dataframe/merge/__init__.py +32 -0
  160. maxframe/dataframe/merge/append.py +121 -0
  161. maxframe/dataframe/merge/concat.py +325 -0
  162. maxframe/dataframe/merge/merge.py +593 -0
  163. maxframe/dataframe/merge/tests/__init__.py +13 -0
  164. maxframe/dataframe/merge/tests/test_merge.py +215 -0
  165. maxframe/dataframe/misc/__init__.py +134 -0
  166. maxframe/dataframe/misc/_duplicate.py +46 -0
  167. maxframe/dataframe/misc/accessor.py +276 -0
  168. maxframe/dataframe/misc/apply.py +692 -0
  169. maxframe/dataframe/misc/astype.py +236 -0
  170. maxframe/dataframe/misc/case_when.py +141 -0
  171. maxframe/dataframe/misc/check_monotonic.py +84 -0
  172. maxframe/dataframe/misc/cut.py +383 -0
  173. maxframe/dataframe/misc/datetimes.py +79 -0
  174. maxframe/dataframe/misc/describe.py +108 -0
  175. maxframe/dataframe/misc/diff.py +210 -0
  176. maxframe/dataframe/misc/drop.py +440 -0
  177. maxframe/dataframe/misc/drop_duplicates.py +248 -0
  178. maxframe/dataframe/misc/duplicated.py +292 -0
  179. maxframe/dataframe/misc/eval.py +728 -0
  180. maxframe/dataframe/misc/explode.py +171 -0
  181. maxframe/dataframe/misc/get_dummies.py +208 -0
  182. maxframe/dataframe/misc/isin.py +217 -0
  183. maxframe/dataframe/misc/map.py +236 -0
  184. maxframe/dataframe/misc/melt.py +162 -0
  185. maxframe/dataframe/misc/memory_usage.py +248 -0
  186. maxframe/dataframe/misc/pct_change.py +150 -0
  187. maxframe/dataframe/misc/pivot_table.py +262 -0
  188. maxframe/dataframe/misc/qcut.py +104 -0
  189. maxframe/dataframe/misc/select_dtypes.py +104 -0
  190. maxframe/dataframe/misc/shift.py +256 -0
  191. maxframe/dataframe/misc/stack.py +238 -0
  192. maxframe/dataframe/misc/string_.py +221 -0
  193. maxframe/dataframe/misc/tests/__init__.py +13 -0
  194. maxframe/dataframe/misc/tests/test_misc.py +468 -0
  195. maxframe/dataframe/misc/to_numeric.py +178 -0
  196. maxframe/dataframe/misc/transform.py +361 -0
  197. maxframe/dataframe/misc/transpose.py +136 -0
  198. maxframe/dataframe/misc/value_counts.py +182 -0
  199. maxframe/dataframe/missing/__init__.py +53 -0
  200. maxframe/dataframe/missing/checkna.py +223 -0
  201. maxframe/dataframe/missing/dropna.py +280 -0
  202. maxframe/dataframe/missing/fillna.py +275 -0
  203. maxframe/dataframe/missing/replace.py +439 -0
  204. maxframe/dataframe/missing/tests/__init__.py +13 -0
  205. maxframe/dataframe/missing/tests/test_missing.py +89 -0
  206. maxframe/dataframe/operators.py +273 -0
  207. maxframe/dataframe/plotting/__init__.py +40 -0
  208. maxframe/dataframe/plotting/core.py +78 -0
  209. maxframe/dataframe/plotting/tests/__init__.py +13 -0
  210. maxframe/dataframe/plotting/tests/test_plotting.py +136 -0
  211. maxframe/dataframe/reduction/__init__.py +107 -0
  212. maxframe/dataframe/reduction/aggregation.py +344 -0
  213. maxframe/dataframe/reduction/all.py +78 -0
  214. maxframe/dataframe/reduction/any.py +78 -0
  215. maxframe/dataframe/reduction/core.py +837 -0
  216. maxframe/dataframe/reduction/count.py +59 -0
  217. maxframe/dataframe/reduction/cummax.py +30 -0
  218. maxframe/dataframe/reduction/cummin.py +30 -0
  219. maxframe/dataframe/reduction/cumprod.py +30 -0
  220. maxframe/dataframe/reduction/cumsum.py +30 -0
  221. maxframe/dataframe/reduction/custom_reduction.py +42 -0
  222. maxframe/dataframe/reduction/kurtosis.py +104 -0
  223. maxframe/dataframe/reduction/max.py +65 -0
  224. maxframe/dataframe/reduction/mean.py +61 -0
  225. maxframe/dataframe/reduction/min.py +65 -0
  226. maxframe/dataframe/reduction/nunique.py +141 -0
  227. maxframe/dataframe/reduction/prod.py +76 -0
  228. maxframe/dataframe/reduction/reduction_size.py +36 -0
  229. maxframe/dataframe/reduction/sem.py +69 -0
  230. maxframe/dataframe/reduction/skew.py +89 -0
  231. maxframe/dataframe/reduction/std.py +53 -0
  232. maxframe/dataframe/reduction/str_concat.py +48 -0
  233. maxframe/dataframe/reduction/sum.py +77 -0
  234. maxframe/dataframe/reduction/tests/__init__.py +13 -0
  235. maxframe/dataframe/reduction/tests/test_reduction.py +486 -0
  236. maxframe/dataframe/reduction/unique.py +90 -0
  237. maxframe/dataframe/reduction/var.py +72 -0
  238. maxframe/dataframe/sort/__init__.py +34 -0
  239. maxframe/dataframe/sort/core.py +36 -0
  240. maxframe/dataframe/sort/sort_index.py +153 -0
  241. maxframe/dataframe/sort/sort_values.py +311 -0
  242. maxframe/dataframe/sort/tests/__init__.py +13 -0
  243. maxframe/dataframe/sort/tests/test_sort.py +81 -0
  244. maxframe/dataframe/statistics/__init__.py +33 -0
  245. maxframe/dataframe/statistics/corr.py +280 -0
  246. maxframe/dataframe/statistics/quantile.py +341 -0
  247. maxframe/dataframe/statistics/tests/__init__.py +13 -0
  248. maxframe/dataframe/statistics/tests/test_statistics.py +82 -0
  249. maxframe/dataframe/tests/__init__.py +13 -0
  250. maxframe/dataframe/tests/test_initializer.py +29 -0
  251. maxframe/dataframe/tseries/__init__.py +13 -0
  252. maxframe/dataframe/tseries/tests/__init__.py +13 -0
  253. maxframe/dataframe/tseries/tests/test_tseries.py +30 -0
  254. maxframe/dataframe/tseries/to_datetime.py +297 -0
  255. maxframe/dataframe/ufunc/__init__.py +27 -0
  256. maxframe/dataframe/ufunc/tensor.py +54 -0
  257. maxframe/dataframe/ufunc/ufunc.py +52 -0
  258. maxframe/dataframe/utils.py +1267 -0
  259. maxframe/dataframe/window/__init__.py +29 -0
  260. maxframe/dataframe/window/aggregation.py +96 -0
  261. maxframe/dataframe/window/core.py +69 -0
  262. maxframe/dataframe/window/ewm.py +249 -0
  263. maxframe/dataframe/window/expanding.py +147 -0
  264. maxframe/dataframe/window/rolling.py +376 -0
  265. maxframe/dataframe/window/tests/__init__.py +13 -0
  266. maxframe/dataframe/window/tests/test_ewm.py +70 -0
  267. maxframe/dataframe/window/tests/test_expanding.py +66 -0
  268. maxframe/dataframe/window/tests/test_rolling.py +57 -0
  269. maxframe/env.py +33 -0
  270. maxframe/errors.py +21 -0
  271. maxframe/extension.py +81 -0
  272. maxframe/learn/__init__.py +17 -0
  273. maxframe/learn/contrib/__init__.py +17 -0
  274. maxframe/learn/contrib/pytorch/__init__.py +16 -0
  275. maxframe/learn/contrib/pytorch/run_function.py +110 -0
  276. maxframe/learn/contrib/pytorch/run_script.py +102 -0
  277. maxframe/learn/contrib/pytorch/tests/__init__.py +13 -0
  278. maxframe/learn/contrib/pytorch/tests/test_pytorch.py +42 -0
  279. maxframe/learn/contrib/utils.py +52 -0
  280. maxframe/learn/contrib/xgboost/__init__.py +26 -0
  281. maxframe/learn/contrib/xgboost/classifier.py +86 -0
  282. maxframe/learn/contrib/xgboost/core.py +156 -0
  283. maxframe/learn/contrib/xgboost/dmatrix.py +150 -0
  284. maxframe/learn/contrib/xgboost/predict.py +138 -0
  285. maxframe/learn/contrib/xgboost/regressor.py +78 -0
  286. maxframe/learn/contrib/xgboost/tests/__init__.py +13 -0
  287. maxframe/learn/contrib/xgboost/tests/test_core.py +43 -0
  288. maxframe/learn/contrib/xgboost/train.py +121 -0
  289. maxframe/learn/utils/__init__.py +15 -0
  290. maxframe/learn/utils/core.py +29 -0
  291. maxframe/lib/__init__.py +15 -0
  292. maxframe/lib/aio/__init__.py +27 -0
  293. maxframe/lib/aio/_runners.py +162 -0
  294. maxframe/lib/aio/_threads.py +35 -0
  295. maxframe/lib/aio/base.py +82 -0
  296. maxframe/lib/aio/file.py +85 -0
  297. maxframe/lib/aio/isolation.py +100 -0
  298. maxframe/lib/aio/lru.py +242 -0
  299. maxframe/lib/aio/parallelism.py +37 -0
  300. maxframe/lib/aio/tests/__init__.py +13 -0
  301. maxframe/lib/aio/tests/test_aio_file.py +55 -0
  302. maxframe/lib/compression.py +55 -0
  303. maxframe/lib/cython/__init__.py +13 -0
  304. maxframe/lib/cython/libcpp.pxd +30 -0
  305. maxframe/lib/filesystem/__init__.py +21 -0
  306. maxframe/lib/filesystem/_glob.py +173 -0
  307. maxframe/lib/filesystem/_oss_lib/__init__.py +13 -0
  308. maxframe/lib/filesystem/_oss_lib/common.py +198 -0
  309. maxframe/lib/filesystem/_oss_lib/glob.py +147 -0
  310. maxframe/lib/filesystem/_oss_lib/handle.py +156 -0
  311. maxframe/lib/filesystem/arrow.py +236 -0
  312. maxframe/lib/filesystem/base.py +263 -0
  313. maxframe/lib/filesystem/core.py +95 -0
  314. maxframe/lib/filesystem/fsmap.py +164 -0
  315. maxframe/lib/filesystem/hdfs.py +31 -0
  316. maxframe/lib/filesystem/local.py +112 -0
  317. maxframe/lib/filesystem/oss.py +157 -0
  318. maxframe/lib/filesystem/tests/__init__.py +13 -0
  319. maxframe/lib/filesystem/tests/test_filesystem.py +223 -0
  320. maxframe/lib/filesystem/tests/test_oss.py +182 -0
  321. maxframe/lib/functools_compat.py +81 -0
  322. maxframe/lib/mmh3.cpython-310-darwin.so +0 -0
  323. maxframe/lib/mmh3_src/MurmurHash3.cpp +339 -0
  324. maxframe/lib/mmh3_src/MurmurHash3.h +43 -0
  325. maxframe/lib/mmh3_src/mmh3module.cpp +387 -0
  326. maxframe/lib/sparse/__init__.py +861 -0
  327. maxframe/lib/sparse/array.py +1604 -0
  328. maxframe/lib/sparse/core.py +92 -0
  329. maxframe/lib/sparse/matrix.py +241 -0
  330. maxframe/lib/sparse/tests/__init__.py +15 -0
  331. maxframe/lib/sparse/tests/test_sparse.py +476 -0
  332. maxframe/lib/sparse/vector.py +150 -0
  333. maxframe/lib/tblib/LICENSE +20 -0
  334. maxframe/lib/tblib/__init__.py +327 -0
  335. maxframe/lib/tblib/cpython.py +83 -0
  336. maxframe/lib/tblib/decorators.py +44 -0
  337. maxframe/lib/tblib/pickling_support.py +90 -0
  338. maxframe/lib/tests/__init__.py +13 -0
  339. maxframe/lib/tests/test_wrapped_pickle.py +51 -0
  340. maxframe/lib/version.py +620 -0
  341. maxframe/lib/wrapped_pickle.py +139 -0
  342. maxframe/mixin.py +100 -0
  343. maxframe/odpsio/__init__.py +21 -0
  344. maxframe/odpsio/arrow.py +91 -0
  345. maxframe/odpsio/schema.py +364 -0
  346. maxframe/odpsio/tableio.py +322 -0
  347. maxframe/odpsio/tests/__init__.py +13 -0
  348. maxframe/odpsio/tests/test_arrow.py +88 -0
  349. maxframe/odpsio/tests/test_schema.py +297 -0
  350. maxframe/odpsio/tests/test_tableio.py +136 -0
  351. maxframe/odpsio/tests/test_volumeio.py +90 -0
  352. maxframe/odpsio/volumeio.py +95 -0
  353. maxframe/opcodes.py +590 -0
  354. maxframe/protocol.py +415 -0
  355. maxframe/remote/__init__.py +18 -0
  356. maxframe/remote/core.py +210 -0
  357. maxframe/remote/run_script.py +121 -0
  358. maxframe/serialization/__init__.py +26 -0
  359. maxframe/serialization/arrow.py +95 -0
  360. maxframe/serialization/core.cpython-310-darwin.so +0 -0
  361. maxframe/serialization/core.pxd +44 -0
  362. maxframe/serialization/core.pyi +61 -0
  363. maxframe/serialization/core.pyx +1094 -0
  364. maxframe/serialization/exception.py +86 -0
  365. maxframe/serialization/maxframe_objects.py +39 -0
  366. maxframe/serialization/numpy.py +91 -0
  367. maxframe/serialization/pandas.py +202 -0
  368. maxframe/serialization/scipy.py +71 -0
  369. maxframe/serialization/serializables/__init__.py +55 -0
  370. maxframe/serialization/serializables/core.py +262 -0
  371. maxframe/serialization/serializables/field.py +624 -0
  372. maxframe/serialization/serializables/field_type.py +589 -0
  373. maxframe/serialization/serializables/tests/__init__.py +13 -0
  374. maxframe/serialization/serializables/tests/test_field_type.py +121 -0
  375. maxframe/serialization/serializables/tests/test_serializable.py +250 -0
  376. maxframe/serialization/tests/__init__.py +13 -0
  377. maxframe/serialization/tests/test_serial.py +412 -0
  378. maxframe/session.py +1310 -0
  379. maxframe/tensor/__init__.py +183 -0
  380. maxframe/tensor/arithmetic/__init__.py +315 -0
  381. maxframe/tensor/arithmetic/abs.py +68 -0
  382. maxframe/tensor/arithmetic/absolute.py +68 -0
  383. maxframe/tensor/arithmetic/add.py +82 -0
  384. maxframe/tensor/arithmetic/angle.py +72 -0
  385. maxframe/tensor/arithmetic/arccos.py +104 -0
  386. maxframe/tensor/arithmetic/arccosh.py +91 -0
  387. maxframe/tensor/arithmetic/arcsin.py +94 -0
  388. maxframe/tensor/arithmetic/arcsinh.py +86 -0
  389. maxframe/tensor/arithmetic/arctan.py +106 -0
  390. maxframe/tensor/arithmetic/arctan2.py +128 -0
  391. maxframe/tensor/arithmetic/arctanh.py +86 -0
  392. maxframe/tensor/arithmetic/around.py +114 -0
  393. maxframe/tensor/arithmetic/bitand.py +95 -0
  394. maxframe/tensor/arithmetic/bitor.py +102 -0
  395. maxframe/tensor/arithmetic/bitxor.py +95 -0
  396. maxframe/tensor/arithmetic/cbrt.py +66 -0
  397. maxframe/tensor/arithmetic/ceil.py +71 -0
  398. maxframe/tensor/arithmetic/clip.py +165 -0
  399. maxframe/tensor/arithmetic/conj.py +74 -0
  400. maxframe/tensor/arithmetic/copysign.py +78 -0
  401. maxframe/tensor/arithmetic/core.py +544 -0
  402. maxframe/tensor/arithmetic/cos.py +85 -0
  403. maxframe/tensor/arithmetic/cosh.py +72 -0
  404. maxframe/tensor/arithmetic/deg2rad.py +72 -0
  405. maxframe/tensor/arithmetic/degrees.py +77 -0
  406. maxframe/tensor/arithmetic/divide.py +114 -0
  407. maxframe/tensor/arithmetic/equal.py +76 -0
  408. maxframe/tensor/arithmetic/exp.py +106 -0
  409. maxframe/tensor/arithmetic/exp2.py +67 -0
  410. maxframe/tensor/arithmetic/expm1.py +79 -0
  411. maxframe/tensor/arithmetic/fabs.py +74 -0
  412. maxframe/tensor/arithmetic/fix.py +69 -0
  413. maxframe/tensor/arithmetic/float_power.py +103 -0
  414. maxframe/tensor/arithmetic/floor.py +77 -0
  415. maxframe/tensor/arithmetic/floordiv.py +94 -0
  416. maxframe/tensor/arithmetic/fmax.py +105 -0
  417. maxframe/tensor/arithmetic/fmin.py +106 -0
  418. maxframe/tensor/arithmetic/fmod.py +99 -0
  419. maxframe/tensor/arithmetic/frexp.py +92 -0
  420. maxframe/tensor/arithmetic/greater.py +77 -0
  421. maxframe/tensor/arithmetic/greater_equal.py +69 -0
  422. maxframe/tensor/arithmetic/hypot.py +77 -0
  423. maxframe/tensor/arithmetic/i0.py +89 -0
  424. maxframe/tensor/arithmetic/imag.py +67 -0
  425. maxframe/tensor/arithmetic/invert.py +110 -0
  426. maxframe/tensor/arithmetic/isclose.py +115 -0
  427. maxframe/tensor/arithmetic/iscomplex.py +64 -0
  428. maxframe/tensor/arithmetic/isfinite.py +106 -0
  429. maxframe/tensor/arithmetic/isinf.py +103 -0
  430. maxframe/tensor/arithmetic/isnan.py +82 -0
  431. maxframe/tensor/arithmetic/isreal.py +63 -0
  432. maxframe/tensor/arithmetic/ldexp.py +99 -0
  433. maxframe/tensor/arithmetic/less.py +69 -0
  434. maxframe/tensor/arithmetic/less_equal.py +69 -0
  435. maxframe/tensor/arithmetic/log.py +92 -0
  436. maxframe/tensor/arithmetic/log10.py +85 -0
  437. maxframe/tensor/arithmetic/log1p.py +95 -0
  438. maxframe/tensor/arithmetic/log2.py +85 -0
  439. maxframe/tensor/arithmetic/logaddexp.py +80 -0
  440. maxframe/tensor/arithmetic/logaddexp2.py +78 -0
  441. maxframe/tensor/arithmetic/logical_and.py +81 -0
  442. maxframe/tensor/arithmetic/logical_not.py +74 -0
  443. maxframe/tensor/arithmetic/logical_or.py +82 -0
  444. maxframe/tensor/arithmetic/logical_xor.py +88 -0
  445. maxframe/tensor/arithmetic/lshift.py +82 -0
  446. maxframe/tensor/arithmetic/maximum.py +108 -0
  447. maxframe/tensor/arithmetic/minimum.py +108 -0
  448. maxframe/tensor/arithmetic/mod.py +104 -0
  449. maxframe/tensor/arithmetic/modf.py +83 -0
  450. maxframe/tensor/arithmetic/multiply.py +81 -0
  451. maxframe/tensor/arithmetic/nan_to_num.py +99 -0
  452. maxframe/tensor/arithmetic/negative.py +65 -0
  453. maxframe/tensor/arithmetic/nextafter.py +68 -0
  454. maxframe/tensor/arithmetic/not_equal.py +72 -0
  455. maxframe/tensor/arithmetic/positive.py +47 -0
  456. maxframe/tensor/arithmetic/power.py +106 -0
  457. maxframe/tensor/arithmetic/rad2deg.py +71 -0
  458. maxframe/tensor/arithmetic/radians.py +77 -0
  459. maxframe/tensor/arithmetic/real.py +70 -0
  460. maxframe/tensor/arithmetic/reciprocal.py +76 -0
  461. maxframe/tensor/arithmetic/rint.py +68 -0
  462. maxframe/tensor/arithmetic/rshift.py +81 -0
  463. maxframe/tensor/arithmetic/setimag.py +29 -0
  464. maxframe/tensor/arithmetic/setreal.py +29 -0
  465. maxframe/tensor/arithmetic/sign.py +81 -0
  466. maxframe/tensor/arithmetic/signbit.py +65 -0
  467. maxframe/tensor/arithmetic/sin.py +98 -0
  468. maxframe/tensor/arithmetic/sinc.py +102 -0
  469. maxframe/tensor/arithmetic/sinh.py +93 -0
  470. maxframe/tensor/arithmetic/spacing.py +72 -0
  471. maxframe/tensor/arithmetic/sqrt.py +81 -0
  472. maxframe/tensor/arithmetic/square.py +69 -0
  473. maxframe/tensor/arithmetic/subtract.py +81 -0
  474. maxframe/tensor/arithmetic/tan.py +88 -0
  475. maxframe/tensor/arithmetic/tanh.py +92 -0
  476. maxframe/tensor/arithmetic/tests/__init__.py +15 -0
  477. maxframe/tensor/arithmetic/tests/test_arithmetic.py +414 -0
  478. maxframe/tensor/arithmetic/truediv.py +104 -0
  479. maxframe/tensor/arithmetic/trunc.py +72 -0
  480. maxframe/tensor/arithmetic/utils.py +65 -0
  481. maxframe/tensor/array_utils.py +186 -0
  482. maxframe/tensor/base/__init__.py +34 -0
  483. maxframe/tensor/base/astype.py +119 -0
  484. maxframe/tensor/base/atleast_1d.py +74 -0
  485. maxframe/tensor/base/broadcast_to.py +89 -0
  486. maxframe/tensor/base/ravel.py +92 -0
  487. maxframe/tensor/base/tests/__init__.py +13 -0
  488. maxframe/tensor/base/tests/test_base.py +114 -0
  489. maxframe/tensor/base/transpose.py +125 -0
  490. maxframe/tensor/base/unique.py +205 -0
  491. maxframe/tensor/base/where.py +127 -0
  492. maxframe/tensor/core.py +724 -0
  493. maxframe/tensor/datasource/__init__.py +32 -0
  494. maxframe/tensor/datasource/arange.py +156 -0
  495. maxframe/tensor/datasource/array.py +415 -0
  496. maxframe/tensor/datasource/core.py +109 -0
  497. maxframe/tensor/datasource/empty.py +169 -0
  498. maxframe/tensor/datasource/from_dataframe.py +70 -0
  499. maxframe/tensor/datasource/from_dense.py +54 -0
  500. maxframe/tensor/datasource/from_sparse.py +47 -0
  501. maxframe/tensor/datasource/full.py +186 -0
  502. maxframe/tensor/datasource/ones.py +173 -0
  503. maxframe/tensor/datasource/scalar.py +40 -0
  504. maxframe/tensor/datasource/tests/__init__.py +13 -0
  505. maxframe/tensor/datasource/tests/test_datasource.py +278 -0
  506. maxframe/tensor/datasource/zeros.py +188 -0
  507. maxframe/tensor/fetch/__init__.py +15 -0
  508. maxframe/tensor/fetch/core.py +54 -0
  509. maxframe/tensor/indexing/__init__.py +47 -0
  510. maxframe/tensor/indexing/choose.py +196 -0
  511. maxframe/tensor/indexing/compress.py +124 -0
  512. maxframe/tensor/indexing/core.py +190 -0
  513. maxframe/tensor/indexing/extract.py +71 -0
  514. maxframe/tensor/indexing/fill_diagonal.py +183 -0
  515. maxframe/tensor/indexing/flatnonzero.py +60 -0
  516. maxframe/tensor/indexing/getitem.py +175 -0
  517. maxframe/tensor/indexing/nonzero.py +120 -0
  518. maxframe/tensor/indexing/setitem.py +132 -0
  519. maxframe/tensor/indexing/slice.py +29 -0
  520. maxframe/tensor/indexing/take.py +130 -0
  521. maxframe/tensor/indexing/tests/__init__.py +15 -0
  522. maxframe/tensor/indexing/tests/test_indexing.py +234 -0
  523. maxframe/tensor/indexing/unravel_index.py +103 -0
  524. maxframe/tensor/merge/__init__.py +15 -0
  525. maxframe/tensor/merge/stack.py +132 -0
  526. maxframe/tensor/merge/tests/__init__.py +13 -0
  527. maxframe/tensor/merge/tests/test_merge.py +52 -0
  528. maxframe/tensor/operators.py +123 -0
  529. maxframe/tensor/random/__init__.py +168 -0
  530. maxframe/tensor/random/beta.py +87 -0
  531. maxframe/tensor/random/binomial.py +137 -0
  532. maxframe/tensor/random/bytes.py +39 -0
  533. maxframe/tensor/random/chisquare.py +110 -0
  534. maxframe/tensor/random/choice.py +186 -0
  535. maxframe/tensor/random/core.py +234 -0
  536. maxframe/tensor/random/dirichlet.py +123 -0
  537. maxframe/tensor/random/exponential.py +94 -0
  538. maxframe/tensor/random/f.py +135 -0
  539. maxframe/tensor/random/gamma.py +128 -0
  540. maxframe/tensor/random/geometric.py +93 -0
  541. maxframe/tensor/random/gumbel.py +167 -0
  542. maxframe/tensor/random/hypergeometric.py +148 -0
  543. maxframe/tensor/random/laplace.py +133 -0
  544. maxframe/tensor/random/logistic.py +129 -0
  545. maxframe/tensor/random/lognormal.py +159 -0
  546. maxframe/tensor/random/logseries.py +122 -0
  547. maxframe/tensor/random/multinomial.py +133 -0
  548. maxframe/tensor/random/multivariate_normal.py +192 -0
  549. maxframe/tensor/random/negative_binomial.py +125 -0
  550. maxframe/tensor/random/noncentral_chisquare.py +132 -0
  551. maxframe/tensor/random/noncentral_f.py +126 -0
  552. maxframe/tensor/random/normal.py +143 -0
  553. maxframe/tensor/random/pareto.py +140 -0
  554. maxframe/tensor/random/permutation.py +104 -0
  555. maxframe/tensor/random/poisson.py +111 -0
  556. maxframe/tensor/random/power.py +142 -0
  557. maxframe/tensor/random/rand.py +82 -0
  558. maxframe/tensor/random/randint.py +121 -0
  559. maxframe/tensor/random/randn.py +96 -0
  560. maxframe/tensor/random/random_integers.py +123 -0
  561. maxframe/tensor/random/random_sample.py +86 -0
  562. maxframe/tensor/random/rayleigh.py +110 -0
  563. maxframe/tensor/random/shuffle.py +61 -0
  564. maxframe/tensor/random/standard_cauchy.py +105 -0
  565. maxframe/tensor/random/standard_exponential.py +72 -0
  566. maxframe/tensor/random/standard_gamma.py +120 -0
  567. maxframe/tensor/random/standard_normal.py +74 -0
  568. maxframe/tensor/random/standard_t.py +135 -0
  569. maxframe/tensor/random/tests/__init__.py +15 -0
  570. maxframe/tensor/random/tests/test_random.py +167 -0
  571. maxframe/tensor/random/triangular.py +119 -0
  572. maxframe/tensor/random/uniform.py +131 -0
  573. maxframe/tensor/random/vonmises.py +131 -0
  574. maxframe/tensor/random/wald.py +114 -0
  575. maxframe/tensor/random/weibull.py +140 -0
  576. maxframe/tensor/random/zipf.py +122 -0
  577. maxframe/tensor/rechunk/__init__.py +26 -0
  578. maxframe/tensor/rechunk/rechunk.py +43 -0
  579. maxframe/tensor/reduction/__init__.py +66 -0
  580. maxframe/tensor/reduction/all.py +103 -0
  581. maxframe/tensor/reduction/allclose.py +88 -0
  582. maxframe/tensor/reduction/any.py +105 -0
  583. maxframe/tensor/reduction/argmax.py +103 -0
  584. maxframe/tensor/reduction/argmin.py +103 -0
  585. maxframe/tensor/reduction/array_equal.py +64 -0
  586. maxframe/tensor/reduction/core.py +168 -0
  587. maxframe/tensor/reduction/count_nonzero.py +81 -0
  588. maxframe/tensor/reduction/cumprod.py +97 -0
  589. maxframe/tensor/reduction/cumsum.py +101 -0
  590. maxframe/tensor/reduction/max.py +120 -0
  591. maxframe/tensor/reduction/mean.py +123 -0
  592. maxframe/tensor/reduction/min.py +120 -0
  593. maxframe/tensor/reduction/nanargmax.py +82 -0
  594. maxframe/tensor/reduction/nanargmin.py +76 -0
  595. maxframe/tensor/reduction/nancumprod.py +91 -0
  596. maxframe/tensor/reduction/nancumsum.py +94 -0
  597. maxframe/tensor/reduction/nanmax.py +111 -0
  598. maxframe/tensor/reduction/nanmean.py +106 -0
  599. maxframe/tensor/reduction/nanmin.py +111 -0
  600. maxframe/tensor/reduction/nanprod.py +94 -0
  601. maxframe/tensor/reduction/nanstd.py +126 -0
  602. maxframe/tensor/reduction/nansum.py +115 -0
  603. maxframe/tensor/reduction/nanvar.py +149 -0
  604. maxframe/tensor/reduction/prod.py +130 -0
  605. maxframe/tensor/reduction/std.py +134 -0
  606. maxframe/tensor/reduction/sum.py +125 -0
  607. maxframe/tensor/reduction/tests/__init__.py +13 -0
  608. maxframe/tensor/reduction/tests/test_reduction.py +181 -0
  609. maxframe/tensor/reduction/var.py +176 -0
  610. maxframe/tensor/reshape/__init__.py +17 -0
  611. maxframe/tensor/reshape/reshape.py +188 -0
  612. maxframe/tensor/reshape/tests/__init__.py +15 -0
  613. maxframe/tensor/reshape/tests/test_reshape.py +37 -0
  614. maxframe/tensor/statistics/__init__.py +13 -0
  615. maxframe/tensor/statistics/percentile.py +175 -0
  616. maxframe/tensor/statistics/quantile.py +288 -0
  617. maxframe/tensor/ufunc/__init__.py +26 -0
  618. maxframe/tensor/ufunc/ufunc.py +200 -0
  619. maxframe/tensor/utils.py +718 -0
  620. maxframe/tests/__init__.py +13 -0
  621. maxframe/tests/test_codegen.py +69 -0
  622. maxframe/tests/test_protocol.py +144 -0
  623. maxframe/tests/test_utils.py +376 -0
  624. maxframe/tests/utils.py +164 -0
  625. maxframe/typing_.py +37 -0
  626. maxframe/udf.py +134 -0
  627. maxframe/utils.py +1114 -0
  628. maxframe-0.1.0b5.dist-info/METADATA +104 -0
  629. maxframe-0.1.0b5.dist-info/RECORD +647 -0
  630. maxframe-0.1.0b5.dist-info/WHEEL +5 -0
  631. maxframe-0.1.0b5.dist-info/top_level.txt +3 -0
  632. maxframe_client/__init__.py +17 -0
  633. maxframe_client/clients/__init__.py +13 -0
  634. maxframe_client/clients/framedriver.py +118 -0
  635. maxframe_client/clients/spe.py +104 -0
  636. maxframe_client/conftest.py +15 -0
  637. maxframe_client/fetcher.py +264 -0
  638. maxframe_client/session/__init__.py +22 -0
  639. maxframe_client/session/consts.py +36 -0
  640. maxframe_client/session/graph.py +119 -0
  641. maxframe_client/session/odps.py +482 -0
  642. maxframe_client/session/task.py +280 -0
  643. maxframe_client/session/tests/__init__.py +13 -0
  644. maxframe_client/session/tests/test_task.py +85 -0
  645. maxframe_client/tests/__init__.py +13 -0
  646. maxframe_client/tests/test_fetcher.py +89 -0
  647. maxframe_client/tests/test_session.py +255 -0
@@ -0,0 +1,210 @@
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 ...serialization.serializables import AnyField, Int8Field, Int64Field
17
+ from ..core import DATAFRAME_TYPE, OutputType
18
+ from ..operators import DataFrameOperator, DataFrameOperatorMixin
19
+ from ..utils import build_empty_df, build_empty_series, validate_axis
20
+
21
+
22
+ class DataFrameDiff(DataFrameOperatorMixin, DataFrameOperator):
23
+ _op_type_ = opcodes.DIFF
24
+
25
+ periods = Int64Field("periods", default=None)
26
+ axis = Int8Field("axis", default=None)
27
+
28
+ bool_columns = AnyField("bool_columns", default=None)
29
+
30
+ def __call__(self, df_or_series):
31
+ params = df_or_series.params.copy()
32
+
33
+ if isinstance(df_or_series, DATAFRAME_TYPE):
34
+ self.output_types = [OutputType.dataframe]
35
+ mock_obj = build_empty_df(df_or_series.dtypes)
36
+ params["dtypes"] = mock_obj.diff().dtypes
37
+ else:
38
+ self.output_types = [OutputType.series]
39
+ mock_obj = build_empty_series(df_or_series.dtype, name=df_or_series.name)
40
+ params["dtype"] = mock_obj.diff().dtype
41
+
42
+ return self.new_tileable([df_or_series], **params)
43
+
44
+
45
+ def df_diff(df, periods=1, axis=0):
46
+ """
47
+ First discrete difference of element.
48
+ Calculates the difference of a DataFrame element compared with another
49
+ element in the DataFrame (default is the element in the same column
50
+ of the previous row).
51
+
52
+ Parameters
53
+ ----------
54
+ periods : int, default 1
55
+ Periods to shift for calculating difference, accepts negative
56
+ values.
57
+ axis : {0 or 'index', 1 or 'columns'}, default 0
58
+ Take difference over rows (0) or columns (1).
59
+
60
+ Returns
61
+ -------
62
+ DataFrame
63
+
64
+ See Also
65
+ --------
66
+ Series.diff : First discrete difference for a Series.
67
+ DataFrame.pct_change : Percent change over given number of periods.
68
+ DataFrame.shift : Shift index by desired number of periods with an
69
+ optional time freq.
70
+
71
+ Notes
72
+ -----
73
+ For boolean dtypes, this uses :meth:`operator.xor` rather than
74
+ :meth:`operator.sub`.
75
+
76
+ Examples
77
+ --------
78
+ Difference with previous row
79
+
80
+ >>> import maxframe.dataframe as md
81
+ >>> df = md.DataFrame({'a': [1, 2, 3, 4, 5, 6],
82
+ ... 'b': [1, 1, 2, 3, 5, 8],
83
+ ... 'c': [1, 4, 9, 16, 25, 36]})
84
+ >>> df.execute()
85
+ a b c
86
+ 0 1 1 1
87
+ 1 2 1 4
88
+ 2 3 2 9
89
+ 3 4 3 16
90
+ 4 5 5 25
91
+ 5 6 8 36
92
+
93
+ >>> df.diff().execute()
94
+ a b c
95
+ 0 NaN NaN NaN
96
+ 1 1.0 0.0 3.0
97
+ 2 1.0 1.0 5.0
98
+ 3 1.0 1.0 7.0
99
+ 4 1.0 2.0 9.0
100
+ 5 1.0 3.0 11.0
101
+
102
+ Difference with previous column
103
+
104
+ >>> df.diff(axis=1).execute()
105
+ a b c
106
+ 0 NaN 0.0 0.0
107
+ 1 NaN -1.0 3.0
108
+ 2 NaN -1.0 7.0
109
+ 3 NaN -1.0 13.0
110
+ 4 NaN 0.0 20.0
111
+ 5 NaN 2.0 28.0
112
+
113
+ Difference with 3rd previous row
114
+
115
+ >>> df.diff(periods=3).execute()
116
+ a b c
117
+ 0 NaN NaN NaN
118
+ 1 NaN NaN NaN
119
+ 2 NaN NaN NaN
120
+ 3 3.0 2.0 15.0
121
+ 4 3.0 4.0 21.0
122
+ 5 3.0 6.0 27.0
123
+
124
+ Difference with following row
125
+
126
+ >>> df.diff(periods=-1).execute()
127
+ a b c
128
+ 0 -1.0 0.0 -3.0
129
+ 1 -1.0 -1.0 -5.0
130
+ 2 -1.0 -1.0 -7.0
131
+ 3 -1.0 -2.0 -9.0
132
+ 4 -1.0 -3.0 -11.0
133
+ 5 NaN NaN NaN
134
+ """
135
+ axis = validate_axis(axis, df)
136
+ op = DataFrameDiff(periods=periods, axis=axis)
137
+ return op(df)
138
+
139
+
140
+ def series_diff(series, periods=1):
141
+ """
142
+ First discrete difference of element.
143
+ Calculates the difference of a Series element compared with another
144
+ element in the Series (default is element in previous row).
145
+
146
+ Parameters
147
+ ----------
148
+ periods : int, default 1
149
+ Periods to shift for calculating difference, accepts negative
150
+ values.
151
+
152
+ Returns
153
+ -------
154
+ Series
155
+ First differences of the Series.
156
+
157
+ See Also
158
+ --------
159
+ Series.pct_change :
160
+ Percent change over given number of periods.
161
+ Series.shift :
162
+ Shift index by desired number of periods with an optional time freq.
163
+ DataFrame.diff :
164
+ First discrete difference of object.
165
+
166
+ Notes
167
+ -----
168
+ For boolean dtypes, this uses :meth:`operator.xor` rather than
169
+ :meth:`operator.sub`.
170
+
171
+ Examples
172
+ --------
173
+
174
+ Difference with previous row
175
+
176
+ >>> import maxframe.dataframe as md
177
+ >>> s = md.Series([1, 1, 2, 3, 5, 8])
178
+ >>> s.diff().execute()
179
+ 0 NaN
180
+ 1 0.0
181
+ 2 1.0
182
+ 3 1.0
183
+ 4 2.0
184
+ 5 3.0
185
+ dtype: float64
186
+
187
+ Difference with 3rd previous row
188
+
189
+ >>> s.diff(periods=3).execute()
190
+ 0 NaN
191
+ 1 NaN
192
+ 2 NaN
193
+ 3 2.0
194
+ 4 4.0
195
+ 5 6.0
196
+ dtype: float64
197
+
198
+ Difference with following row
199
+
200
+ >>> s.diff(periods=-1).execute()
201
+ 0 0.0
202
+ 1 -1.0
203
+ 2 -1.0
204
+ 3 -2.0
205
+ 4 -3.0
206
+ 5 NaN
207
+ dtype: float64
208
+ """
209
+ op = DataFrameDiff(periods=periods)
210
+ return op(series)
@@ -0,0 +1,440 @@
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 warnings
16
+
17
+ import numpy as np
18
+
19
+ from maxframe import opcodes
20
+ from maxframe.core import Entity, OutputType
21
+ from maxframe.dataframe.core import DATAFRAME_TYPE, SERIES_TYPE, IndexValue
22
+ from maxframe.dataframe.operators import DataFrameOperator, DataFrameOperatorMixin
23
+ from maxframe.dataframe.utils import parse_index, validate_axis
24
+ from maxframe.serialization.serializables import AnyField, StringField
25
+
26
+
27
+ class DataFrameDrop(DataFrameOperatorMixin, DataFrameOperator):
28
+ _op_type_ = opcodes.DATAFRAME_DROP
29
+
30
+ index = AnyField("index", default=None)
31
+ columns = AnyField("columns", default=None)
32
+ level = AnyField("level", default=None)
33
+ errors = StringField("errors", default="raise")
34
+
35
+ def _filter_dtypes(self, dtypes, ignore_errors=False):
36
+ if self.columns:
37
+ return dtypes.drop(
38
+ index=self.columns,
39
+ level=self.level,
40
+ errors="ignore" if ignore_errors else self.errors,
41
+ )
42
+ else:
43
+ return dtypes
44
+
45
+ def _set_inputs(self, inputs):
46
+ super()._set_inputs(inputs)
47
+ inputs_iter = iter(self._inputs[1:])
48
+ if len(self._inputs) > 1:
49
+ self.index = next(inputs_iter)
50
+
51
+ def __call__(self, df_or_series):
52
+ params = df_or_series.params.copy()
53
+ shape_list = list(df_or_series.shape)
54
+
55
+ if self.index is not None:
56
+ if isinstance(df_or_series.index_value.value, IndexValue.RangeIndex):
57
+ params["index_value"] = parse_index(
58
+ None, (df_or_series.key, df_or_series.index_value.key)
59
+ )
60
+ shape_list[0] = np.nan
61
+
62
+ if isinstance(df_or_series, DATAFRAME_TYPE):
63
+ new_dtypes = self._filter_dtypes(df_or_series.dtypes)
64
+ params["columns_value"] = parse_index(new_dtypes.index, store_data=True)
65
+ params["dtypes"] = new_dtypes
66
+ shape_list[1] = len(new_dtypes)
67
+ self.output_types = [OutputType.dataframe]
68
+ elif isinstance(df_or_series, SERIES_TYPE):
69
+ self.output_types = [OutputType.series]
70
+ else:
71
+ self.output_types = [OutputType.index]
72
+
73
+ params["shape"] = tuple(shape_list)
74
+
75
+ inputs = [df_or_series]
76
+ if isinstance(self.index, Entity):
77
+ inputs.append(self.index)
78
+ return self.new_tileable(inputs, **params)
79
+
80
+
81
+ def _drop(
82
+ df_or_series,
83
+ labels=None,
84
+ axis=0,
85
+ index=None,
86
+ columns=None,
87
+ level=None,
88
+ inplace=False,
89
+ errors="raise",
90
+ ):
91
+ axis = validate_axis(axis, df_or_series)
92
+ if labels is not None and (index is not None or columns is not None):
93
+ raise ValueError("Cannot specify both 'labels' and 'index'/'columns'")
94
+ if labels is not None:
95
+ if axis == 0:
96
+ index = labels
97
+ else:
98
+ columns = labels
99
+
100
+ if index is not None and errors == "raise":
101
+ warnings.warn("Errors will not raise for non-existing indices")
102
+ if isinstance(columns, Entity):
103
+ raise NotImplementedError("Columns cannot be MaxFrame objects")
104
+
105
+ op = DataFrameDrop(index=index, columns=columns, level=level, errors=errors)
106
+ df = op(df_or_series)
107
+ if inplace:
108
+ df_or_series.data = df.data
109
+ else:
110
+ return df
111
+
112
+
113
+ def df_drop(
114
+ df,
115
+ labels=None,
116
+ axis=0,
117
+ index=None,
118
+ columns=None,
119
+ level=None,
120
+ inplace=False,
121
+ errors="raise",
122
+ ):
123
+ """
124
+ Drop specified labels from rows or columns.
125
+
126
+ Remove rows or columns by specifying label names and corresponding
127
+ axis, or by specifying directly index or column names. When using a
128
+ multi-index, labels on different levels can be removed by specifying
129
+ the level.
130
+
131
+ Parameters
132
+ ----------
133
+ labels : single label or list-like
134
+ Index or column labels to drop.
135
+ axis : {0 or 'index', 1 or 'columns'}, default 0
136
+ Whether to drop labels from the index (0 or 'index') or
137
+ columns (1 or 'columns').
138
+ index : single label or list-like
139
+ Alternative to specifying axis (``labels, axis=0``
140
+ is equivalent to ``index=labels``).
141
+ columns : single label or list-like
142
+ Alternative to specifying axis (``labels, axis=1``
143
+ is equivalent to ``columns=labels``).
144
+ level : int or level name, optional
145
+ For MultiIndex, level from which the labels will be removed.
146
+ inplace : bool, default False
147
+ If True, do operation inplace and return None.
148
+ errors : {'ignore', 'raise'}, default 'raise'
149
+ If 'ignore', suppress error and only existing labels are
150
+ dropped. Note that errors for missing indices will not raise.
151
+
152
+ Returns
153
+ -------
154
+ DataFrame
155
+ DataFrame without the removed index or column labels.
156
+
157
+ Raises
158
+ ------
159
+ KeyError
160
+ If any of the labels is not found in the selected axis.
161
+
162
+ See Also
163
+ --------
164
+ DataFrame.loc : Label-location based indexer for selection by label.
165
+ DataFrame.dropna : Return DataFrame with labels on given axis omitted
166
+ where (all or any) data are missing.
167
+ DataFrame.drop_duplicates : Return DataFrame with duplicate rows
168
+ removed, optionally only considering certain columns.
169
+ Series.drop : Return Series with specified index labels removed.
170
+
171
+ Examples
172
+ --------
173
+ >>> import numpy as np
174
+ >>> import pandas as pd
175
+ >>> import maxframe.dataframe as md
176
+ >>> df = md.DataFrame(np.arange(12).reshape(3, 4),
177
+ ... columns=['A', 'B', 'C', 'D'])
178
+ >>> df.execute()
179
+ A B C D
180
+ 0 0 1 2 3
181
+ 1 4 5 6 7
182
+ 2 8 9 10 11
183
+
184
+ Drop columns
185
+
186
+ >>> df.drop(['B', 'C'], axis=1).execute()
187
+ A D
188
+ 0 0 3
189
+ 1 4 7
190
+ 2 8 11
191
+
192
+ >>> df.drop(columns=['B', 'C']).execute()
193
+ A D
194
+ 0 0 3
195
+ 1 4 7
196
+ 2 8 11
197
+
198
+ Drop a row by index
199
+
200
+ >>> df.drop([0, 1]).execute()
201
+ A B C D
202
+ 2 8 9 10 11
203
+
204
+ Drop columns and/or rows of MultiIndex DataFrame
205
+
206
+ >>> midx = pd.MultiIndex(levels=[['lame', 'cow', 'falcon'],
207
+ ... ['speed', 'weight', 'length']],
208
+ ... codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
209
+ ... [0, 1, 2, 0, 1, 2, 0, 1, 2]])
210
+ >>> df = md.DataFrame(index=midx, columns=['big', 'small'],
211
+ ... data=[[45, 30], [200, 100], [1.5, 1], [30, 20],
212
+ ... [250, 150], [1.5, 0.8], [320, 250],
213
+ ... [1, 0.8], [0.3, 0.2]])
214
+ >>> df.execute()
215
+ big small
216
+ lame speed 45.0 30.0
217
+ weight 200.0 100.0
218
+ length 1.5 1.0
219
+ cow speed 30.0 20.0
220
+ weight 250.0 150.0
221
+ length 1.5 0.8
222
+ falcon speed 320.0 250.0
223
+ weight 1.0 0.8
224
+ length 0.3 0.2
225
+
226
+ >>> df.drop(index='cow', columns='small').execute()
227
+ big
228
+ lame speed 45.0
229
+ weight 200.0
230
+ length 1.5
231
+ falcon speed 320.0
232
+ weight 1.0
233
+ length 0.3
234
+
235
+ >>> df.drop(index='length', level=1).execute()
236
+ big small
237
+ lame speed 45.0 30.0
238
+ weight 200.0 100.0
239
+ cow speed 30.0 20.0
240
+ weight 250.0 150.0
241
+ falcon speed 320.0 250.0
242
+ weight 1.0 0.8
243
+ """
244
+ return _drop(
245
+ df,
246
+ labels=labels,
247
+ axis=axis,
248
+ index=index,
249
+ columns=columns,
250
+ level=level,
251
+ inplace=inplace,
252
+ errors=errors,
253
+ )
254
+
255
+
256
+ def df_pop(df, item):
257
+ """
258
+ Return item and drop from frame. Raise KeyError if not found.
259
+
260
+ Parameters
261
+ ----------
262
+ item : str
263
+ Label of column to be popped.
264
+
265
+ Returns
266
+ -------
267
+ Series
268
+
269
+ Examples
270
+ --------
271
+ >>> import numpy as np
272
+ >>> import maxframe.dataframe as md
273
+ >>> df = md.DataFrame([('falcon', 'bird', 389.0),
274
+ ... ('parrot', 'bird', 24.0),
275
+ ... ('lion', 'mammal', 80.5),
276
+ ... ('monkey', 'mammal', np.nan)],
277
+ ... columns=('name', 'class', 'max_speed'))
278
+ >>> df.execute()
279
+ name class max_speed
280
+ 0 falcon bird 389.0
281
+ 1 parrot bird 24.0
282
+ 2 lion mammal 80.5
283
+ 3 monkey mammal NaN
284
+
285
+ >>> df.pop('class').execute()
286
+ 0 bird
287
+ 1 bird
288
+ 2 mammal
289
+ 3 mammal
290
+ Name: class, dtype: object
291
+
292
+ >>> df.execute()
293
+ name max_speed
294
+ 0 falcon 389.0
295
+ 1 parrot 24.0
296
+ 2 lion 80.5
297
+ 3 monkey NaN
298
+ """
299
+ series = df.data[item]
300
+ df_drop(df, item, axis=1, inplace=True)
301
+ return series
302
+
303
+
304
+ def series_drop(
305
+ series,
306
+ labels=None,
307
+ axis=0,
308
+ index=None,
309
+ columns=None,
310
+ level=None,
311
+ inplace=False,
312
+ errors="raise",
313
+ ):
314
+ """
315
+ Return Series with specified index labels removed.
316
+
317
+ Remove elements of a Series based on specifying the index labels.
318
+ When using a multi-index, labels on different levels can be removed
319
+ by specifying the level.
320
+
321
+ Parameters
322
+ ----------
323
+ labels : single label or list-like
324
+ Index labels to drop.
325
+ axis : 0, default 0
326
+ Redundant for application on Series.
327
+ index : single label or list-like
328
+ Redundant for application on Series, but 'index' can be used instead
329
+ of 'labels'.
330
+
331
+ .. versionadded:: 0.21.0
332
+ columns : single label or list-like
333
+ No change is made to the Series; use 'index' or 'labels' instead.
334
+
335
+ .. versionadded:: 0.21.0
336
+ level : int or level name, optional
337
+ For MultiIndex, level for which the labels will be removed.
338
+ inplace : bool, default False
339
+ If True, do operation inplace and return None.
340
+ errors : {'ignore', 'raise'}, default 'raise'
341
+ Note that this argument is kept only for compatibility, and errors
342
+ will not raise even if ``errors=='raise'``.
343
+
344
+ Returns
345
+ -------
346
+ Series
347
+ Series with specified index labels removed.
348
+
349
+ Raises
350
+ ------
351
+ KeyError
352
+ If none of the labels are found in the index.
353
+
354
+ See Also
355
+ --------
356
+ Series.reindex : Return only specified index labels of Series.
357
+ Series.dropna : Return series without null values.
358
+ Series.drop_duplicates : Return Series with duplicate values removed.
359
+ DataFrame.drop : Drop specified labels from rows or columns.
360
+
361
+ Examples
362
+ --------
363
+ >>> import numpy as np
364
+ >>> import pandas as pd
365
+ >>> import maxframe.dataframe as md
366
+ >>> s = md.Series(data=np.arange(3), index=['A', 'B', 'C'])
367
+ >>> s.execute()
368
+ A 0
369
+ B 1
370
+ C 2
371
+ dtype: int64
372
+
373
+ Drop labels B en C
374
+
375
+ >>> s.drop(labels=['B', 'C']).execute()
376
+ A 0
377
+ dtype: int64
378
+
379
+ Drop 2nd level label in MultiIndex Series
380
+
381
+ >>> midx = pd.MultiIndex(levels=[['lame', 'cow', 'falcon'],
382
+ ... ['speed', 'weight', 'length']],
383
+ ... codes=[[0, 0, 0, 1, 1, 1, 2, 2, 2],
384
+ ... [0, 1, 2, 0, 1, 2, 0, 1, 2]])
385
+ >>> s = md.Series([45, 200, 1.2, 30, 250, 1.5, 320, 1, 0.3],
386
+ ... index=midx)
387
+ >>> s.execute()
388
+ lame speed 45.0
389
+ weight 200.0
390
+ length 1.2
391
+ cow speed 30.0
392
+ weight 250.0
393
+ length 1.5
394
+ falcon speed 320.0
395
+ weight 1.0
396
+ length 0.3
397
+ dtype: float64
398
+
399
+ >>> s.drop(labels='weight', level=1).execute()
400
+ lame speed 45.0
401
+ length 1.2
402
+ cow speed 30.0
403
+ length 1.5
404
+ falcon speed 320.0
405
+ length 0.3
406
+ dtype: float64
407
+ """
408
+ return _drop(
409
+ series,
410
+ labels=labels,
411
+ axis=axis,
412
+ index=index,
413
+ columns=columns,
414
+ level=level,
415
+ inplace=inplace,
416
+ errors=errors,
417
+ )
418
+
419
+
420
+ def index_drop(index, labels, errors="raise"):
421
+ """
422
+ Make new Index with passed list of labels deleted.
423
+
424
+ Parameters
425
+ ----------
426
+ labels : array-like
427
+ errors : {'ignore', 'raise'}, default 'raise'
428
+ Note that this argument is kept only for compatibility, and errors
429
+ will not raise even if ``errors=='raise'``.
430
+
431
+ Returns
432
+ -------
433
+ dropped : Index
434
+
435
+ Raises
436
+ ------
437
+ KeyError
438
+ If not all of the labels are found in the selected axis
439
+ """
440
+ return _drop(index, labels=labels, errors=errors)