Định dạng khung dữ liệu python

Chào các thành viên Mì AI, chúng ta cùng quay lại series đi tiếp về DA-DS nhé. Trong bài trước [tại đây] chúng ta đã tìm hiểu, cài đặt Python và viết một ứng dụng nhỏ để đọc tệp CSV rồi. Trong bài này chúng ta sẽ cùng thảo luận một số thao tác cơ bản với dữ liệu bằng thư viện Pandas nhé

Mình cũng xin nhắc lại là Mì Ai cũng xin tiếp cận DA theo một cách hoàn toàn là Mì ăn liền cho hợp phong cách. Các khái niệm sẽ đều được đơn giản hóa để các bạn mới bắt đầu cũng có thể tham khảo và sử dụng được. Mong các cao thủ đi qua xin bỏ qua

Phần 1 – Khái niệm về Pandas, Series và DataFrame

Về thư viện Pandas

Như đã nói trong buổi trước, mọi người nhắc đến DA là có 2 thư viện được sử dụng nhiều là. gấu trúc và numpy. Để các bạn dễ hiểu thì cứ nhớ là

  • gấu trúc. hỗ trợ thư viện trợ giúp đắc lực trong thao tác dữ liệu. Thư viện này được sử dụng rộng rãi trong nghiên cứu nghiên cứu phát triển các ứng dụng về khoa học dữ liệu
  • cục mịch. là một thư viện cốt lõi phục vụ cho khoa học máy tính của Python, hỗ trợ tính toán các mảng nhiều chiều, có kích thước lớn so với các hàm đã được tối ưu áp dụng lên các mảng nhiều chiều đó

Để làm việc với 2 thằng này cho tiện thì cứ mở project mới là các bạn cài đặt nó luôn bằng lệnh

pip install pandas numpy

Về khái niệm Series và Dataframe

Nếu hiểu một cách đơn giản thì Series là các cột trong Excel còn Dataframe chính là một tập hợp các cột và chính là Trang tính trong Excels đó. Còn nếu bạn đã làm quen với CSDL thì Series là cột còn Dataframe chính là bảng. Nghe bắt đầu quen thuộc rồi đúng không?

Tuy nhiên, có một chút đặc biệt cần lưu ý như sau

  • Mỗi df luôn có một cột ngoài cùng bên trái gọi là cột chỉ mục [chỉ mục] như trong bảng excel thì các bạn nhìn bên trái nó cũng có một cái cột tăng dần
  • Index is a data stringđứng đầu của Dataframe. Ta có thể đặt một cột bất kỳ làm chỉ mục cho df. Còn nếu không đặt thì hệ thống sẽ sinh ra một cột số tăng dần [0, 1, 2, …,n] làm chỉ mục cho một khung dữ liệu
Nguồn. at here

Dataframe sẽ hay được biểu diễn bằng biến có tên “df” cho dễ gợi nhớ nhé [còn thực tế bạn thích đặt tên gì cho nó cũng được như vậy. vàng, bạc, kim cương hay mì ăn liền…]

Rồi, hiểu mì ăn liền là vậy còn nếu các bạn muốn đọc chuyên sâu hơn thì mình có sẵn link full HD không che nhé. at here

Phần 2 – Giới thiệu một số lệnh thao tác chính trên Dataframe với thư viện Pandas

Ở đây mình cũng nói luôn là thư viện Pandas khá lớn với vô số lệnh và riêng việc liệt kê ra thôi cũng đã hết mấy trang A4 kaka. Do đó trong bài viết này mình chỉ giới thiệu một số lệnh chính để các bạn hình dung cách làm việc với thư viện Pandas như thế nào thôi, các bạn muốn tìm hiểu thêm thì có thể đọc tại link chính thức của Pandas luôn cho máu

Tạo khung dữ liệu

Dataframe can be create by many way other nhau

