pandatools 2.0.2__tar.gz
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.
- pandatools-2.0.2/PKG-INFO +118 -0
- pandatools-2.0.2/README.md +98 -0
- pandatools-2.0.2/pandatools/__init__.py +11 -0
- pandatools-2.0.2/pandatools/accessor.py +1513 -0
- pandatools-2.0.2/pandatools.egg-info/PKG-INFO +118 -0
- pandatools-2.0.2/pandatools.egg-info/SOURCES.txt +9 -0
- pandatools-2.0.2/pandatools.egg-info/dependency_links.txt +1 -0
- pandatools-2.0.2/pandatools.egg-info/requires.txt +6 -0
- pandatools-2.0.2/pandatools.egg-info/top_level.txt +1 -0
- pandatools-2.0.2/setup.cfg +4 -0
- pandatools-2.0.2/setup.py +41 -0
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pandatools
|
|
3
|
+
Version: 2.0.2
|
|
4
|
+
Summary: SƠN AI DataFrame Cleaner
|
|
5
|
+
Author: Sơn Lê
|
|
6
|
+
Requires-Python: >=3.8
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
Requires-Dist: pandas>=2.0
|
|
9
|
+
Requires-Dist: numpy
|
|
10
|
+
Provides-Extra: ai
|
|
11
|
+
Requires-Dist: openai; extra == "ai"
|
|
12
|
+
Requires-Dist: google-generativeai; extra == "ai"
|
|
13
|
+
Dynamic: author
|
|
14
|
+
Dynamic: description
|
|
15
|
+
Dynamic: description-content-type
|
|
16
|
+
Dynamic: provides-extra
|
|
17
|
+
Dynamic: requires-dist
|
|
18
|
+
Dynamic: requires-python
|
|
19
|
+
Dynamic: summary
|
|
20
|
+
|
|
21
|
+
# 🐼 Pandatools: Smart Data Cleaning Accessor
|
|
22
|
+
|
|
23
|
+
**Pandatools** là một phần mở rộng (accessor) cho Pandas DataFrame, giúp tự động hóa quá trình phân tích chất lượng dữ liệu và thực hiện các bước làm sạch (cleaning) phổ biến chỉ với một dòng mã.
|
|
24
|
+
|
|
25
|
+
## 🚀 Tính năng chính
|
|
26
|
+
|
|
27
|
+
- **`.clean.intoo()`**: Hiển thị bảng phân tích dữ liệu cực đẹp trên Terminal với các gợi ý xử lý và mã code thực thi đi kèm.
|
|
28
|
+
- **`.clean.fix_dtypes()`**: Tự động nhận diện và chuyển đổi kiểu dữ liệu (vd: chuỗi số -> số, chuỗi ngày tháng -> datetime, danh mục lặp lại -> category).
|
|
29
|
+
- **`.clean.fill_missing()`**: Điền giá trị thiếu thông minh dựa trên kiểu dữ liệu của từng cột.
|
|
30
|
+
- **`.clean.strip_strings()`**: Loại bỏ khoảng trắng thừa ở đầu/cuối của tất cả các cột văn bản.
|
|
31
|
+
- **Hỗ trợ AI**: Xuất báo cáo dưới dạng JSON để tích hợp vào các pipeline tự động hóa hoặc huấn luyện AI.
|
|
32
|
+
|
|
33
|
+
## 📦 Cài đặt
|
|
34
|
+
|
|
35
|
+
Cực kỳ đơn giản, không yêu cầu cấu hình máy phức tạp:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
pip install git+https://github.com/sonbuwin-beep/pandatools.git
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## 🛠 Cách sử dụng
|
|
42
|
+
```python
|
|
43
|
+
import pandas as pd
|
|
44
|
+
import pandatools # Đăng ký accessor .clean
|
|
45
|
+
|
|
46
|
+
df = pd.read_csv("data.csv")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 🛠 Các hàm chi tiết
|
|
52
|
+
|
|
53
|
+
### 1. Phân tích dữ liệu với `.intoo()`
|
|
54
|
+
Đây là tính năng mạnh mẽ nhất. Nó sẽ quét toàn bộ DataFrame và chỉ ra các vấn đề như: Missing values, Outliers, Sai kiểu dữ liệu, Duplicate IDs...
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
# Hiển thị bảng màu trên Terminal
|
|
58
|
+
df.clean.intoo()
|
|
59
|
+
|
|
60
|
+
# Trả về JSON để dùng cho các ứng dụng khác
|
|
61
|
+
report_json = df.clean.intoo(as_json=True)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. Tự động sửa kiểu dữ liệu với `.fix_dtypes()`
|
|
65
|
+
Hàm này giúp bạn tiết kiệm thời gian ép kiểu thủ công:
|
|
66
|
+
- Chuyển `object` sang `numeric` nếu hơn 90% dữ liệu là số.
|
|
67
|
+
- Chuyển `object` sang `datetime` nếu định dạng ngày tháng hợp lệ.
|
|
68
|
+
- Chuyển `float` sang `Int64` nếu thực chất là số nguyên nhưng có chứa NaN.
|
|
69
|
+
- Chuyển sang `bool` cho các cột chỉ chứa 0 và 1.
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
df = df.clean.fix_dtypes()
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### 3. Làm sạch chuỗi với `.strip_strings()`
|
|
76
|
+
Xóa các khoảng trắng vô hình gây lỗi khi so sánh dữ liệu.
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
df = df.clean.strip_strings(lowercase=True) # Strip và chuyển về chữ thường
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 4. Xử lý giá trị thiếu với `.fill_missing()`
|
|
83
|
+
Tự động áp dụng chiến lược phù hợp:
|
|
84
|
+
- Cột số: Fill bằng `median` hoặc `mean`.
|
|
85
|
+
- Cột Datetime: Fill bằng `ffill` (forward fill).
|
|
86
|
+
- Cột Phân loại (Category/Object): Fill bằng nhãn `"Unknown"`.
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
df = df.clean.fill_missing(numeric_strategy="median")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 5. Loại bỏ trùng lặp với `.drop_dupes()`
|
|
93
|
+
Thông báo chính xác số lượng hàng bị xóa.
|
|
94
|
+
|
|
95
|
+
```python
|
|
96
|
+
df = df.clean.drop_dupes(subset=['id'])
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 💡 Ví dụ thực tế (Pipeline)
|
|
102
|
+
|
|
103
|
+
Bạn có thể kết chuỗi các lệnh để làm sạch dữ liệu cực nhanh:
|
|
104
|
+
|
|
105
|
+
```python
|
|
106
|
+
df_clean = (df.clean
|
|
107
|
+
.drop_dupes()
|
|
108
|
+
.strip_strings()
|
|
109
|
+
.fix_dtypes()
|
|
110
|
+
.fill_missing()
|
|
111
|
+
)
|
|
112
|
+
|
|
113
|
+
df_clean.clean.intoo() # Kiểm tra lại kết quả
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 📝 Lưu ý
|
|
117
|
+
- Thư viện yêu cầu `pandas` và `numpy`.
|
|
118
|
+
- Các cảnh báo về định dạng ngày tháng cũ đã được tối ưu hóa để chạy mượt mà trên các phiên bản Pandas mới nhất (2.0+).
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# 🐼 Pandatools: Smart Data Cleaning Accessor
|
|
2
|
+
|
|
3
|
+
**Pandatools** là một phần mở rộng (accessor) cho Pandas DataFrame, giúp tự động hóa quá trình phân tích chất lượng dữ liệu và thực hiện các bước làm sạch (cleaning) phổ biến chỉ với một dòng mã.
|
|
4
|
+
|
|
5
|
+
## 🚀 Tính năng chính
|
|
6
|
+
|
|
7
|
+
- **`.clean.intoo()`**: Hiển thị bảng phân tích dữ liệu cực đẹp trên Terminal với các gợi ý xử lý và mã code thực thi đi kèm.
|
|
8
|
+
- **`.clean.fix_dtypes()`**: Tự động nhận diện và chuyển đổi kiểu dữ liệu (vd: chuỗi số -> số, chuỗi ngày tháng -> datetime, danh mục lặp lại -> category).
|
|
9
|
+
- **`.clean.fill_missing()`**: Điền giá trị thiếu thông minh dựa trên kiểu dữ liệu của từng cột.
|
|
10
|
+
- **`.clean.strip_strings()`**: Loại bỏ khoảng trắng thừa ở đầu/cuối của tất cả các cột văn bản.
|
|
11
|
+
- **Hỗ trợ AI**: Xuất báo cáo dưới dạng JSON để tích hợp vào các pipeline tự động hóa hoặc huấn luyện AI.
|
|
12
|
+
|
|
13
|
+
## 📦 Cài đặt
|
|
14
|
+
|
|
15
|
+
Cực kỳ đơn giản, không yêu cầu cấu hình máy phức tạp:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pip install git+https://github.com/sonbuwin-beep/pandatools.git
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## 🛠 Cách sử dụng
|
|
22
|
+
```python
|
|
23
|
+
import pandas as pd
|
|
24
|
+
import pandatools # Đăng ký accessor .clean
|
|
25
|
+
|
|
26
|
+
df = pd.read_csv("data.csv")
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 🛠 Các hàm chi tiết
|
|
32
|
+
|
|
33
|
+
### 1. Phân tích dữ liệu với `.intoo()`
|
|
34
|
+
Đây là tính năng mạnh mẽ nhất. Nó sẽ quét toàn bộ DataFrame và chỉ ra các vấn đề như: Missing values, Outliers, Sai kiểu dữ liệu, Duplicate IDs...
|
|
35
|
+
|
|
36
|
+
```python
|
|
37
|
+
# Hiển thị bảng màu trên Terminal
|
|
38
|
+
df.clean.intoo()
|
|
39
|
+
|
|
40
|
+
# Trả về JSON để dùng cho các ứng dụng khác
|
|
41
|
+
report_json = df.clean.intoo(as_json=True)
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### 2. Tự động sửa kiểu dữ liệu với `.fix_dtypes()`
|
|
45
|
+
Hàm này giúp bạn tiết kiệm thời gian ép kiểu thủ công:
|
|
46
|
+
- Chuyển `object` sang `numeric` nếu hơn 90% dữ liệu là số.
|
|
47
|
+
- Chuyển `object` sang `datetime` nếu định dạng ngày tháng hợp lệ.
|
|
48
|
+
- Chuyển `float` sang `Int64` nếu thực chất là số nguyên nhưng có chứa NaN.
|
|
49
|
+
- Chuyển sang `bool` cho các cột chỉ chứa 0 và 1.
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
df = df.clean.fix_dtypes()
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. Làm sạch chuỗi với `.strip_strings()`
|
|
56
|
+
Xóa các khoảng trắng vô hình gây lỗi khi so sánh dữ liệu.
|
|
57
|
+
|
|
58
|
+
```python
|
|
59
|
+
df = df.clean.strip_strings(lowercase=True) # Strip và chuyển về chữ thường
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### 4. Xử lý giá trị thiếu với `.fill_missing()`
|
|
63
|
+
Tự động áp dụng chiến lược phù hợp:
|
|
64
|
+
- Cột số: Fill bằng `median` hoặc `mean`.
|
|
65
|
+
- Cột Datetime: Fill bằng `ffill` (forward fill).
|
|
66
|
+
- Cột Phân loại (Category/Object): Fill bằng nhãn `"Unknown"`.
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
df = df.clean.fill_missing(numeric_strategy="median")
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 5. Loại bỏ trùng lặp với `.drop_dupes()`
|
|
73
|
+
Thông báo chính xác số lượng hàng bị xóa.
|
|
74
|
+
|
|
75
|
+
```python
|
|
76
|
+
df = df.clean.drop_dupes(subset=['id'])
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 💡 Ví dụ thực tế (Pipeline)
|
|
82
|
+
|
|
83
|
+
Bạn có thể kết chuỗi các lệnh để làm sạch dữ liệu cực nhanh:
|
|
84
|
+
|
|
85
|
+
```python
|
|
86
|
+
df_clean = (df.clean
|
|
87
|
+
.drop_dupes()
|
|
88
|
+
.strip_strings()
|
|
89
|
+
.fix_dtypes()
|
|
90
|
+
.fill_missing()
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
df_clean.clean.intoo() # Kiểm tra lại kết quả
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## 📝 Lưu ý
|
|
97
|
+
- Thư viện yêu cầu `pandas` và `numpy`.
|
|
98
|
+
- Các cảnh báo về định dạng ngày tháng cũ đã được tối ưu hóa để chạy mượt mà trên các phiên bản Pandas mới nhất (2.0+).
|