{ "info": { "author": "S Satapathy", "author_email": "shubhakant.satapathy@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# sheetcalc\nExtract insights from two dimentional tables. Load data into table one by one, or in bulk using import features.\nUse grouping features to aggregate by one or more columns similar to SQL.\n\n\n### Import Package\n\n```python\nfrom sheetcalc import Table\n```\n\n### Create Table Instance\n```python\ntbl = Table ('table-name', 'optional table description')\n```\n\n#### Create Columns\n```python\ntbl.add_column ()\ntbl.add_column ('Amt')\n```\nWhen no column name is supplied, a name will be autogenerated as 'Column_n' where 'n' is the Column number. Column names do not need to be pre-defined. Default names get generated dynamically when loading rows when a new column is detected.\n\n### Add Rows into Table\n\nAdd rows one at a time\n```python\ntbl.add_row (['John', 100, 'Business'])\ntbl.add_row (['Mary', 35, 'Personal'])\ntbl.add_row (['Rob' , 2, 'Business'])\ntbl.add_row (['John', 15, 'Personal'])\ntbl.add_row (['Mary', 10, 'Personal'])\ntbl.add_row (['Ken', 10])\ntbl.add_row (['Ken', 10, 'Personal'])\n```\nor add rows from comma delimitted file with a header row\n```python\ntbl.load_from_delimited_file ('/home/user/data.csv')\n```\n\nor from file delimitted by any char, e.g tab\n```python\ntbl.load_from_delimited_file ('/home/user/data.csv', '\\t')\n```\n\nor from a file without a header row\n```python\ntbl.load_from_delimited_file ('/home/user/data.csv', ',', False)\n```\n\n### Reordering Columns in the table\n\nReorder or remove columns in the table. The returned table contains the requested changes. Original Table remains untouched.\n```python\ntab = Table ('test')\ntab.add_column ('RollNo')\ntab.add_column ('Name')\ntab.add_row (['A100', 'Abagail'])\ntab.add_row (['A101', 'Boris'])\ntab.add_row (['A102', 'Betty'])\ntab.add_row (['A103', 'Charlie'])\nprint (1, tab.rows)\nprint (2, tab.shape_shift(['Name', 'RollNo']).rows)\nprint (3, tab.shape_shift(['RollNo']).rows)\n```\nOutput:\n```\n1 [['A100', 'Abagail'], ['A101', 'Boris'], ['A102', 'Betty'], ['A103', 'Charlie']]\n2 [['Abagail', 'A100'], ['Boris', 'A101'], ['Betty', 'A102'], ['Charlie', 'A103']]\n3 [['A100'], ['A101'], ['A102'], ['A103']]\n```\n\n### Filtering Data\n\nFilter data by values in one column using logical operations\n```python\ntab = Table ('test')\ntab.add_column ('RollNo')\ntab.add_column ('Name')\ntab.add_row (['A100', 'Abagail'])\ntab.add_row (['A101', 'Boris'])\ntab.add_row (['A102', 'Betty'])\ntab.add_row (['A103', 'Charlie'])\nprint (1, tab.filter_equals ('RollNo', 'A101').rows)\nprint (2, tab.filter_not_equals ('RollNo', 'A101').rows)\nprint (3, tab.filter_starts_with ('Name', 'B').rows)\nprint (4, tab.filter_ends_with ('Name', 'e').rows)\nprint (5, tab.filter_greater_than ('RollNo', 'A102').rows)\nprint (6, tab.filter_greater_than_or_equals ('RollNo', 'A102').rows)\nprint (7, tab.filter_less_than ('RollNo', 'A102').rows)\nprint (8, tab.filter_less_than_or_equals ('RollNo', 'A102').rows)\nprint (9, tab.filter_in ('RollNo', ['A102','A101']).rows)\nprint (10, tab.filter_not_in ('RollNo', ['A102','A101']).rows)\n```\nOutput:\n```\n1 [['A101', 'Boris']]\n2 [['A100', 'Abagail'], ['A102', 'Betty'], ['A103', 'Charlie']]\n3 [['A101', 'Boris'], ['A102', 'Betty']]\n4 [['A103', 'Charlie']]\n5 [['A103', 'Charlie']]\n6 [['A102', 'Betty'], ['A103', 'Charlie']]\n7 [['A100', 'Abagail'], ['A101', 'Boris']]\n8 [['A100', 'Abagail'], ['A101', 'Boris'], ['A102', 'Betty']]\n9 [['A101', 'Boris'], ['A102', 'Betty']]\n10 [['A100', 'Abagail'], ['A103', 'Charlie']]\n```\n\n\n### Grouping Data and Aggregating Results\n\nGroup values by one or more columns\n```python\nkeymap, valuemap, skipped = tbl.group_by (\n\t'Column_1, Column_3',\n\t'Sum (Amt), min(Amt), count (Amt)'\n)\n```\nReturn values:\n- **keymap** Hashmap from system Generated hashkey to Grouping Values\n- **valuemap** Hashmap from system Generated hashkey to Aggretate results\n- **skipped** - Rows not included in the groping operation. This includes failed rows.\n\nYou can correlate the values between the two returned Hashmaps 'keymap' and 'valuemap' using their hashkeys. The hashkeys are simply comma separated values of data in Grouping Columns. Therefore, in case of Single Column Grouping (and other situations when a comma separated list is sufficient) you can safely discard the returned 'keymap' and use only 'valuemap'.\n\n\n**Supported Aggregation Functions**\n- count\n- min\n- max\n- sum\n\n### Print Results and Statistics\n\nRaw Print including Data\n```python\nprint (values)\nor\nprint (json.dumps (valuemap, default=lambda o: o.__dict__, sort_keys=True, indent=4))\n```\n\nPrint Processing Runtimes and other Statistics\n```python\nprint (tbl.stats)\nor\nprint (json.dumps (tbl.stats, default=lambda o: o.__dict__, sort_keys=True, indent=4))\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/satapathy/pypi-sheetcalc", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "sheetcalc", "package_url": "https://pypi.org/project/sheetcalc/", "platform": "", "project_url": "https://pypi.org/project/sheetcalc/", "project_urls": { "Homepage": "https://github.com/satapathy/pypi-sheetcalc" }, "release_url": "https://pypi.org/project/sheetcalc/0.1.8/", "requires_dist": null, "requires_python": "", "summary": "extract insights from 2d tables", "version": "0.1.8" }, "last_serial": 5878405, "releases": { "0.1.5": [ { "comment_text": "", "digests": { "md5": "1870e6d58e06b31a421af11f4be81783", "sha256": "e0deb173e77e37f82ba0d2043c48342689bd59130afd584bb32a1d7e908d95b6" }, "downloads": -1, "filename": "sheetcalc-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "1870e6d58e06b31a421af11f4be81783", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4854, "upload_time": "2019-07-27T07:02:38", "url": "https://files.pythonhosted.org/packages/c0/ba/b60feff14dbb574fdfd05a86fe57183cc06e1e5df89eaa68e13f1a7c3c21/sheetcalc-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c46b3e76c268683d1a9c16d306578dcf", "sha256": "085b42dc4b87e4c26c2a04787ae265dee2132d3fe2ffcd210cbd98c44f6ad826" }, "downloads": -1, "filename": "sheetcalc-0.1.5.tar.gz", "has_sig": false, "md5_digest": "c46b3e76c268683d1a9c16d306578dcf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3734, "upload_time": "2019-07-27T07:02:40", "url": "https://files.pythonhosted.org/packages/91/f7/30bf06d3e3b235ebd1a3631fc5899893827ce53b958e956bf857fe56add5/sheetcalc-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "05bf9a84258ac0c8cfef0dca3d3a6b87", "sha256": "eafd79b864dd02d1a07b3b536a9e38ea01288906bf81441ab88f1b30b00d44fd" }, "downloads": -1, "filename": "sheetcalc-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "05bf9a84258ac0c8cfef0dca3d3a6b87", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6307, "upload_time": "2019-08-27T11:53:37", "url": "https://files.pythonhosted.org/packages/3e/d8/72b7ae38daaf6a97100d2b094325bb166139558dbc6350ed971c1a23e347/sheetcalc-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f7103ad06e423afef5c95e1c339f9ff3", "sha256": "8e47ebafd301e090702b81e78501afadeb2d6d7cb4bea22c09bb15b79e9a6a57" }, "downloads": -1, "filename": "sheetcalc-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f7103ad06e423afef5c95e1c339f9ff3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5207, "upload_time": "2019-08-27T11:53:39", "url": "https://files.pythonhosted.org/packages/ee/6e/57785aaedab7054aa64dbb008d678c79e43de1c959e108adeece65f876fb/sheetcalc-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "c9ebd7e73c6d63ef3b9036e74d31520e", "sha256": "ef8ec7e18eb50c503e4c0df259f43f247d1f5570dc2ab5d3e55a2df6b7260146" }, "downloads": -1, "filename": "sheetcalc-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "c9ebd7e73c6d63ef3b9036e74d31520e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6913, "upload_time": "2019-09-05T08:07:28", "url": "https://files.pythonhosted.org/packages/33/78/342aca8ced5dd7bfe438840478a339233e8d8d303e67c4aabdbc9ea92fbf/sheetcalc-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4a73c95915924beb9d2fac0290afa67e", "sha256": "82c403232cb3512823e2ab2718515f79b3429107a60add1e209e84215d94cd6c" }, "downloads": -1, "filename": "sheetcalc-0.1.7.tar.gz", "has_sig": false, "md5_digest": "4a73c95915924beb9d2fac0290afa67e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5970, "upload_time": "2019-09-05T08:07:30", "url": "https://files.pythonhosted.org/packages/11/39/8e73d0bbd778d2f4c9a82043d54e88b18a70f918e01b6028693a5a315c1c/sheetcalc-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "1307f5cf0de6c1ba439ecdfc70ae3f4e", "sha256": "ceaa00072fa6645203e75c9607cb42fee81d9cf004bbdfba72d9e594e456c8cf" }, "downloads": -1, "filename": "sheetcalc-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "1307f5cf0de6c1ba439ecdfc70ae3f4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6983, "upload_time": "2019-09-24T08:49:05", "url": "https://files.pythonhosted.org/packages/48/be/04e03be02006ca7fec139664a3b508a98023e93e74d2ea0484ca254c2317/sheetcalc-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c79c0ec80a32595c08ca3d213b524d5b", "sha256": "c11e564457b8ac9999366330208177a513fe606762417d3f6ebe8764ea143a52" }, "downloads": -1, "filename": "sheetcalc-0.1.8.tar.gz", "has_sig": false, "md5_digest": "c79c0ec80a32595c08ca3d213b524d5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6035, "upload_time": "2019-09-24T08:49:06", "url": "https://files.pythonhosted.org/packages/e9/5b/da64c42abc5b234613372c856a5ae8cf7bab9185a0e203096ae26fba3e74/sheetcalc-0.1.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1307f5cf0de6c1ba439ecdfc70ae3f4e", "sha256": "ceaa00072fa6645203e75c9607cb42fee81d9cf004bbdfba72d9e594e456c8cf" }, "downloads": -1, "filename": "sheetcalc-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "1307f5cf0de6c1ba439ecdfc70ae3f4e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6983, "upload_time": "2019-09-24T08:49:05", "url": "https://files.pythonhosted.org/packages/48/be/04e03be02006ca7fec139664a3b508a98023e93e74d2ea0484ca254c2317/sheetcalc-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c79c0ec80a32595c08ca3d213b524d5b", "sha256": "c11e564457b8ac9999366330208177a513fe606762417d3f6ebe8764ea143a52" }, "downloads": -1, "filename": "sheetcalc-0.1.8.tar.gz", "has_sig": false, "md5_digest": "c79c0ec80a32595c08ca3d213b524d5b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6035, "upload_time": "2019-09-24T08:49:06", "url": "https://files.pythonhosted.org/packages/e9/5b/da64c42abc5b234613372c856a5ae8cf7bab9185a0e203096ae26fba3e74/sheetcalc-0.1.8.tar.gz" } ] }