Skip to content

Releases: Ariel4545/data_science_ui

V0.33 - PandasGUI, Modern UI, persistent settings, async speed 🚄

Choose a tag to compare

@Ariel4545 Ariel4545 released this 13 Jan 15:42
6d779ce

🐼 PandasGUI Update Notes

🚀 Key Highlights

  • Persistent State: Your settings (theme, layout, window size) are now saved automatically.
  • New Layouts: Switch between Tabs, Phone, and Menu Only modes.
  • Performance: Heavy operations now run in the background, keeping the UI responsive.
  • Feature Parity: All original features have been kept and improved.

📊 Feature Comparison

Feature Category Old Version (V0.31) New Version (V0.33) Status
Layout Fixed Button Grid or Menu Bar Tabs, Phone, or Menu Only ✨ Enhanced
State None (Resets on restart) Persistent (Saves Theme, Size, Mode) ✨ New
Performance UI Freezes during tasks Asynchronous (Background threads) ⚡ Improved
Deletion Column only Column & Row (by Index) ✨ Enhanced
Renaming Basic Input Dedicated Dialog 🎨 Improved
Compatibility Wrapper methods (compute_sum) Wrapper methods preserved 🛡️ Safe

✨ New Features

💾 State Management

  • Introduced StateManager to handle application state.
  • Preferences are stored in pandagui_state.json.
  • Saved Settings:
    • Theme (Dark/Light)
    • Window Geometry
    • View Mode
    • Font Size

📱 View Modes

  • Tabs Mode: The new default. Organizes tools into categories:
    • File, Edit, Stats, Cleaning, Plotting, ML
  • Phone Mode: A compact, scrollable grid designed for touch or small screens.
  • Menu Only: Maximizes screen real estate for data viewing.

⚡ Asynchronous Processing

  • Implemented run_async wrapper.
  • Operations like Loading, Saving, and Statistics no longer freeze the application.

🎨 UI/UX Improvements

  • Tabbed Interface: Clean separation of concerns.
  • Dynamic Data View: The data table resizes and repositions based on the selected layout.
  • Scrollable Phone Layout: Better handling of many buttons on small screens.
  • Enhanced Dialogs:
    • Improved "Open File" dialog with better UI, and with an optional embedded solution.
    • Improved Settings window with segmented buttons.
    • Improved "Drop Data" dialog supporting both Column and Row deletion.
    • Improved "Rename Column" dialog.

🛠 Technical Changes

  • Refactoring:
    • Split UI setup into modular methods (setup_tabs, setup_phone_layout, etc.).
  • Dependencies:
    • Added threading for async tasks.
    • Added json for state persistence.

V0.32 - robust architecture, consistent theming, widget tracking 🌟

Choose a tag to compare

@Ariel4545 Ariel4545 released this 12 Jan 15:31
7290b6e

🔢 NumpyGui Update Patch Notes


🔖 Version Comparison

Feature 🏛️ Previous Version 🚀 Updated Version
Architecture Long if-elif chains Dictionary Dispatching (Clean & Fast)
Theme Engine Static / Buggy Dynamic Tracking (Glitch-free switching)
Input Engine 1D Lists (Flattened) 2D Matrices (Multi-line Detection)
UI Theme Mixed (Native + Custom) Fully Consistent (CTkToplevel)
Feedback Console Prints In-App Status Bar (Color-coded)
Stability Prone to crashes Global Error Handling

✨ Detailed Changes

🛠️ 1. Core Architecture & Optimization

  • Dictionary Dispatching: Replaced repetitive if-elif blocks with dictionary mappings for Arithmetic, Trigonometry, Statistics, and UI generation. This significantly reduces code complexity and improves performance.
  • Dynamic Widget Tracking: Implemented a robust system to track UI elements. Widgets are registered in optimized batches, ensuring that theme changes (Light/Dark) apply instantly and correctly to every button and label, fixing previous visual glitches.
  • Smart Input Parsing: The turn_into_array engine was rewritten. It now detects newlines to construct 2D Numpy Arrays, enabling true matrix operations instead of flattening everything into a list.
  • Safety Pipeline: All mathematical operations are now wrapped in try-except blocks. Invalid inputs trigger a UI warning instead of crashing the application.

