Hướng dẫn dùng df.notnull python

Trong data, không ít dữ liệu không có giá trị gọi là dữ liệu trống hay null và được thể hiện là NaN trong bảng Data Frame. Những dữ liệu này ta có nhiều cách xử lý nó, có thể là xóa, điền vào bằng một dữ liệu khác có giá trị gần giống hoặc tương đương.

Nào! giờ chúng ta bắt đầu nhé, nhớ là import thư viện trước khi sử dụng pandas

import numpy as np
import pandas as pd

Tạo một data frame để xử lý

df = pd.DataFrame[{'A':[1,2,np.nan],
                  'B':[5,np.nan,np.nan],
                  'C':[1,2,3]}]

Output:

Trong data frame trên ta thấy có 3 dữ liệu bị thiếu nằm trong các cột A, B và dòng 1 và 2

Ta dùng phương thức dropna[] để xóa, mặc định axis = 0 là xóa dòng

df.dropna[]
print[df]

Output:

Thêm tham số axis = 1 để xóa cột

df.dropna[axis=1]
print[df]

Để điền vào dữ liệu NaN ta dùng phương thức fillna[]

df.fillna[value='FILL VALUE']
print[df]

Output:

ta có thể điền giá trị trung bình [mean] hoặc giá trị max, min

# ta lấy giá trị trung bình của cột A điền vào dữ liệu bị trống trong cột A
df['A'].fillna[value=df['A'].mean[]]

Output:

Kiểm tra dữ liệu bị thiếu

để xem dữ liệu bị thiếu ta dùng phương thức isna[] hoặc isnull[]

df.isna[]
# hoặc 
df.isnull[]

Output:

lấy thông tin số cột bị null

# Ta thêm hàm sum[] để tổng lại số cột bị null trong data frame
df.isnull[].sum[]

Output:

Nhìn vào kết quả trên ta thấy cột A có 1 giá trị NaN, B có 2 và C không có giá trị Null

Ta có thể tính % giá trị bị null trong cột để xem xét dữ liệu có nên bị xóa hay thay thế nó, nếu dữ liệu bị null nhỏ hơn 10% trong bảng dữ liệu của chúng ta, ta có thể xóa nó, nếu lớn hơn 10%, ta dùng phương pháp thay thế dữ liệu thiếu. Tùy theo dố liệu mà ta có thể linh hoạt giá trị % cao thấp để xử lý.

Nếu bắt đầu làm quen với Python, việc đầu tiên bạn cần làm là tìm hiểu về thư viện Pandas. Pandas là một thư viện giúp bạn làm việc với dữ liệu rất thuận tiện và hiệu quả, nhiều công việc xử lý dữ liệu bạn sẽ mất công viết ra rất nhiều code trong các công cụ khác, nhưng với Pandas, bạn chỉ cần viết 1 dòng code.

Dưới đây mình tổng hợp các dòng code thường được sử dụng. Các bạn hãy lưu lại để dùng khi cần thiết nhé.

Các dòng code thường dùng mình sẽ chia thành 6 nhóm:

  • Cách đọc dữ liệu trong Pandas Python
  • Cách xuất dữ liệu từ Pandas DataFrame
  • Cách tạo ra dữ liệu test
  • Cách xem và kiểm tra dữ liệu
  • Cách làm sạch dữ liệu trong Pandas DataFrame
  • Cách lọc, sắp xếp, nhóm dữ liệu trong Pandas DataFrame
  • Trích xuất một phần dữ liệu trong Pandas DataFrame
  • Nối dữ liệu, gộp dữ liệu bằng Pandas DataFrame
  • Thống kê dữ liệu bằng Pandas DataFrame

1. Cách đọc dữ liệu trong Pandas Python