Đầu tiên ta có thể tạo df từ một mảng dữ liệu nhập ngay trên phần mềm [cách này thông thường mình cũng không sử dụng vì có xu hướng làm việc với các tệp dữ liệu lớn]. Cách tạo ra df bằng cách tạo các mảng dữ liệu cho các cột, từ đó gắn cột vào df. Ví dụ mã nguồn như sau

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]

Kết quả của df1 và df2 sẽ có dạng như sau

col1 col2 0 1 3 1 2 4

Cách thứ hai bạn có thể tải dữ liệu từ tệp excel, csv vào trong khung dữ liệu. Thông thường mình hay sử dụng tệp csv để giảm dung lượng dữ liệu bắt đầu. Trong bài trước mình đã hướng dẫn cụ thể về công việc này thông qua việc sử dụng lệnh đọc tệp dữ liệu như sau

df = pd.read_csv[path + '\S2_DataFile.csv']

Code language: JavaScript [javascript]

Ngoài ra Python còn hỗ trợ kết nối đến CSDL để lấy thông tin, thuộc loại CSDL để có thể tìm các mã tương ứng nhé.

Chúng ta đã hoàn thành phần tạo df, bây giờ mình sẽ đi tiếp các lệnh khác của gấu trúc trên df. Để các bạn dễ hiểu mình sẽ nhóm vào các nhóm đúng theo tư tưởng của SQL nhé kaka

Các câu lệnh SELECT

Trong phần này, bạn sẽ sử dụng các lệnh để xuất dữ liệu trong df [hoặc gán cho bất kỳ biến nào mà một phần dữ liệu khác được trích xuất ra của df]

Ra lệnh trong df ra màn hình

# In toàn bộ df ra màn hình print[df] # In 10 dòng dầu tiên để kiểm tra dữ liệu print[df.head[]] # In 5 dòng dầu tiên để kiểm tra dữ liệu print[df.head[5]] # In 10 dòng cuối cùng của dữ liệu print[df.tail[]]

Code language: PHP [php]

Đoạn chương trình trên bạn chú ý 2 lệnh là đầu và đuôi. Đúng với tên của nó, dùng để ra các bản ghi đầu tiên và cuối cùng [đuôi] của df

View data of a column

Để xem dữ liệu một cột ta sử dụng df [‘’]. Ví dụ:

# Lấy dữ liệu cột có tên col1 và in ra màn hình print[df['col1']] # Lấy 4 dòng đầu tiên của cột col2 và in ra màn hình print[df['col2'].head[4]] # Lấy dữ liệu 2 cột col1 và col2 đồng thời print[df['col1','col2']]

Code language: PHP [php]

View data of a line

Để xem dữ liệu của một dòng, ta sẽ xem theo chỉ mục của df. Ví dụ ta có một df như sau

Nguồn

Bây giờ giả sử muốn lấy các dòng bằng lệnh như sau

# Lấy dòng có index = 5 print[df.iloc[5]] # Lấy các dòng có index từ 6 đến 10 print[df.iloc[6:11]] # Chú ý là 11 nhé

Code language: PHP [php]

If the column index not a number which is other data type, ta used df command. lộc. Giả sử ta có một df như sau

Nguồn
Nguồn

Check tra data a column

Đôi khi chúng ta muốn tìm hiểu dữ liệu của một cột là gì?

#ví dmã code để xem thông tin ca ct GDP trong dataframe #tên là df: print[df['GDP'].describe[]] # Ly thông tin mô tca cdf print[df.describe[]]

Code language: CSS [css]

Dữ liệu trả về sẽ có dạng một bảng bao gồm các thông tin và ý nghĩa của các thông tin mà mình có thể giải thích ở bảng bên dưới

Nếu muốn tìm hiểu kỹ hơn về các bảng giá trị thống kê, các bạn có thể vào liên kết này nhé

Lọc dữ liệu trong dataframe

Các bạn cứ cấu hình sử dụng phần bộ lọc dữ liệu này như là câu SELECT kèm theo WHERE ấy

Giả sử ta có một khung dữ liệu như sau

Nguồn