🎨 2. User Interface (UI/UX)

  • Enhanced Night Mode: Fixed issues where tab labels and button edges would remain in the wrong color state. The new theme engine recursively updates all nested widgets.
  • Consistent Theming: All popup windows—Results, Size Filter, Parity Filter, Search—now use CTkToplevel. They automatically inherit the user's Dark/Light theme preference.
  • Visual Clarity: Added "Array A" and "Array B" labels to the input fields, eliminating confusion during binary operations.
  • Status Bar: A new status label at the bottom of the screen provides immediate feedback (e.g., "Calculated Sin" or "Invalid Input").

🚀 3. Functional Enhancements

  • Matrix Support: Full support for 2D array inputs. Operations like Get shape now return (rows, columns) correctly.
  • Fixed "Mode" Statistic: The previous version incorrectly used numpy.mod (remainder) for the "Mode" button, causing crashes. The update now safely implements scipy.stats.mode with a fallback check.
  • Dual Clipboard Export:
    • "Copy Array": Copies the formatted Numpy string (e.g., [1 2 3]).
    • "Copy Numbers": Restored the ability to copy raw, space-separated numbers (e.g., 1 2 3), optimized for pasting into Excel.

V0.31 - machine learning, statistics & smart cleaning 🤖.

Choose a tag to compare

@Ariel4545 Ariel4545 released this 10 Jan 19:48
c0e8bed

🐼 PandasGui Update Patch Notes (v0.31)


🔖 Version Comparison

Feature 🏛️ Previous Version 🚀 Updated Version
Capabilities Viewer & Basic Cleaner Lightweight Data Science Workbench
Machine Learning None Linear Regression, Scaling, One-Hot Encoding
Statistics Basic Aggregations Hypothesis Testing (T-Test, Chi-Squared)
Dependencies Standard Optional (Graceful Fallback)

✨ Key Changes

🧠 1. Machine Learning & Statistics (New)

  • 📈 Linear Regression: Perform simple regression between two columns. Outputs coefficients, intercept, and R² score. Handles missing data automatically.
  • 🧪 Hypothesis Testing:
    • T-Test: Compare means of two numeric columns.
    • Chi-Squared: Analyze association between categorical variables.
  • ⚙️ Optional Dependencies: The app now gracefully handles missing sklearn or scipy libraries, disabling these advanced features instead of crashing.

🧹 2. Advanced Data Cleaning

  • 🤖 Smart Fill NA: You can now type mean, median, or mode to automatically fill missing values with the respective statistic.
  • 🔢 One-Hot Encoding: Convert categorical variables into binary columns. Includes a safety warning for high-cardinality columns (>20 unique values).
  • 📏 Data Scaling: Standardize numeric columns using StandardScaler.

🛠️ 3. Architecture & Stability

  • 🛡️ Robust Regression: Linear regression now automatically aligns X and Y data and drops missing values to prevent errors.
  • 🚦 Performance Safety: Added checks to prevent accidental high-cardinality one-hot encoding which could freeze the UI.

🐛 Bug Fixes

  • Stability: Fixed potential crashes when running regression on dirty datasets.

V0.30 - Plotting, Settings, Stability 🪞

Choose a tag to compare

@Ariel4545 Ariel4545 released this 09 Jan 20:57
367d71f

🐼 PandasGui Update Patch Notes


🔖 Version Comparison

Feature 🏛️ Previous Version 🚀 Updated Version
UI Framework Basic customtkinter Enhanced Single Window with Settings
Navigation Fixed Button Grid Switchable Layouts (Menu Bar vs Button Grid)
Data Safety No History Undo / Redo Support
Visualization None Integrated Plotting (Matplotlib)

✨ Key Changes

🎨 1. User Interface & Customization

  • 🗂️ Switchable Layouts: Users can now choose between the classic Button Grid or a compact Menu Bar via the Settings menu.
  • 🌗 Theme Control: Built-in toggle for Dark and Light modes.
  • 📜 Enhanced Data View: The data table now uses a Treeview with vertical scrolling for better navigation.

🛠️ 2. Architecture & Stability

  • 🛡️ Unified Operation Pipeline: A new internal engine handles all data modifications, ensuring the UI updates automatically and errors are caught gracefully.
  • ↩️ History System: Added Undo (Ctrl+Z) and Redo (Ctrl+Y) functionality for all data modifications.
  • 🔢 Numeric Safety: Arithmetic operations automatically target numeric columns, preventing errors on text data.

🚀 3. Functional Enhancements

⚡ Transformations (Mutate Data)

