Repository navigation
Releases: Ariel4545/data_science_ui
Release list
V0.33 - PandasGUI, Modern UI, persistent settings, async speed 🚄
🐼 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
StateManagerto 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_asyncwrapper. - 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.).
- Split UI setup into modular methods (
- Dependencies:
- Added
threadingfor async tasks. - Added
jsonfor state persistence.
- Added
V0.32 - robust architecture, consistent theming, widget tracking 🌟
🔢 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-elifblocks 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_arrayengine 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-exceptblocks. 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 shapenow 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 implementsscipy.stats.modewith 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.
- "Copy Array": Copies the formatted Numpy string (e.g.,
V0.31 - machine learning, statistics & smart cleaning 🤖.
🐼 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
sklearnorscipylibraries, disabling these advanced features instead of crashing.
🧹 2. Advanced Data Cleaning
- 🤖 Smart Fill NA: You can now type
mean,median, ormodeto 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 🪞
🐼 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
Treeviewwith 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 ⚙️
🐼 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 💻
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
StateManagerClass: Implemented to handle saving and loading settings vianumpygui_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
CTkTabviewon 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).
- Compact Mode: Width
- 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 ( |
Custom Base: Added input to calculate |
| 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()togrid()to support the split-pane design. - Input Frame: Grouped the two main input textboxes into a transparent
input_framefor better alignment. - Widget Upgrade: Replaced standard
tkinter.Textwithcustomtkinter.CTkTextbox.- Note: Explicitly enabled
undo=Trueon the underlying widget to maintain previous functionality.
- Note: Explicitly enabled
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_widgetscreate_data_widgetscreate_calculus_widgets- (and others...)
- Centralized Config: A
self.tabsdictionary now defines the structure of both the Tabs and the Menus, ensuring they stay in sync.
Logic & Stability
- Input Safety: Added
try-exceptblocks inturn_into_arrayand all inline operation methods.- Fix: Prevents the app from crashing if the user enters non-numeric text.
- Theme Logic: Refactored
themes()intoset_theme()andtoggle_theme().- Improvement: Relies more on
customtkinter's native theming rather than manually configuring widget colors line-by-line.
- Improvement: Relies more on
- Random Generator Fix: Updated
generate_op_numto correctly format list data as a space-separated string before inserting it into the text box (' '.join(map(str, ...))).
Imports
- Added
jsonandosto 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 ✨
Patch Notes: EgonDV Refactoring & QOL Update
🚀 Major Updates
1. Architecture Refactoring (OOP)
- New Base Class (
BasePlotMaker):- Introduced
BasePlotMakerinheriting fromcustomtkinter.CTk. - Centralized window initialization logic (title, geometry, resize behavior).
- Centralized protocol handling (
WM_DELETE_WINDOW) and window tracking (opened_programslist). - Added
finalize_setup()method to handle common finalization tasks like centering the window (place_w_middle) and initializing "Fun Numbers".
- Introduced
- Inheritance Update:
- All specific graph maker classes (
GraphMaker,BarMaker,BoxPlot, etc.) now inherit fromBasePlotMakerinstead of directly fromcustomtkinter.CTk. - Removed redundant
__init__boilerplate code across all classes.
- All specific graph maker classes (
2. User Interface Redesign (Tabs)
- Tabbed Navigation:
- Replaced monolithic grid layouts with
customtkinter.CTkTabviewfor most tools. - Controls are now organized into logical categories (e.g., Data, Style, Options, Legend) to reduce window clutter and improve usability.
- Replaced monolithic grid layouts with
- Layout Improvements:
- Standardized grid layouts within tabs using
sticky='ew'for better responsiveness.
- Standardized grid layouts within tabs using
3. Enhanced Data Import
- Advanced CSV Upload:
- Replaced the generic
upload()function with a robustask_for_file()andask_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.
- Replaced the generic
🛠 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_middlecall moved toBasePlotMaker.finalize_setup(). - Global Variables: Reduced reliance on global variable checks inside individual classes.
v0.26 - Data visualization Settings
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
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
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