numdaplot 0.1.0__py3-none-any.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.
Files changed (474) hide show
  1. numdaplot/__init__.py +506 -0
  2. numdaplot/arrays/__init__.py +5 -0
  3. numdaplot/arrays/array.py +92 -0
  4. numdaplot/arrays/array_arithmetic.py +404 -0
  5. numdaplot/arrays/array_calculation.py +143 -0
  6. numdaplot/arrays/array_conversion.py +150 -0
  7. numdaplot/arrays/array_creation.py +371 -0
  8. numdaplot/arrays/array_data.py +281 -0
  9. numdaplot/arrays/array_layout.py +179 -0
  10. numdaplot/arrays/array_logic.py +227 -0
  11. numdaplot/arrays/array_reflected_arithmetic.py +334 -0
  12. numdaplot/arrays/array_refusals.py +339 -0
  13. numdaplot/arrays/array_selection.py +195 -0
  14. numdaplot/arrays/array_sorting.py +59 -0
  15. numdaplot/arrays/axis_number.py +58 -0
  16. numdaplot/arrays/calculation/__init__.py +5 -0
  17. numdaplot/arrays/calculation/counting_statistics.py +325 -0
  18. numdaplot/arrays/calculation/location_statistics.py +268 -0
  19. numdaplot/arrays/calculation/math_function_values.py +183 -0
  20. numdaplot/arrays/calculation/statistic_values.py +209 -0
  21. numdaplot/arrays/calculation/time_function_values.py +419 -0
  22. numdaplot/arrays/conversion/__init__.py +5 -0
  23. numdaplot/arrays/conversion/array_text.py +62 -0
  24. numdaplot/arrays/conversion/equality_check.py +72 -0
  25. numdaplot/arrays/conversion/python_values.py +70 -0
  26. numdaplot/arrays/conversion/time_text.py +290 -0
  27. numdaplot/arrays/creation/__init__.py +5 -0
  28. numdaplot/arrays/creation/date_parts.py +89 -0
  29. numdaplot/arrays/creation/date_parts_values.py +437 -0
  30. numdaplot/arrays/creation/distribution.py +54 -0
  31. numdaplot/arrays/creation/filled_values.py +58 -0
  32. numdaplot/arrays/creation/list_conversion.py +311 -0
  33. numdaplot/arrays/creation/list_shape.py +97 -0
  34. numdaplot/arrays/creation/normal.py +65 -0
  35. numdaplot/arrays/creation/numpy_conversion.py +149 -0
  36. numdaplot/arrays/creation/random_integers.py +104 -0
  37. numdaplot/arrays/creation/random_values.py +97 -0
  38. numdaplot/arrays/creation/range_values.py +73 -0
  39. numdaplot/arrays/creation/spacing.py +84 -0
  40. numdaplot/arrays/creation/spacing_values.py +63 -0
  41. numdaplot/arrays/creation/uniform.py +63 -0
  42. numdaplot/arrays/equality.py +68 -0
  43. numdaplot/arrays/layout/__init__.py +5 -0
  44. numdaplot/arrays/layout/sorting_values.py +113 -0
  45. numdaplot/arrays/layout/unique_values.py +49 -0
  46. numdaplot/arrays/mapping/__init__.py +5 -0
  47. numdaplot/arrays/mapping/mapped_values.py +286 -0
  48. numdaplot/arrays/mapping/unmatched.py +50 -0
  49. numdaplot/arrays/mapping/value_change.py +55 -0
  50. numdaplot/arrays/mapping/value_mapping.py +161 -0
  51. numdaplot/arrays/math_functions/__init__.py +5 -0
  52. numdaplot/arrays/math_functions/absolute.py +27 -0
  53. numdaplot/arrays/math_functions/cosine.py +28 -0
  54. numdaplot/arrays/math_functions/exponential.py +27 -0
  55. numdaplot/arrays/math_functions/logarithm.py +72 -0
  56. numdaplot/arrays/math_functions/math_function.py +58 -0
  57. numdaplot/arrays/math_functions/round.py +58 -0
  58. numdaplot/arrays/math_functions/sine.py +28 -0
  59. numdaplot/arrays/math_functions/square_root.py +27 -0
  60. numdaplot/arrays/operations/__init__.py +5 -0
  61. numdaplot/arrays/operations/boolean_operands.py +48 -0
  62. numdaplot/arrays/operations/combination.py +157 -0
  63. numdaplot/arrays/operations/float_errors.py +170 -0
  64. numdaplot/arrays/operations/integer_bounds.py +175 -0
  65. numdaplot/arrays/operations/integer_rules.py +397 -0
  66. numdaplot/arrays/operations/operand.py +139 -0
  67. numdaplot/arrays/operations/time_arithmetic.py +479 -0
  68. numdaplot/arrays/operations/time_bounds.py +286 -0
  69. numdaplot/arrays/operations/time_result_bounds.py +397 -0
  70. numdaplot/arrays/operations/transformation.py +54 -0
  71. numdaplot/arrays/operations/type_requirements.py +94 -0
  72. numdaplot/arrays/replacement.py +66 -0
  73. numdaplot/arrays/selection/__init__.py +5 -0
  74. numdaplot/arrays/selection/comparison_masks.py +131 -0
  75. numdaplot/arrays/selection/membership_masks.py +118 -0
  76. numdaplot/arrays/selection/missing_mask.py +50 -0
  77. numdaplot/arrays/selection/region_index.py +178 -0
  78. numdaplot/arrays/selection/replaced_values.py +120 -0
  79. numdaplot/arrays/selection/rule_mask.py +83 -0
  80. numdaplot/arrays/selection/time_reference.py +172 -0
  81. numdaplot/arrays/shape.py +74 -0
  82. numdaplot/arrays/type_match.py +51 -0
  83. numdaplot/data_types/__init__.py +5 -0
  84. numdaplot/data_types/library.py +57 -0
  85. numdaplot/data_types/numpy_mapping.py +207 -0
  86. numdaplot/data_types/pandas_mapping.py +114 -0
  87. numdaplot/data_types/time_of_day.py +292 -0
  88. numdaplot/data_types/type.py +224 -0
  89. numdaplot/data_types/value_family.py +149 -0
  90. numdaplot/data_types/value_type.py +147 -0
  91. numdaplot/dates/__init__.py +5 -0
  92. numdaplot/dates/custom_date_format.py +83 -0
  93. numdaplot/dates/date_format.py +120 -0
  94. numdaplot/dates/date_part.py +59 -0
  95. numdaplot/dates/date_part_unit.py +153 -0
  96. numdaplot/dates/date_period.py +57 -0
  97. numdaplot/dates/duration_in.py +58 -0
  98. numdaplot/dates/duration_unit.py +90 -0
  99. numdaplot/dates/period_unit.py +101 -0
  100. numdaplot/dates/time_function.py +56 -0
  101. numdaplot/dates/time_zone.py +68 -0
  102. numdaplot/dates/time_zone_change.py +71 -0
  103. numdaplot/dates/time_zone_mode.py +81 -0
  104. numdaplot/dates/to_duration.py +58 -0
  105. numdaplot/errors/__init__.py +7 -0
  106. numdaplot/errors/broadcast_warning.py +36 -0
  107. numdaplot/errors/calculation_warning.py +35 -0
  108. numdaplot/errors/cell_out_of_range_error.py +77 -0
  109. numdaplot/errors/column_not_found_error.py +64 -0
  110. numdaplot/errors/conflicting_settings_error.py +60 -0
  111. numdaplot/errors/dimension_error.py +62 -0
  112. numdaplot/errors/display_warning.py +32 -0
  113. numdaplot/errors/duplicate_column_error.py +82 -0
  114. numdaplot/errors/duplicate_label_error.py +55 -0
  115. numdaplot/errors/duplicate_statistic_error.py +55 -0
  116. numdaplot/errors/duplicate_value_error.py +54 -0
  117. numdaplot/errors/empty_array_error.py +55 -0
  118. numdaplot/errors/empty_list_error.py +52 -0
  119. numdaplot/errors/empty_region_error.py +34 -0
  120. numdaplot/errors/empty_text_error.py +34 -0
  121. numdaplot/errors/empty_total_error.py +62 -0
  122. numdaplot/errors/empty_values_error.py +34 -0
  123. numdaplot/errors/file_access_error.py +70 -0
  124. numdaplot/errors/file_exists_error.py +62 -0
  125. numdaplot/errors/file_not_found_error.py +56 -0
  126. numdaplot/errors/incompatible_charts_error.py +80 -0
  127. numdaplot/errors/incompatible_types_error.py +104 -0
  128. numdaplot/errors/integer_overflow_error.py +61 -0
  129. numdaplot/errors/invalid_base_error.py +52 -0
  130. numdaplot/errors/invalid_bin_width_error.py +66 -0
  131. numdaplot/errors/invalid_bounds_error.py +58 -0
  132. numdaplot/errors/invalid_chart_data_error.py +81 -0
  133. numdaplot/errors/invalid_color_count_error.py +63 -0
  134. numdaplot/errors/invalid_color_error.py +51 -0
  135. numdaplot/errors/invalid_column_name_error.py +52 -0
  136. numdaplot/errors/invalid_conversion_error.py +119 -0
  137. numdaplot/errors/invalid_count_error.py +61 -0
  138. numdaplot/errors/invalid_date_format_error.py +51 -0
  139. numdaplot/errors/invalid_deviation_error.py +52 -0
  140. numdaplot/errors/invalid_fraction_error.py +51 -0
  141. numdaplot/errors/invalid_label_count_error.py +61 -0
  142. numdaplot/errors/invalid_limits_error.py +111 -0
  143. numdaplot/errors/invalid_opacity_error.py +52 -0
  144. numdaplot/errors/invalid_point_size_error.py +52 -0
  145. numdaplot/errors/invalid_position_error.py +106 -0
  146. numdaplot/errors/invalid_resolution_error.py +51 -0
  147. numdaplot/errors/invalid_rotation_error.py +53 -0
  148. numdaplot/errors/invalid_seed_error.py +53 -0
  149. numdaplot/errors/invalid_separator_error.py +52 -0
  150. numdaplot/errors/invalid_shape_error.py +52 -0
  151. numdaplot/errors/invalid_sheet_name_error.py +54 -0
  152. numdaplot/errors/invalid_size_error.py +58 -0
  153. numdaplot/errors/invalid_step_error.py +77 -0
  154. numdaplot/errors/invalid_suffixes_error.py +61 -0
  155. numdaplot/errors/invalid_time_zone_change_error.py +63 -0
  156. numdaplot/errors/invalid_type_error.py +79 -0
  157. numdaplot/errors/irregular_list_error.py +36 -0
  158. numdaplot/errors/join_relation_error.py +183 -0
  159. numdaplot/errors/missing_dependency_error.py +58 -0
  160. numdaplot/errors/missing_type_error.py +36 -0
  161. numdaplot/errors/missing_value_error.py +62 -0
  162. numdaplot/errors/not_single_value_error.py +53 -0
  163. numdaplot/errors/numdaplot_error.py +25 -0
  164. numdaplot/errors/numdaplot_warning.py +34 -0
  165. numdaplot/errors/occupied_cell_error.py +63 -0
  166. numdaplot/errors/out_of_domain_error.py +70 -0
  167. numdaplot/errors/readability_warning.py +35 -0
  168. numdaplot/errors/refused_operation_error.py +64 -0
  169. numdaplot/errors/refused_setting_error.py +60 -0
  170. numdaplot/errors/rejected_dates.py +60 -0
  171. numdaplot/errors/repeated_key.py +36 -0
  172. numdaplot/errors/shape_mismatch_error.py +67 -0
  173. numdaplot/errors/time_overflow_error.py +131 -0
  174. numdaplot/errors/time_zone_mismatch_error.py +83 -0
  175. numdaplot/errors/unknown_time_zone_error.py +51 -0
  176. numdaplot/errors/unmatched_value_error.py +81 -0
  177. numdaplot/errors/unsupported_image_format_error.py +56 -0
  178. numdaplot/errors/unsupported_index_error.py +38 -0
  179. numdaplot/errors/unsupported_missing_error.py +129 -0
  180. numdaplot/errors/unsupported_type_error.py +62 -0
  181. numdaplot/errors/value_conversion_error.py +215 -0
  182. numdaplot/ordering/__init__.py +5 -0
  183. numdaplot/ordering/missing_position.py +46 -0
  184. numdaplot/ordering/order.py +46 -0
  185. numdaplot/package_version.py +36 -0
  186. numdaplot/plots/__init__.py +5 -0
  187. numdaplot/plots/chart_layer.py +47 -0
  188. numdaplot/plots/charts/__init__.py +5 -0
  189. numdaplot/plots/charts/bar_chart.py +98 -0
  190. numdaplot/plots/charts/bar_layout.py +58 -0
  191. numdaplot/plots/charts/bin_count.py +61 -0
  192. numdaplot/plots/charts/bin_width.py +78 -0
  193. numdaplot/plots/charts/box_chart.py +97 -0
  194. numdaplot/plots/charts/cell_values.py +61 -0
  195. numdaplot/plots/charts/chart.py +59 -0
  196. numdaplot/plots/charts/chart_settings.py +105 -0
  197. numdaplot/plots/charts/color_scale.py +147 -0
  198. numdaplot/plots/charts/heatmap_chart.py +92 -0
  199. numdaplot/plots/charts/histogram_chart.py +93 -0
  200. numdaplot/plots/charts/line_chart.py +100 -0
  201. numdaplot/plots/charts/line_type.py +75 -0
  202. numdaplot/plots/charts/marker_shape.py +113 -0
  203. numdaplot/plots/charts/missing_chart.py +60 -0
  204. numdaplot/plots/charts/missing_map_chart.py +27 -0
  205. numdaplot/plots/charts/orientation.py +58 -0
  206. numdaplot/plots/charts/outliers.py +49 -0
  207. numdaplot/plots/charts/percentages.py +55 -0
  208. numdaplot/plots/charts/pie_chart.py +87 -0
  209. numdaplot/plots/charts/scatter_chart.py +159 -0
  210. numdaplot/plots/charts/value_axis.py +66 -0
  211. numdaplot/plots/data/__init__.py +5 -0
  212. numdaplot/plots/data/array_values.py +128 -0
  213. numdaplot/plots/data/chart_data.py +143 -0
  214. numdaplot/plots/data/chart_values.py +109 -0
  215. numdaplot/plots/data/column_reading.py +468 -0
  216. numdaplot/plots/data/heatmap_values.py +63 -0
  217. numdaplot/plots/data/missing_cells.py +165 -0
  218. numdaplot/plots/data/pie_values.py +215 -0
  219. numdaplot/plots/data/point_values.py +249 -0
  220. numdaplot/plots/data/position_kind.py +83 -0
  221. numdaplot/plots/data/renamed_layers.py +340 -0
  222. numdaplot/plots/data/sample_values.py +160 -0
  223. numdaplot/plots/data/shown_columns.py +248 -0
  224. numdaplot/plots/data/table_values.py +256 -0
  225. numdaplot/plots/data/unique_labels.py +45 -0
  226. numdaplot/plots/drawing/__init__.py +5 -0
  227. numdaplot/plots/drawing/bar_drawing.py +316 -0
  228. numdaplot/plots/drawing/box_drawing.py +344 -0
  229. numdaplot/plots/drawing/cell_merging.py +237 -0
  230. numdaplot/plots/drawing/chart_texts.py +124 -0
  231. numdaplot/plots/drawing/color_bar.py +57 -0
  232. numdaplot/plots/drawing/color_scale_values.py +120 -0
  233. numdaplot/plots/drawing/default_labels.py +41 -0
  234. numdaplot/plots/drawing/drawn_chart.py +50 -0
  235. numdaplot/plots/drawing/grid_axes.py +75 -0
  236. numdaplot/plots/drawing/heatmap_drawing.py +313 -0
  237. numdaplot/plots/drawing/histogram_drawing.py +350 -0
  238. numdaplot/plots/drawing/label_room.py +344 -0
  239. numdaplot/plots/drawing/label_thinning.py +216 -0
  240. numdaplot/plots/drawing/layer_alignment.py +319 -0
  241. numdaplot/plots/drawing/layer_colors.py +123 -0
  242. numdaplot/plots/drawing/line_drawing.py +85 -0
  243. numdaplot/plots/drawing/marker_codes.py +20 -0
  244. numdaplot/plots/drawing/missing_drawing.py +360 -0
  245. numdaplot/plots/drawing/moment_period_formatter.py +253 -0
  246. numdaplot/plots/drawing/pie_drawing.py +185 -0
  247. numdaplot/plots/drawing/plot_axes.py +38 -0
  248. numdaplot/plots/drawing/plot_drawing.py +288 -0
  249. numdaplot/plots/drawing/plot_theme.py +45 -0
  250. numdaplot/plots/drawing/position_axis.py +278 -0
  251. numdaplot/plots/drawing/scatter_drawing.py +364 -0
  252. numdaplot/plots/drawing/series_colors.py +177 -0
  253. numdaplot/plots/drawing/size_inches.py +45 -0
  254. numdaplot/plots/drawing/style_drawing.py +410 -0
  255. numdaplot/plots/drawing/text_contrast.py +44 -0
  256. numdaplot/plots/drawing/tick_rotation.py +354 -0
  257. numdaplot/plots/drawing/time_axis.py +212 -0
  258. numdaplot/plots/drawing/whole_numbers.py +72 -0
  259. numdaplot/plots/figure/__init__.py +5 -0
  260. numdaplot/plots/figure/cell.py +95 -0
  261. numdaplot/plots/figure/figure.py +256 -0
  262. numdaplot/plots/figure/figure_drawing.py +99 -0
  263. numdaplot/plots/figure/figure_style.py +60 -0
  264. numdaplot/plots/figure/layout.py +71 -0
  265. numdaplot/plots/figure/placement.py +150 -0
  266. numdaplot/plots/layer_reading.py +166 -0
  267. numdaplot/plots/output/__init__.py +5 -0
  268. numdaplot/plots/output/image_saving.py +187 -0
  269. numdaplot/plots/output/plot_display.py +181 -0
  270. numdaplot/plots/output/shown_object.py +45 -0
  271. numdaplot/plots/overlay_checks.py +245 -0
  272. numdaplot/plots/plot.py +31 -0
  273. numdaplot/plots/plot_data.py +140 -0
  274. numdaplot/plots/plot_distribution_creation.py +237 -0
  275. numdaplot/plots/plot_output.py +124 -0
  276. numdaplot/plots/plot_overlays.py +273 -0
  277. numdaplot/plots/plot_overview_creation.py +195 -0
  278. numdaplot/plots/plot_series_creation.py +213 -0
  279. numdaplot/plots/style/__init__.py +5 -0
  280. numdaplot/plots/style/axis_settings.py +60 -0
  281. numdaplot/plots/style/color.py +168 -0
  282. numdaplot/plots/style/custom_color.py +65 -0
  283. numdaplot/plots/style/grid_lines.py +49 -0
  284. numdaplot/plots/style/image_options.py +71 -0
  285. numdaplot/plots/style/legend_position.py +149 -0
  286. numdaplot/plots/style/plot_style.py +136 -0
  287. numdaplot/plots/style/size.py +70 -0
  288. numdaplot/plots/style/size_unit.py +62 -0
  289. numdaplot/positions/__init__.py +5 -0
  290. numdaplot/positions/axis.py +54 -0
  291. numdaplot/positions/index.py +51 -0
  292. numdaplot/positions/range.py +90 -0
  293. numdaplot/positions/region.py +92 -0
  294. numdaplot/py.typed +0 -0
  295. numdaplot/ratios/__init__.py +5 -0
  296. numdaplot/ratios/fraction.py +40 -0
  297. numdaplot/ratios/measure.py +48 -0
  298. numdaplot/rules/__init__.py +5 -0
  299. numdaplot/rules/between.py +78 -0
  300. numdaplot/rules/bounds.py +83 -0
  301. numdaplot/rules/case.py +48 -0
  302. numdaplot/rules/contains.py +63 -0
  303. numdaplot/rules/equal.py +43 -0
  304. numdaplot/rules/greater.py +39 -0
  305. numdaplot/rules/greater_or_equal.py +38 -0
  306. numdaplot/rules/is_in.py +67 -0
  307. numdaplot/rules/is_missing.py +25 -0
  308. numdaplot/rules/is_present.py +25 -0
  309. numdaplot/rules/less.py +39 -0
  310. numdaplot/rules/less_or_equal.py +38 -0
  311. numdaplot/rules/not_equal.py +45 -0
  312. numdaplot/rules/rule.py +62 -0
  313. numdaplot/rules/rule_values.py +44 -0
  314. numdaplot/rules/value_rule.py +110 -0
  315. numdaplot/settings/__init__.py +5 -0
  316. numdaplot/settings/argument_types.py +327 -0
  317. numdaplot/settings/field_types.py +593 -0
  318. numdaplot/statistics/__init__.py +5 -0
  319. numdaplot/statistics/count.py +71 -0
  320. numdaplot/statistics/count_distinct.py +27 -0
  321. numdaplot/statistics/counted_missing.py +46 -0
  322. numdaplot/statistics/maximum.py +27 -0
  323. numdaplot/statistics/mean.py +27 -0
  324. numdaplot/statistics/median.py +27 -0
  325. numdaplot/statistics/minimum.py +27 -0
  326. numdaplot/statistics/most_frequent.py +27 -0
  327. numdaplot/statistics/most_frequent_count.py +27 -0
  328. numdaplot/statistics/quantile.py +61 -0
  329. numdaplot/statistics/standard_deviation.py +29 -0
  330. numdaplot/statistics/statistic.py +63 -0
  331. numdaplot/statistics/sum.py +27 -0
  332. numdaplot/tables/__init__.py +5 -0
  333. numdaplot/tables/aggregation/__init__.py +5 -0
  334. numdaplot/tables/aggregation/aggregated_frame.py +189 -0
  335. numdaplot/tables/aggregation/aggregation.py +97 -0
  336. numdaplot/tables/aggregation/calculation.py +123 -0
  337. numdaplot/tables/aggregation/result_column.py +108 -0
  338. numdaplot/tables/aggregation/row_groups.py +96 -0
  339. numdaplot/tables/aggregation/statistic_name.py +122 -0
  340. numdaplot/tables/columns/__init__.py +5 -0
  341. numdaplot/tables/columns/added_column.py +89 -0
  342. numdaplot/tables/columns/boolean_conversion.py +144 -0
  343. numdaplot/tables/columns/boolean_rule.py +59 -0
  344. numdaplot/tables/columns/bracket_end.py +50 -0
  345. numdaplot/tables/columns/bracket_names.py +346 -0
  346. numdaplot/tables/columns/bracketed_column.py +179 -0
  347. numdaplot/tables/columns/brackets.py +234 -0
  348. numdaplot/tables/columns/chosen_columns.py +55 -0
  349. numdaplot/tables/columns/column_choice.py +84 -0
  350. numdaplot/tables/columns/column_mode.py +64 -0
  351. numdaplot/tables/columns/column_names.py +186 -0
  352. numdaplot/tables/columns/conversion.py +103 -0
  353. numdaplot/tables/columns/converted_column.py +669 -0
  354. numdaplot/tables/columns/date_conversion.py +526 -0
  355. numdaplot/tables/columns/date_range.py +135 -0
  356. numdaplot/tables/columns/name_change.py +67 -0
  357. numdaplot/tables/columns/new_column.py +79 -0
  358. numdaplot/tables/columns/number_conversion.py +281 -0
  359. numdaplot/tables/columns/renamed_columns.py +60 -0
  360. numdaplot/tables/columns/renaming.py +81 -0
  361. numdaplot/tables/columns/text_conversion.py +70 -0
  362. numdaplot/tables/columns/time_conversion.py +313 -0
  363. numdaplot/tables/columns/time_zone_conversion.py +128 -0
  364. numdaplot/tables/conflict.py +68 -0
  365. numdaplot/tables/description/__init__.py +5 -0
  366. numdaplot/tables/description/described_frame.py +335 -0
  367. numdaplot/tables/description/description.py +155 -0
  368. numdaplot/tables/duplicates/__init__.py +5 -0
  369. numdaplot/tables/duplicates/deduplicated_frame.py +66 -0
  370. numdaplot/tables/duplicates/deduplication.py +88 -0
  371. numdaplot/tables/duplicates/keep.py +81 -0
  372. numdaplot/tables/files/__init__.py +5 -0
  373. numdaplot/tables/files/column_names.py +60 -0
  374. numdaplot/tables/files/csv_file.py +265 -0
  375. numdaplot/tables/files/csv_read_options.py +89 -0
  376. numdaplot/tables/files/csv_separator.py +41 -0
  377. numdaplot/tables/files/csv_write_options.py +79 -0
  378. numdaplot/tables/files/decimal_count.py +42 -0
  379. numdaplot/tables/files/encoding.py +82 -0
  380. numdaplot/tables/files/excel_file.py +171 -0
  381. numdaplot/tables/files/excel_read_options.py +79 -0
  382. numdaplot/tables/files/excel_sheet.py +50 -0
  383. numdaplot/tables/files/excel_time_cells.py +146 -0
  384. numdaplot/tables/files/excel_write_options.py +63 -0
  385. numdaplot/tables/files/file_access.py +152 -0
  386. numdaplot/tables/files/file_paths.py +106 -0
  387. numdaplot/tables/files/json_decimals.py +387 -0
  388. numdaplot/tables/files/json_file.py +203 -0
  389. numdaplot/tables/files/json_layout.py +63 -0
  390. numdaplot/tables/files/json_read_options.py +64 -0
  391. numdaplot/tables/files/json_write_options.py +71 -0
  392. numdaplot/tables/files/missing_texts.py +63 -0
  393. numdaplot/tables/files/optional_package.py +42 -0
  394. numdaplot/tables/files/pandas_backend.py +11 -0
  395. numdaplot/tables/files/parquet_file.py +91 -0
  396. numdaplot/tables/files/parquet_read_options.py +56 -0
  397. numdaplot/tables/files/sas_file.py +94 -0
  398. numdaplot/tables/files/sas_read_options.py +67 -0
  399. numdaplot/tables/files/stata_file.py +83 -0
  400. numdaplot/tables/files/stata_read_options.py +56 -0
  401. numdaplot/tables/files/xpt_read_options.py +65 -0
  402. numdaplot/tables/filtering/__init__.py +5 -0
  403. numdaplot/tables/filtering/checked_frame.py +60 -0
  404. numdaplot/tables/filtering/column_mask.py +71 -0
  405. numdaplot/tables/filtering/column_match.py +62 -0
  406. numdaplot/tables/filtering/condition.py +94 -0
  407. numdaplot/tables/filtering/filter.py +74 -0
  408. numdaplot/tables/filtering/filter_mode.py +67 -0
  409. numdaplot/tables/filtering/row_mask.py +152 -0
  410. numdaplot/tables/filtering/rule_moments.py +164 -0
  411. numdaplot/tables/frames/__init__.py +5 -0
  412. numdaplot/tables/frames/array_frame.py +95 -0
  413. numdaplot/tables/frames/cleaned_names.py +132 -0
  414. numdaplot/tables/frames/column.py +15 -0
  415. numdaplot/tables/frames/column_values.py +273 -0
  416. numdaplot/tables/frames/frame_equality.py +130 -0
  417. numdaplot/tables/frames/frame_normalization.py +459 -0
  418. numdaplot/tables/frames/named_column_errors.py +85 -0
  419. numdaplot/tables/frames/pandas_decimals.py +113 -0
  420. numdaplot/tables/frames/region_positions.py +113 -0
  421. numdaplot/tables/frames/table_text.py +222 -0
  422. numdaplot/tables/frames/time_columns.py +345 -0
  423. numdaplot/tables/frames/time_range_errors.py +117 -0
  424. numdaplot/tables/frames/time_zones.py +271 -0
  425. numdaplot/tables/joining/__init__.py +5 -0
  426. numdaplot/tables/joining/join.py +110 -0
  427. numdaplot/tables/joining/join_keys.py +367 -0
  428. numdaplot/tables/joining/join_mode.py +93 -0
  429. numdaplot/tables/joining/join_relation.py +149 -0
  430. numdaplot/tables/joining/join_suffixes.py +71 -0
  431. numdaplot/tables/joining/joined_frame.py +166 -0
  432. numdaplot/tables/joining/joined_names.py +107 -0
  433. numdaplot/tables/joining/joined_rows.py +235 -0
  434. numdaplot/tables/joining/key_types.py +57 -0
  435. numdaplot/tables/joining/relation.py +78 -0
  436. numdaplot/tables/missing/__init__.py +5 -0
  437. numdaplot/tables/missing/missing_count.py +59 -0
  438. numdaplot/tables/missing/missing_counts.py +214 -0
  439. numdaplot/tables/missing/missing_drop.py +98 -0
  440. numdaplot/tables/missing/missing_mode.py +63 -0
  441. numdaplot/tables/missing/missing_ratio.py +71 -0
  442. numdaplot/tables/missing/missing_removal.py +257 -0
  443. numdaplot/tables/missing/missing_summary.py +174 -0
  444. numdaplot/tables/missing/ratio_comparison.py +70 -0
  445. numdaplot/tables/pivot/__init__.py +5 -0
  446. numdaplot/tables/pivot/pivot_table.py +104 -0
  447. numdaplot/tables/pivot/pivoted_frame.py +244 -0
  448. numdaplot/tables/preview/__init__.py +5 -0
  449. numdaplot/tables/preview/notebook_display.py +238 -0
  450. numdaplot/tables/preview/preview.py +100 -0
  451. numdaplot/tables/preview/preview_rows.py +55 -0
  452. numdaplot/tables/preview/shown_columns.py +62 -0
  453. numdaplot/tables/preview/side.py +82 -0
  454. numdaplot/tables/sorting/__init__.py +5 -0
  455. numdaplot/tables/sorting/sort_key.py +71 -0
  456. numdaplot/tables/sorting/sorted_frame.py +81 -0
  457. numdaplot/tables/sorting/sorting.py +82 -0
  458. numdaplot/tables/table.py +71 -0
  459. numdaplot/tables/table_calculation.py +172 -0
  460. numdaplot/tables/table_columns.py +214 -0
  461. numdaplot/tables/table_conversion.py +351 -0
  462. numdaplot/tables/table_data.py +321 -0
  463. numdaplot/tables/table_display.py +56 -0
  464. numdaplot/tables/table_joining.py +80 -0
  465. numdaplot/tables/table_layout.py +105 -0
  466. numdaplot/tables/table_missing.py +146 -0
  467. numdaplot/tables/table_reading.py +451 -0
  468. numdaplot/tables/table_refusals.py +295 -0
  469. numdaplot/tables/table_selection.py +163 -0
  470. numdaplot/tables/table_writing.py +269 -0
  471. numdaplot-0.1.0.dist-info/METADATA +176 -0
  472. numdaplot-0.1.0.dist-info/RECORD +474 -0
  473. numdaplot-0.1.0.dist-info/WHEEL +4 -0
  474. numdaplot-0.1.0.dist-info/licenses/LICENSE +28 -0