These operations modify your dataset in real-time (and can be undone):

  • Math: Abs, Pow, Cumsum.
  • Cleaning: Clean Empty, Clean Duplicates, Drop (Columns), Replace, Rename.

📝 Summaries (View Only)

Safe, read-only insights into your data (displayed in popups):

  • Stats: Sum, Mean, Median, Min, Max, Mode, Nunique, Count.
  • Info: DataFrame info and description.

📊 Visualization

New plotting capabilities powered by Matplotlib:

  • Charts: Histogram, Scatter, Line, Bar, Box Plot.
  • Interactive: Prompts user for X/Y columns where applicable.

🐛 Bug Fixes & Polish

  • Stability: Fixed crashes when attempting operations without loading a file.
  • Feedback: Improved error messages and operation confirmation.
  • UI: Replaced the text-based data display with a structured table for better readability.

V0.29 - PandasGUI, Architecture & Functional Enhancements ⚙️

Choose a tag to compare

@Ariel4545 Ariel4545 released this 07 Jan 15:15
8ec3814

🐼 PandasGui Update Patch Notes


🔖 Version Comparison

Feature 🏛️ Previous Version (V0.25) 🚀 Updated Version (v0.29)
UI Framework Basic customtkinter (Single Window) Enhanced Single Window (Refined Layout)
Data View Basic Treeview Optimized Treeview with Dark/Light Theme Support
Performance Lags with large files Lazy Loading (Preview first 1k rows)
Safety Prone to crashes on bad data Unified Error Handling & Type Safety

✨ Key Changes

🎨 1. User Interface Refinements

The application retains its familiar layout but with significant under-the-hood improvements.

  • 🗂️ Layout: The core button grid layout remains, ensuring familiarity for existing users.
  • 🌗 Adaptive Theming: The data table (Treeview) now adapts to Dark and Light modes, ensuring text is always readable.
  • 🚦 Status Feedback: Operations now provide clearer feedback via popups.

🛠️ 2. Architecture & Stability

  • 🛡️ Unified Operation Pipeline: A new internal engine (_apply_op) handles all data modifications. This means:
    • No more crashes if you click a button without loading a file.
    • Automatic UI updates after every change.
    • Graceful error messages instead of console tracebacks.
  • 🔢 Numeric Safety: Arithmetic operations (Sum, Mean, Pow) now automatically filter for numeric columns only, preventing errors when trying to calculate the "mean" of text columns.

🚀 3. Functional Enhancements

⚡ Transformations (Mutate Data)

These operations now modify your dataset in real-time:

  • Abs: Converts numbers to absolute values.
  • Cumsum: Calculates cumulative sums.
  • Pow: Raises numbers to a power (includes a smart dialog for exponents).
  • Cleaning: Instant removal of empty rows or duplicates.
  • Mode & Nunique: Now update the dataframe directly (broadcasted values) instead of just showing a popup.

📝 Summaries (View Only)

Safe, read-only insights into your data:

  • Stats: Sum, Min, Max, Mean, Median.
  • Info: formatted output in a scrollable window.

🐛 Bug Fixes & Polish

  • Scrollbars: Added horizontal and vertical scrolling to the data view.
  • Type Inference: The "Replace" tool now smartly detects if you are typing a number or text.
  • Memory: Large files no longer freeze the UI upon loading.

V0.28 - NumpyGUI, modern & dual-pane 💻

Choose a tag to compare

@Ariel4545 Ariel4545 released this 06 Jan 14:02
2164738

Patch Notes: NumpyGui Update

🌟 Top-Level Summary

This update transforms NumpyGui from a menu-driven, single-window application into a modern, dual-pane interface with persistent state management. It introduces a tabbed operations panel, inline controls for complex functions, and significantly refactors the codebase for maintainability and stability.


🚀 New Features

💾 Persistent State Management

  • New StateManager Class: Implemented to handle saving and loading settings via numpygui_state.json.
  • Persisted Settings:
    • Theme: Remembers "Light" vs "Dark" mode preference across restarts.
    • View Configuration: Remembers the visibility state of the Operations Tabs and Menu Bar.

🗂️ Tabbed Operations Interface

  • Side Panel: Added a CTkTabview on the right side of the window, organizing operations into 10 distinct categories (Arithmetic, Rounding, Trig, Stats, etc.).
  • Dynamic Resizing:
    • Compact Mode: Width 725px (Tabs hidden).
    • Expanded Mode: Width 1050px (Tabs visible).
  • View Control: Added a View menu to toggle the Side Tabs and Top Menus independently.