Cách đọc dữ liệu từ một file Excel: pd.read_excel[filename]
Cách đọc dữ liệu từ một file CSV: pd.read_csv[filename]
Cách đọc dữ liệu từ một file TSV: pd.read_tsv[filename]
Cách đọc dữ liệu từ nguồn JSON [file, string hoặc URL]: pd.read_json[json_string]
Cách đọc dữ liệu từ nguồn HTML [file, string hoặc URL]: pd.read_html[url]
Cách đọc dữ liệu từ một cơ sở dữ liệu SQL: pd.read_sql[query, connection_object]
Cách đọc dữ liệu từ Clipboard: pd.read_clipboard[]
Cách đọc dữ liệu từ kiểu từ điển trong Python: pd.DataFrame[dict]

2. Cách xuất dữ liệu từ Pandas DataFrame

Cách xuất dữ liệu từ DataFrame ra file Excel: df.to_excel[filename]
Cách xuất dữ liệu từ DataFrame ra JSON: df.to_json[filename]
Cách xuất dữ liệu từ DataFrame ra file CSV: df.to_csv[filename]
Cách xuất dữ liệu từ DataFrame ra SQL: df.to_sql[filename]

3. Cách tạo ra dữ liệu test

Cách tạo bảng dữ liệu test với Numpy và Pandas: pd.DataFrame[np.random.rand[15,5]] => Đoạn code này sẽ tạo ra một bảng gồm 15 dòng và 5 cột, được điền vào những giá trị ngẫu nhiên từ Numpy
Cách tạo ra series từ một list: pd.Series[my_list]
Cách thêm index là cột ngày tháng: df.index = pd.date_range[‘1995/3/26’,periods=df.shape[0]]

4. Cách xem và kiểm tra dữ liệu

Cách lấy số dòng số cột của DataFrame: df.shape
Cách xem n dòng đầu tiên của DataFrame: df.head[n]
Cách xem n dòng cuối cùng của DataFrame: df.tail[n]
Xem giá trị duy nhất và đếm số giá trị này, đếm cả trường hợp NA: s.value_counts[dropna=False] [Lưu ý: Áp dụng cho đối tượng Series]
Tổng kết giá trị duy nhất và đếm cho tất cả các cột: df.apply[pd.Series.value_counts]
Xem thông tin về Index, kiểu dữ liệu và dung lượng của DataFrame: df.info[]
Tổng kết thông tin thống kê cho các cột có kiểu dữ liệu là số: df.describe[]

5. Cách làm sạch dữ liệu trong Pandas DataFrame

Đổi tên các cột trong DataFrame theo thứ tự: df.columns = [‘a’,’b’,’c’]
Kiểm tra dữ liệu với giá trị null: pd.isnull[]
Kiểm tra dữ liệu với giá trị khác null: pd.notnull[]
Cách bỏ toàn bộ dòng có dữ liệu null: df.dropna[]
Cách bỏ toàn bộ cột có dữ liệu null: df.dropna[axis=1]
Cách bỏ các dòng có nhiều hơn n giá trị null: df.dropna[axis=1, thresh=n]
Cách thay toàn bộ giá trị null bằng giá trị x: df.fillna[x]
Cách thay toàn bộ giá trị null bằng giá trị khác: s.fillna[s.mean[]]
Cách chuyển đổi kiểu dữ liệu của Series sang Float: s.astype[float]
Cách thay giá trị này bởi giá trị khác: s.replace[1,’one’]
Cách thay nhiều giá trị cùng lúc: s.replace[[1,3],[‘one’,’three’]]
Cách đổi tên cột hàng loạt bằng lambda: df.rename[columns=lambda x: x + 1]
Cách đổi tên cột cụ thể trong DataFrame: df.rename[columns={‘old_name’: ‘new_ name’}]
Cách đổi index trong DataFrame: df.set_index[‘column_one’]
Cách đổi index hàng loạt trong DataFrame: df.rename[index=lambda x: x + 1]

6. Cách lọc, sắp xếp, nhóm dữ liệu trong Pandas DataFrame

Lọc dữ liệu theo điều kiện

Lọc ra các dòng thỏa mãn điều kiện