# Lấy các nhân sử ở vùng East print[df[df['region']=='East']] # Lấy các nhân viên có sales trên 50000 print[df[df['sales']> 50000]]

Code language: PHP [php]

Sắp xếp dữ liệu

To sort data ta used sort_values[] command as after

# Xếp dữ liệu tăng dần theo cột col1 df.sort_values[by=['col1']] # Xếp dữ liệu tăng dần theo cột col1 và col2 df.sort_values[by=['col1','col2']] # Xếp dữ liệu theo thứ tự giảm dần theo cột col1 df.sort_values[by='col1', ascending=False] # Tham số ascending=False

Code language: PHP [php]
NguồnCác câu lệnh UPDATE

Cập nhật giá trị cột

Gọi là cập nhật nhưng thực chất là chúng ta thay đổi giá trị của các cột theo yêu cầu của bài toán yêu cầu thôi. Chúng ta có thể thực hiện các thao tác sau

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
0

Change the index of df

Với món này chúng ta có thể thực hiện các thao tác

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
1

Xử lý thiếu dữ liệu

Trong quá trình làm việc với dữ liệu hàng ngày chúng ta sẽ gặp rất nhiều dữ liệu bị thiếu [trống, NaN…] và chúng ta phải xử lý nó trước khi có thể tiếp tục làm việc với dữ liệu

Có 2 cách chính để xử lý cái thiếu dữ liệu này là. cắt luôn [Drop] hoặc thay thế [Replace]

The use ta has df as after

Nguồn

Bây giờ chúng ta có thể thực hiện xóa dữ liệu bị thiếu bằng lệnh dropna as after

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
2

Hoặc cũng có thể thay thế các giá trị NaN như sau

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
3DELETE câu lệnh

To delete line or column in pandas ta all used chung a command is drop as after

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
4INSERT câu lệnh

Add new data line

Add new data lines to Dataframe ta used command append for dataframe. Ví dụ

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
5

Add a new data column

Việc thêm một cột dữ liệu mới trong dataframe khá đơn giản, các bạn hầu như không cần làm gì mà thực hiện theo kiểu “cứ thế mà gán”. Ví dụ mình có 1 df như sau

Nguồn. at here

Bây giờ giả sử muốn thêm cột,ta sẽ thực hiện như sau

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
6Các câu lệnh truy xuất dữ liệu phức tạp hơn

Data Group

To the data group ta used command groupby. Giả sử ta có dataframe after

Nguồn. at here

Bây giờ ta có thể nhóm theo nhóm như sau

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
7

bảng tổng hợp

Cái này mình cũng không biết chuyển sang tiếng Việt như nào cho hợp lý. Đại khái là nó tạo ra 1 góc nhìn khác từ một bảng dữ liệu

Ví dụ ta có dataframe

Nguồn. at here

Giả sử ta muốn lấy lại thông tin theo tên người làm chỉ mục, ta sử dụng lệnh

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
8
Nguồn. Tại đây

# Tạo một dictionary d = {'col1': [1, 2], 'col2': [3, 4]} # Tạo một dataframe df1 từ dictionary đó df1 = pd.DataFrame[data=d] # Tạo trực tiếp df2 từ lệnh df2 = pd.DataFrame[np.array[[[1, 2], [3, 4]]], columns=['col1', 'col2']]

Code language: PHP [php]
9
Nguồn. Tại đây

Rồi, trên đây là các thao tác chính với dataframe, mình liệt kê chỉ với mục đích các bạn có cái nhìn tổng quát về những gì ta có thể làm với dữ liệu. Để tìm hiểu chi tiết các bạn có thể tham khảo tài liệu của pandas và cũng nên hỏi chị Gúc gờ mọi lúc mọi nơi khi cần thiết nhé. Học lập trình chứ không phải học thuộc lòng ngôn ngữ nên các bạn cũng không cần thiết phải cố mà nhớ cho mệt

Trong các bài tiếp theo chúng ta sẽ học cách vẽ các loại đồ thị với pandas và matplotlib nhé. Hẹn gặp lại các bạn

Chủ Đề