🧮 Calculator Grid (Arithmetic Tab)

  • Visual Update: Replaced the list of text-based arithmetic commands with a Calculator-style Grid.
  • Symbols: Uses mathematical symbols (+, -, ×, ÷, x², √, |x|) for faster recognition.

🛠️ Functional Overhaul: Inline Controls

Many operations that previously required popup windows (CTkToplevel) or lacked parameter inputs have been upgraded to use Inline Controls directly within the tabs.

Feature Old Behavior New Behavior
Data Filtering Opened a popup window for "Size" and "Parity". Inline: CTkEntry for threshold, CTkSegmentedButton for >/< and Even/Odd.
Search Opened a popup window. Inline: CTkEntry to input search value + "Find" button.
Linspace Called linspace(array) (often incorrect usage). Inline Generator: Inputs for Start, Stop, and Count.
Random Int Used array data as bounds. Inline Generator: Inputs for Min, Max, and Count.
Rounding Always rounded to integer. Precision Control: Added input for Decimal Places.
Log/Power Standard bases only ($e, 10, 2$). Custom Base: Added input to calculate $log_b(x)$ or $b^x$.
Constants Menu items inserted values. Dropdown: CTkOptionMenu to select constant + "Insert" button.
Num Systems Separate menu items. Selector: CTkSegmentedButton (Bin/Oct/Hex) + Convert button.

🎨 UI/UX Improvements

Layout & Styling

  • Grid System: Migrated main layout from pack() to grid() to support the split-pane design.
  • Input Frame: Grouped the two main input textboxes into a transparent input_frame for better alignment.
  • Widget Upgrade: Replaced standard tkinter.Text with customtkinter.CTkTextbox.
    • Note: Explicitly enabled undo=True on the underlying widget to maintain previous functionality.

Grouping

  • Trigonometry: Functions are now visually grouped: Standard, Conversion, Hyperbolic, Inverse Hyperbolic.
  • Statistics: Grouped into Central Tendency, Extremes, and Dispersion.

💻 Code Refactoring & Quality

Architecture

  • Modular Construction: The __init__ method was monolithic. It has been refactored into specific helper methods for each tab:
    • create_arithmetic_widgets
    • create_data_widgets
    • create_calculus_widgets
    • (and others...)
  • Centralized Config: A self.tabs dictionary now defines the structure of both the Tabs and the Menus, ensuring they stay in sync.

Logic & Stability

  • Input Safety: Added try-except blocks in turn_into_array and all inline operation methods.
    • Fix: Prevents the app from crashing if the user enters non-numeric text.
  • Theme Logic: Refactored themes() into set_theme() and toggle_theme().
    • Improvement: Relies more on customtkinter's native theming rather than manually configuring widget colors line-by-line.
  • Random Generator Fix: Updated generate_op_num to correctly format list data as a space-separated string before inserting it into the text box (' '.join(map(str, ...))).

Imports

  • Added json and os to support the new StateManager.

🐛 Bug Fixes

  • Result Window Centering: Improved the math used to center the result popup window on the screen.
  • Copy Error Handling: Added safety checks when copying results to the clipboard to prevent errors if the result format is unexpected.

V0.27 - EgonDV, Refactor & QOL ✨

Choose a tag to compare

@Ariel4545 Ariel4545 released this 05 Jan 15:13
f350a12

Patch Notes: EgonDV Refactoring & QOL Update

🚀 Major Updates

1. Architecture Refactoring (OOP)

  • New Base Class (BasePlotMaker):
    • Introduced BasePlotMaker inheriting from customtkinter.CTk.
    • Centralized window initialization logic (title, geometry, resize behavior).
    • Centralized protocol handling (WM_DELETE_WINDOW) and window tracking (opened_programs list).
    • Added finalize_setup() method to handle common finalization tasks like centering the window (place_w_middle) and initializing "Fun Numbers".
  • Inheritance Update:
    • All specific graph maker classes (GraphMaker, BarMaker, BoxPlot, etc.) now inherit from BasePlotMaker instead of directly from customtkinter.CTk.
    • Removed redundant __init__ boilerplate code across all classes.

2. User Interface Redesign (Tabs)

  • Tabbed Navigation:
    • Replaced monolithic grid layouts with customtkinter.CTkTabview for most tools.
    • Controls are now organized into logical categories (e.g., Data, Style, Options, Legend) to reduce window clutter and improve usability.
  • Layout Improvements:
    • Standardized grid layouts within tabs using sticky='ew' for better responsiveness.