@@ -0,0 +1,295 @@
1
+ """
2
+ Python operations refused by a Table, each pointing to the numdaplot way of doing it.
3
+
4
+ .. versionadded:: 0.1.0
5
+ """
6
+
7
+ from collections.abc import Iterator
8
+ from typing import NoReturn
9
+
10
+ from numdaplot.errors.refused_operation_error import RefusedOperationError
11
+ from numdaplot.tables.table_data import TableData
12
+
13
+ COMPARISON_OPERATION = "Comparing a Table with {symbol}"
14
+ EQUALITY_ALTERNATIVE = "is_equal with ndp.Equality"
15
+ ORDER_ALTERNATIVE = "filter with a rule such as ndp.Greater"
16
+ BRACKETS_OPERATION = "Brackets on a Table"
17
+ BRACKETS_ALTERNATIVE = "column, take or filter"
18
+ ITERATION_OPERATION = "Iterating over a Table with for"
19
+ ITERATION_ALTERNATIVE = "for value in table.column(name).to_list()"
20
+ MEMBERSHIP_OPERATION = "Testing membership in a Table with in"
21
+ MEMBERSHIP_ALTERNATIVE = "filter with ndp.Equal or ndp.IsIn, or column_names"
22
+ LENGTH_OPERATION = "len of a Table"
23
+ LENGTH_ALTERNATIVE = "the row_count attribute"
24
+ TRUTH_OPERATION = "Testing a Table as a boolean"
25
+ TRUTH_ALTERNATIVE = "the row_count attribute, or is_equal"
26
+ EQUAL_SYMBOL = "=="
27
+ NOT_EQUAL_SYMBOL = "!="
28
+ LESS_SYMBOL = "<"
29
+ LESS_OR_EQUAL_SYMBOL = "<="
30
+ GREATER_SYMBOL = ">"
31
+ GREATER_OR_EQUAL_SYMBOL = ">="
32
+
33
+
34
+ class TableRefusals(TableData):
35
+ """
36
+ Python operations refused by a Table, each raising ``RefusedOperationError`` with the numdaplot way of doing it.
37
+
38
+ ``==``, ``!=``, ``<``, ``<=``, ``>``, ``>=``, brackets, ``for``, ``in``, ``len`` and ``bool`` are refused.
39
+
40
+ .. versionadded:: 0.1.0
41
+ """
42
+
43
+ def __eq__(self, other: object) -> NoReturn:
44
+ """
45
+ Refuse ``table == other``; use ``is_equal``.
46
+
47
+ .. versionadded:: 0.1.0
48
+
49
+ Parameters
50
+ ----------
51
+ other
52
+ Any value.
53
+
54
+ Raises
55
+ ------
56
+ RefusedOperationError
57
+ Always.
58
+ """
59
+ refuse_table_comparison(EQUAL_SYMBOL, EQUALITY_ALTERNATIVE)
60
+
61
+ def __ne__(self, other: object) -> NoReturn:
62
+ """
63
+ Refuse ``table != other``; use ``is_equal``.
64
+
65
+ .. versionadded:: 0.1.0
66
+
67
+ Parameters
68
+ ----------
69
+ other
70
+ Any value.
71
+
72
+ Raises
73
+ ------
74
+ RefusedOperationError
75
+ Always.
76
+ """
77
+ refuse_table_comparison(NOT_EQUAL_SYMBOL, EQUALITY_ALTERNATIVE)
78
+
79
+ def __lt__(self, other: object) -> NoReturn:
80
+ """
81
+ Refuse ``table < other``; use ``filter``.
82
+
83
+ .. versionadded:: 0.1.0
84
+
85
+ Parameters
86
+ ----------
87
+ other
88
+ Any value.
89
+
90
+ Raises
91
+ ------
92
+ RefusedOperationError
93
+ Always.
94
+
95
+ Examples
96
+ --------
97
+ >>> import numdaplot as ndp
98
+ >>> table = ndp.Table.from_arrays({"price": ndp.Array.from_list([1.5])})
99
+ >>> try:
100
+ ... table < 2
101
+ ... except ndp.RefusedOperationError as error:
102
+ ... print(error)
103
+ Comparing a Table with < is not available, use filter with a rule such as ndp.Greater instead.
104
+ """
105
+ refuse_table_comparison(LESS_SYMBOL, ORDER_ALTERNATIVE)
106
+
107
+ def __le__(self, other: object) -> NoReturn:
108
+ """
109
+ Refuse ``table <= other``; use ``filter``.
110
+
111
+ .. versionadded:: 0.1.0
112
+
113
+ Parameters
114
+ ----------
115
+ other
116
+ Any value.
117
+
118
+ Raises
119
+ ------
120
+ RefusedOperationError
121
+ Always.
122
+ """
123
+ refuse_table_comparison(LESS_OR_EQUAL_SYMBOL, ORDER_ALTERNATIVE)
124
+
125
+ def __gt__(self, other: object) -> NoReturn:
126
+ """
127
+ Refuse ``table > other``; use ``filter``.
128
+
129
+ .. versionadded:: 0.1.0
130
+
131
+ Parameters
132
+ ----------
133
+ other
134
+ Any value.
135
+
136
+ Raises
137
+ ------
138
+ RefusedOperationError
139
+ Always.
140
+ """
141
+ refuse_table_comparison(GREATER_SYMBOL, ORDER_ALTERNATIVE)
142
+
143
+ def __ge__(self, other: object) -> NoReturn:
144
+ """
145
+ Refuse ``table >= other``; use ``filter``.
146
+
147
+ .. versionadded:: 0.1.0
148
+
149
+ Parameters
150
+ ----------
151
+ other
152
+ Any value.
153
+
154
+ Raises
155
+ ------
156
+ RefusedOperationError
157
+ Always.
158
+ """
159
+ refuse_table_comparison(GREATER_OR_EQUAL_SYMBOL, ORDER_ALTERNATIVE)
160
+
161
+ def __getitem__(self, key: object) -> NoReturn:
162
+ """
163
+ Refuse ``table[...]``; use ``column``, ``take`` or ``filter``.
164
+
165
+ .. versionadded:: 0.1.0
166
+
167
+ Parameters
168
+ ----------
169
+ key
170
+ Any value.
171
+
172
+ Raises
173
+ ------
174
+ RefusedOperationError
175
+ Always.
176
+ """
177
+ raise RefusedOperationError(BRACKETS_OPERATION, BRACKETS_ALTERNATIVE)
178
+
179
+ def __setitem__(self, key: object, value: object) -> NoReturn:
180
+ """
181
+ Refuse ``table[...] = value``; use ``add_column``, which returns a new Table.
182
+
183
+ .. versionadded:: 0.1.0
184
+
185
+ Parameters
186
+ ----------
187
+ key
188
+ Any value.
189
+ value
190
+ Any value.
191
+
192
+ Raises
193
+ ------
194
+ RefusedOperationError
195
+ Always.
196
+ """
197
+ raise RefusedOperationError(BRACKETS_OPERATION, BRACKETS_ALTERNATIVE)
198
+
199
+ def __iter__(self) -> Iterator[object]:
200
+ """
201
+ Refuse ``for row in table``; iterate over the values of a column instead.
202
+
203
+ .. versionadded:: 0.1.0
204
+
205
+ Raises
206
+ ------
207
+ RefusedOperationError
208
+ Always.
209
+
210
+ Examples
211
+ --------
212
+ >>> import numdaplot as ndp
213
+ >>> table = ndp.Table.from_arrays({"city": ndp.Array.from_list(["Paris", "Lyon"])})
214
+ >>> for city in table.column("city").to_list():
215
+ ... print(city)
216
+ Paris
217
+ Lyon
218
+ """
219
+ raise RefusedOperationError(ITERATION_OPERATION, ITERATION_ALTERNATIVE)
220
+
221
+ def __contains__(self, value: object) -> NoReturn:
222
+ """
223
+ Refuse ``value in table``; use ``filter`` with ``ndp.Equal`` or ``ndp.IsIn``, or ``column_names``.
224
+
225
+ .. versionadded:: 0.1.0
226
+
227
+ Parameters
228
+ ----------
229
+ value
230
+ Any value.
231
+
232
+ Raises
233
+ ------
234
+ RefusedOperationError
235
+ Always.
236
+ """
237
+ raise RefusedOperationError(MEMBERSHIP_OPERATION, MEMBERSHIP_ALTERNATIVE)
238
+
239
+ def __len__(self) -> NoReturn:
240
+ """
241
+ Refuse ``len(table)``; read the ``row_count`` attribute instead.
242
+
243
+ .. versionadded:: 0.1.0
244
+
245
+ Raises
246
+ ------
247
+ RefusedOperationError
248
+ Always.
249
+ """
250
+ raise RefusedOperationError(LENGTH_OPERATION, LENGTH_ALTERNATIVE)
251
+
252
+ def __bool__(self) -> NoReturn:
253
+ """
254
+ Refuse ``if table:`` and ``bool(table)``, whose meaning would be unclear.
255
+
256
+ .. versionadded:: 0.1.0
257
+
258
+ Raises
259
+ ------
260
+ RefusedOperationError
261
+ Always.
262
+ """
263
+ raise RefusedOperationError(TRUTH_OPERATION, TRUTH_ALTERNATIVE)
264
+
265
+
266
+ def refuse_table_comparison(symbol: str, alternative: str) -> NoReturn:
267
+ """
268
+ Raise the error refusing a comparison operator on a Table.
269
+
270
+ .. versionadded:: 0.1.0
271
+
272
+ Parameters
273
+ ----------
274
+ symbol
275
+ The comparison operator, such as ``"<"``.
276
+ alternative
277
+ What to use instead.
278
+
279
+ Raises
280
+ ------
281
+ RefusedOperationError
282
+ Always.
283
+
284
+ Examples
285
+ --------
286
+ >>> import numdaplot as ndp
287
+ >>> from numdaplot.tables.table_refusals import refuse_table_comparison
288
+ >>> try:
289
+ ... refuse_table_comparison("==", "is_equal")
290
+ ... except ndp.RefusedOperationError as error:
291
+ ... print(error)
292
+ Comparing a Table with == is not available, use is_equal instead.
293
+ """
294
+ operation = COMPARISON_OPERATION.format(symbol=symbol)
295
+ raise RefusedOperationError(operation, alternative)
@@ -0,0 +1,163 @@
1
+ """
2
+ Selection of the rows and columns of a Table, by conditions and by position, and check of its values.
3
+
4
+ .. versionadded:: 0.1.0
5
+ """
6
+
7
+ from typing import Self
8
+
9
+ from numdaplot.positions.region import Region
10
+ from numdaplot.rules.rule import Rule
11
+ from numdaplot.settings.argument_types import checked_arguments
12
+ from numdaplot.tables.filtering.checked_frame import check_frame
13
+ from numdaplot.tables.filtering.filter import Filter
14
+ from numdaplot.tables.filtering.row_mask import build_filter_mask
15
+ from numdaplot.tables.frames.region_positions import take_region
16
+ from numdaplot.tables.table_data import TableData
17
+
18
+
19
+ class TableSelection(TableData):
20
+ """
21
+ Selection of rows with ``filter``, of a region with ``take``, and check of every value with ``check``.
22
+
23
+ .. versionadded:: 0.1.0
24
+ """
25
+
26
+ @checked_arguments
27
+ def check(self, rule: Rule) -> Self:
28
+ """
29
+ Return which values satisfy a rule, in every column.
30
+
31
+ To check some columns only, choose them first with ``choose_columns``.
32
+
33
+ .. versionadded:: 0.1.0
34
+
35
+ Parameters
36
+ ----------
37
+ rule
38
+ A ``Rule``, such as ``ndp.Greater(10)`` or ``ndp.IsIn(["Paris"])``: see ``Rule`` for every rule.
39
+ A missing value only satisfies ``IsMissing``.
40
+
41
+ Returns
42
+ -------
43
+ Self
44
+ A new Table with the same columns and rows, holding True where the value satisfies the rule.
45
+ Every column is of type ``BOOL``.
46
+
47
+ Raises
48
+ ------
49
+ InvalidTypeError
50
+ When an argument is not of the type its annotation names.
51
+ IncompatibleTypesError
52
+ When the rule does not apply to the type of one of the columns.
53
+
54
+ Examples
55
+ --------
56
+ >>> import numdaplot as ndp
57
+ >>> prices = ndp.Array.from_list([120.0, None, 150.0])
58
+ >>> stocks = ndp.Array.from_list([3.0, 5.0, None])
59
+ >>> table = ndp.Table.from_arrays({"price": prices, "stock": stocks})
60
+ >>> table.check(ndp.IsMissing())
61
+ price stock
62
+ BOOL BOOL
63
+ 0 False False
64
+ 1 True False
65
+ 2 False True
66
+ """
67
+ checked_frame = check_frame(self._frame, rule)
68
+ checked_table = self._wrap(checked_frame)
69
+
70
+ return checked_table
71
+
72
+ @checked_arguments
73
+ def filter(self, row_filter: Filter) -> Self:
74
+ """
75
+ Return the rows satisfying a filter.
76
+
77
+ .. versionadded:: 0.1.0
78
+
79
+ Parameters
80
+ ----------
81
+ row_filter
82
+ The conditions and how they combine. A missing value only satisfies ``IsMissing``.
83
+
84
+ Returns
85
+ -------
86
+ Self
87
+ A new Table with the kept rows, in their order, numbered from 0.
88
+
89
+ Raises
90
+ ------
91
+ InvalidTypeError
92
+ When an argument is not of the type its annotation names.
93
+ ColumnNotFoundError
94
+ When a condition names a column the Table does not have.
95
+ IncompatibleTypesError
96
+ When a rule does not apply to the type of one of its columns.
97
+
98
+ Examples
99
+ --------
100
+ >>> import numdaplot as ndp
101
+ >>> cities = ndp.Array.from_list(["Paris", "Lyon", "Pau"])
102
+ >>> prices = ndp.Array.from_list([120.0, 80.0, 150.0])
103
+ >>> table = ndp.Table.from_arrays({"city": cities, "price": prices})
104
+ >>> expensive = ndp.Condition(rule=ndp.Greater(100), columns=["price"])
105
+ >>> table.filter(ndp.Filter(conditions=[expensive]))
106
+ city price
107
+ TEXT FLOAT64
108
+ 0 Paris 120.0
109
+ 1 Pau 150.0
110
+ """
111
+ mask = build_filter_mask(self._frame, row_filter)
112
+ kept_frame = self._frame[mask]
113
+ numbered_frame = kept_frame.reset_index(drop=True)
114
+ filtered_table = self._wrap(numbered_frame)
115
+
116
+ return filtered_table
117
+
118
+ @checked_arguments
119
+ def take(self, region: Region) -> Self:
120
+ """
121
+ Return the rows and the columns of a region.
122
+
123
+ A row chosen with ``Index`` gives a Table of one row. Use ``to_value`` to read a single value.
124
+
125
+ .. versionadded:: 0.1.0
126
+
127
+ Parameters
128
+ ----------
129
+ region
130
+ The rows and the columns, every one of a dimension when omitted. Columns are positions or names;
131
+ negative positions count from the end.
132
+
133
+ Returns
134
+ -------
135
+ Self
136
+ A new Table, rows numbered from 0, columns in the order of the region.
137
+
138
+ Raises
139
+ ------
140
+ InvalidTypeError
141
+ When an argument is not of the type its annotation names.
142
+ InvalidPositionError
143
+ When a position is not a whole number inside its dimension.
144
+ ColumnNotFoundError
145
+ When a column name matches no column.
146
+ DuplicateColumnError
147
+ When a column name appears twice in the region.
148
+
149
+ Examples
150
+ --------
151
+ >>> import numdaplot as ndp
152
+ >>> prices = ndp.Array.from_list([120.0, 80.0, 150.0])
153
+ >>> table = ndp.Table.from_arrays({"price": prices})
154
+ >>> table.take(ndp.Region(rows=ndp.Range(start=1, stop=2), columns=["price"]))
155
+ price
156
+ FLOAT64
157
+ 0 80.0
158
+ 1 150.0
159
+ """
160
+ region_frame = take_region(self._frame, region)
161
+ region_table = self._wrap(region_frame)
162
+
163
+ return region_table