df[ df[col] > 100 & df[col] < 200 ]
2 lớn hơn
df[ df[col] > 100 & df[col] < 200 ]
3

df[ df[col] > 5 ]

Lọc ra các dòng thỏa mãn điều kiện: có giá trị cột

df[ df[col] > 100 & df[col] < 200 ]
2 trong khoảng
df[ df[col] > 100 & df[col] < 200 ]
5 đến
df[ df[col] > 100 & df[col] < 200 ]
6

df[ df[col] > 100 & df[col] < 200 ]


Sắp xếp dữ liệu

Sắp xếp dữ liệu trong cột

df[ df[col] > 100 & df[col] < 200 ]
7 theo chiều thuận [ascending]

df.sort_values[col1]

Sắp xếp dữ liệu trong cột

df[ df[col] > 100 & df[col] < 200 ]
8 theo chiều nghịch [descending]

df.sort_values[col2, ascending=False]

Sắp xếp

df[ df[col] > 100 & df[col] < 200 ]
7 theo chiều thuận và
df[ df[col] > 100 & df[col] < 200 ]
8 theo chiều nghịch

df.sort_values[[col1,col2],ascending=[True,False]]


Nhóm dữ liệu, pivot dữ liệu với groupby

Pivot dữ liệu theo

df[ df[col] > 100 & df[col] < 200 ]
7

df.groupby[col1]

Pivot dữ liệu theo nhiều cột

df[ df[col] > 100 & df[col] < 200 ]
7,
df[ df[col] > 100 & df[col] < 200 ]
8


Pivot dữ liệu với pivot_table trong DataFrame

Tạo một Pivot Table, nhóm dữ liệu theo cột

df[ df[col] > 100 & df[col] < 200 ]
7, tính mean của
df[ df[col] > 100 & df[col] < 200 ]
8,
df.sort_values[col1]
6

df.pivot_table[index=col1,values=[col2,col3],aggfunc=mean]

Tính mean của tất cả các cột

df.apply[np.mean]


Tính max mỗi dòng

Áp dụng hàm np.max[] cho mỗi dòng dữ liệu

df.apply[np.max,axis=1]

7. Trích xuất một phần dữ liệu trong Pandas DataFrame

Trả về một cột của DataFrame dưới dạng Series: df[col]
Trả về các cột trong danh sách dưới dạng một DataFrame mới: df[[Col1, Col2]]
Chọn dữ liệu ở dòng đầu tiên: s.iloc[0]
Chọn dữ liệu ở dòng đầu tiên, ô thứ nhất của DataFrame: s.loc[‘index_one’]
Chọn dữ liệu theo vị trí: df.iloc[0,:]
Chọn dữ liệu theo index: df.iloc[0,0]

8. Nối dữ liệu, gộp dữ liệu bằng Pandas DataFrame

Nối dữ liệu DataFrame theo chiều dọc

Nối các dòng của

df.sort_values[col1]
7 xuống dưới
df.sort_values[col1]
8 [Số lượng các cột trong 2 DataFrames này phải giống nhau]

df1.append[df2]


Nối dữ liệu DataFrame theo chiều ngang

Nối các cột của

df.sort_values[col1]
7 sang phải các cột của
df.sort_values[col1]
8 [Số lượng các dòng trong 2 DataFrames này phải giống nhau]

df[ df[col] > 100 & df[col] < 200 ]
0


Join dữ liệu 2 DataFrames theo kiểu SQL

df[ df[col] > 100 & df[col] < 200 ]
1

Join 2 DataFrame

df.sort_values[col1]
7 và
df.sort_values[col1]
8 theo cột chung
df[ df[col] > 100 & df[col] < 200 ]
7, kiểu Join là
df.sort_values[col2, ascending=False]
4. Ngoài ra còn hỗ trợ các kiểu join:
df.sort_values[col2, ascending=False]
5,
df.sort_values[col2, ascending=False]
6,
df.sort_values[col2, ascending=False]
7

Chủ Đề