3. Enhanced Data Import

  • Advanced CSV Upload:
    • Replaced the generic upload() function with a robust ask_for_file() and ask_for_columns() workflow.
    • Column Selector: When uploading a CSV, a new popup window allows users to select specific columns to map to input fields, rather than dumping the entire file content into a single entry.

🛠 Detailed Class Changes

BoxPlot

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: Data entries and upload button.
    • Style: Patch artist, Notch, Line width/style.
    • Names: Titles and Axis names.

ErrorBarMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: X/Y values and upload.
    • Error Values: Xerr/Yerr entries.
    • Options: Upper/Lower limits checkboxes.

ContourfMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: X/Y values and upload.
    • Z Values: Z entry fields.

ImShowMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Image: Upload button.
    • Style: Title, Transparency, Colormap, Interpolation.

ScatterPlotMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: X/Y values and upload.
    • Style: Colors, Sizes, Transparency, Colormap.

StemMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: X/Y values and upload.
    • Style: Bottom value, Line format, Marker format.

PieMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: Values, Names, Upload.
    • Style: Shadows, Start angle, Explode values.
    • Legend: Legend toggle and title.

BarMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: Names, Y values, Upload.
    • Style: Bar width, Direction (Horizontal/Vertical).
    • Legend: Legend toggle and title.

GraphMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Implemented Tabs:
    • Data: X/Y values and upload.
    • Style: Marker, Line style, Dot/Line sizes.
    • Titles & Grid: Main/X/Y titles, Grid modes.
    • Advanced: Infinite line settings.

HistogramMaker

  • Inheritance: Updated to BasePlotMaker.
  • UI: Retained original grid layout (No Tabs implemented).

🐛 Code Cleanup & Fixes

  • Fun Numbers: Logic moved from __init__ to dedicated _setup_fun_numbers() methods in subclasses.
  • Window Centering: place_w_middle call moved to BasePlotMaker.finalize_setup().
  • Global Variables: Reduced reliance on global variable checks inside individual classes.

v0.26 - Data visualization Settings

Choose a tag to compare

@Ariel4545 Ariel4545 released this 10 Feb 17:04
2e83121

Added:

added a settings tab for all of the settings
added function that makes windows open in the middle of the screen
added button that opens a random window when is pressed
added many settings:
font sizes - normal, big, large
transparency of the window(s)
topmost for the main window
open windows in the middle of the screen
make the windows resizable or not
fun numbers settings - random numbers (and sometimes characters) for every "data visualization" main input entries

Improved:

window sizes are determined by the widget and not by a pre-defined value
when you close the main window all the additional windows will be closed as well
every window has gone through (small) improvement in the placement of the widgets
combo boxes are now read-only so you can't accidentally write in them
every combo box have a default value

Fixes:

deleted some combo boxes values had values that weren't working
fixed some values errors

Code quality:

optimized imports
made many repetitive functions into a single one:
get transparency
get legend
change marker
change line
made many repetitive values into global variables:
main title font
subtitle font
bold title font

v0.25 - NumpyGui QOL

Choose a tag to compare

@Ariel4545 Ariel4545 released this 30 Dec 13:25
58fc0bb

added

added undo to the text boxes
added copy of numerical values only
added "Egon" at the beginning of the title
made a (label widget) title to the result window
added "topmost" options to the result window
added an icon for the program

improved:

reduced initial numbers length from 10k to 1k
made that if the initial numbers list length is even half will go to the second text box
made that the result window will always show in the middle of the main window
made that any result will need to exist to not open the result window with nothing
improved copy result conditions
made the result window size fit more with the title bar/widgets

fixed:

fixed program window opening in dark mode while all the widgets opening in light mode
fixed the bug that made the result window background color overshadow the text color
fixed all obnoxious value error with a.all()

v0.24 PandasGui

Choose a tag to compare

@Ariel4545 Ariel4545 released this 04 Feb 08:54
02dda66

changed the UI to be menu based instead of buttons
added option to change between light and dark mode
made app resizable
made that you can switch to the old UI via options
improved buttons UI
added key shortcuts
added an option to open a file via internet link
added a function that renames columns
added a warning about leaving unsaved progress when quitting the program
added "Nunique" function
added "Cumsum" function