Python có thể được sử dụng để chuyển đổi dữ liệu không?

Điều quan trọng là có thể trích xuất, lọc và chuyển đổi dữ liệu từ DataFrames để đi sâu vào dữ liệu thực sự quan trọng. Thư viện pandas có nhiều kỹ thuật giúp quá trình này trở nên hiệu quả và trực quan. Và trong bài viết hôm nay mình sẽ liệt kê những kỹ thuật đó kèm theo code mẫu và một số giải thích. Bắt đầu nào

Đối với bài viết này, tôi đã tạo một DataFrame mẫu với các số ngẫu nhiên để chơi với nó. Chúng tôi sẽ sử dụng dữ liệu này làm ví dụ trong phần giải thích trong bài viết

import pandas as pd
import numpy as np

cols = ['col0', 'col1', 'col2', 'col3', 'col4']
rows = ['row0', 'row1', 'row2', 'row3', 'row4']
data = np.random.randint[0, 100, size=[5, 5]]
df = pd.DataFrame[data, columns=cols, index=rows]

df.head[]

Out[2]: col0 col1 col2 col3 col4 row0 24 78 42 7 96 row1 40 4 80 12 84 row2 83 17 80 26 15 row3 92 68 58 93 33 row4 78 63 35 70 95

Lập chỉ mục DataFrames

Để trích xuất dữ liệu từ pandas DataFrame, chúng ta có thể sử dụng bộ truy cập hoặc lập chỉ mục trực tiếp. Chúng tôi có thể chọn các hàng và cột cần thiết bằng nhãn của nó

df['col1']['row1']
Out[3]: 4

Vui lòng lưu ý thứ tự trong loại lập chỉ mục này. đầu tiên bạn chỉ định nhãn cột và sau đó hàng. Nhưng sự thật là, các bộ dữ liệu rất hiếm và nhỏ, trong khi trong cuộc sống thực, chúng ta làm việc với máy móc nặng hơn nhiều. Sẽ tốt hơn nhiều nếu chọn dữ liệu bằng cách sử dụng bộ truy cập –. định vị và. iloc. Sự khác biệt giữa chúng là. loc chấp nhận nhãn và. iloc – chỉ số. Ngoài ra, khi chúng tôi sử dụng bộ truy cập, trước tiên chúng tôi chỉ định hàng và sau đó là cột. Tôi đã có một khoảng thời gian khó khăn khi bắt đầu làm quen với nó – Nền tảng SQL, bạn có thể nói gì nữa

Vì vậy, để chọn một giá trị bằng cách sử dụng bộ truy cập, bạn sẽ làm như sau

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35

Sử dụng lập chỉ mục, chúng tôi có thể chọn một giá trị, Sê-ri hoặc Khung dữ liệu từ Khung dữ liệu [xin lỗi vì sự lặp lại]. Ở trên tôi đã trình bày cách chọn giá trị

Để chọn một vài cột, chỉ cần chuyển danh sách lồng nhau của các nhãn và DataFrame sẽ được trả về

df_new = df[['col1','col2']]
df_new.head[3]

Out[6]: col1 col2 row0 78 42 row1 4 80 row2 17 80

Nếu bạn cũng muốn chọn các hàng cụ thể, hãy thêm các chỉ mục của nó và bạn sẽ nhận lại DataFrame. Kỹ thuật này được gọi là cắt lát và chi tiết hơn về nó – bên dưới

df_new = df[['col1','col2']][1:4]
df_new.head[3]

Out[7]: col1 col2 row1 4 80 row2 17 80 row3 68 58

Để chọn Sê-ri, bạn phải chọn một cột có tất cả hoặc phạm vi hàng. Mỗi dòng mã sẽ tạo ra cùng một đầu ra

df['col0']
df.loc[:,'col0']
df.iloc[:, 0]

Out[8]: row0 24 row1 40 row2 83 row3 92 row4 78 Name: col0, dtype: int32

Dấu hai chấm có nghĩa là chúng tôi muốn chọn tất cả các hàng hoặc tất cả các cột – df. lộc [. ,. ] hoặc df. iloc[. ,. ] sẽ trả về tất cả các giá trị. Và dần dần chúng tôi đã cắt lát - chọn các phạm vi cụ thể từ dữ liệu của chúng tôi. Để cắt một Sê-ri, bạn chỉ cần thêm một dải hàng mà bạn muốn chọn bằng chỉ mục của nó

df['col3'][2:5]

Out[12]: row2 26 row3 93 row4 70 Name: col3, dtype: int32

Và đừng quên về phạm vi trong Python – bao gồm phần tử đầu tiên, loại trừ phần tử thứ hai. Vì vậy, đoạn mã trên sẽ trả về các hàng có chỉ số 5, 6, 7, 8 và 9. Và các chỉ mục bắt đầu từ 0

Cắt DataFrames hoạt động theo cùng một cách. Chỉ với một sắc thái. Khi đang sử dụng. loc [nhãn] cả hai đường viền được bao gồm. Ví dụ: chọn các hàng từ nhãn 'row1' đến nhãn 'row4' hoặc từ chỉ mục hàng 1 đến chỉ mục 4 và tất cả các cột

df.loc['row1':'row4', :]
Out[20]: col0 col1 col2 col3 col4 row1 40 4 80 12 84 row2 83 17 80 26 15 row3 92 68 58 93 33 row4 78 63 35 70 95

df.iloc[1:4, :]
Out[21]: col0 col1 col2 col3 col4 row1 40 4 80 12 84 row2 83 17 80 26 15 row3 92 68 58 93 33

Dòng mã đầu tiên phía trên đã chọn hàng1, hàng2, hàng3 và hàng4. Trong khi hàng thứ hai – chỉ hàng1, hàng2 và hàng3. Và một vài ví dụ khác dưới đây

Chọn các cột từ nhãn 'col1' đến nhãn 'col4' hoặc từ chỉ mục cột 1 đến chỉ mục 4 và tất cả các hàng

________số 8

Chọn  các hàng từ nhãn 'hàng1' đến nhãn 'hàng 4' hoặc từ chỉ mục hàng 1 đến chỉ mục 4 và cột từ nhãn 'col1' đến nhãn 'col4' hoặc từ chỉ mục cột 1 đến chỉ mục 4

df.loc['row1':'row4', 'col1':'col4']
Out[24]: col1 col2 col3 col4 row1 4 80 12 84 row2 17 80 26 15 row3 68 58 93 33 row4 63 35 70 95

df.iloc[1:4,1:4]
Out[25]: col1 col2 col3 row1 4 80 12 row2 17 80 26 row3 68 58 93

Sử dụng danh sách để chọn các cột hoặc hàng cụ thể không nằm trong một phạm vi

df['col1']['row1']
Out[3]: 4
0

Lọc khung dữ liệu

Lọc là một công cụ tổng quát hơn để chọn các phần của dữ liệu dựa trên các thuộc tính quan tâm của chính dữ liệu chứ không phải trên các chỉ mục hoặc nhãn. DataFrames có một số phương pháp để lọc. Ý tưởng cơ bản cho tất cả các phương pháp này là Chuỗi Boolean. df[‘col1’] > 20 [chúng tôi giả sử col1 có kiểu số nguyên] sẽ trả về một Chuỗi Boolean khi điều kiện này là đúng. Tôi sẽ đặt ở đây đầu ra của. head[], vì vậy bạn không cần cuộn lên để khớp các số

df['col1']['row1']
Out[3]: 4
1

Vì vậy, để chọn một phần của DataFrame trong đó các giá trị của col1 lớn hơn 20, chúng tôi sẽ sử dụng đoạn mã sau

df['col1']['row1']
Out[3]: 4
2

Chúng ta có thể kết hợp các bộ lọc đó bằng các toán tử logic tiêu chuẩn [và – &, hoặc –. , không phải – ~]. Lưu ý việc sử dụng dấu ngoặc đơn cho các hoạt động này

df['col1']['row1']
Out[3]: 4
3

Xử lý các giá trị 0 và NaN

Hầu như các bộ dữ liệu luôn có giá trị bằng 0 hoặc NaN và chúng tôi chắc chắn muốn biết chúng ở đâu. Của chúng tôi là đặc biệt, vì vậy chúng tôi sẽ sửa đổi nó một chút

df['col1']['row1']
Out[3]: 4
4

Để chọn các cột không có bất kỳ giá trị 0 nào, chúng ta có thể sử dụng. phương thức all[] [có tất cả dữ liệu]

df['col1']['row1']
Out[3]: 4
5

Nếu chúng tôi muốn tìm một cột có ít nhất một giá trị khác không [bất kỳ], điều này sẽ giúp

df['col1']['row1']
Out[3]: 4
6

Để chọn các cột có bất kỳ NaN nào

df['col1']['row1']
Out[3]: 4
7

Chọn các cột không có NaN

df['col1']['row1']
Out[3]: 4
8

Chúng tôi có thể loại bỏ các hàng chứa NaN, nhưng đây là một trò chơi nguy hiểm – loại bỏ thường không phải là một giải pháp. Bạn phải hiểu dữ liệu của mình và xử lý các hàng như vậy một cách khôn ngoan. tôi đã cảnh báo bạn

Bạn có chắc là bạn muốn biết nó? . 😀

df['col1']['row1']
Out[3]: 4
9

Phương pháp này không sửa đổi DataFrame gốc, vì vậy để tiếp tục làm việc với dữ liệu đã lọc, bạn phải gán nó cho khung dữ liệu mới hoặc gán lại cho khung dữ liệu hiện có

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
0

Cái hay của lọc là chúng ta thực sự có thể chọn hoặc sửa đổi giá trị của một cột dựa trên một cột khác. Ví dụ: chúng ta có thể chọn các giá trị từ col1 trong đó col2 lớn hơn 35 và cập nhật các giá trị đó bằng cách thêm 5 vào mỗi giá trị

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
1

Và điều này đưa chúng ta đến phần tiếp theo –

Chuyển đổi khung dữ liệu

Khi chúng tôi đã chọn hoặc lọc dữ liệu của mình, chúng tôi muốn chuyển đổi dữ liệu đó bằng cách nào đó. Cách tốt nhất để làm điều này là sử dụng các phương thức được kế thừa từ DataFrames hoặc các chức năng phổ quát gọn gàng, giúp chuyển đổi toàn bộ cột dữ liệu theo từng phần tử. Ví dụ sẽ là gấu trúc '. hàm floordiv[] [từ tài liệu.
'Phân chia số nguyên của khung dữ liệu và phần tử khác'] hoặc numpy's. floor_divide[] [doc. ‘Trả về số nguyên lớn nhất nhỏ hơn hoặc bằng phép chia các đầu vào. ’].

Nếu các chức năng đó không có sẵn, chúng tôi có thể viết chức năng của riêng mình và sử dụng nó với. phương pháp áp dụng []

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
2

Các hàm này không trả về các phép biến đổi, vì vậy chúng ta phải lưu trữ nó một cách rõ ràng

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
3

Nếu chỉ mục là một chuỗi nó có một. trình truy cập str cho phép chúng tôi sửa đổi toàn bộ chỉ mục cùng một lúc

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
4

Ngoài ra, chúng ta không thể sử dụng. apply[] phương thức trên chỉ mục - thay thế cho nó là. bản đồ[]

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
5

Nhưng mà. map[] cũng có thể được sử dụng trên các cột. Ví dụ

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
6

Các phép toán số học trên Sê-ri và DataFrames hoạt động trực tiếp. Biểu thức bên dưới sẽ tạo một cột mới trong đó mỗi giá trị có chỉ số n là tổng của các giá trị có chỉ số n từ 'col3' và 'col7'

df.loc['row4', 'col2']
Out[4]: 35
df.iloc[rowindex, colindex] ==> df.iloc[4, 2]
Out[5]: 35
7

Đây là phiên bản thứ hai của bài viết, vì phiên bản đầu tiên hoàn toàn là một mớ hỗn độn – lỗi trong mã, không có ví dụ và một số thứ khác. Nhờ phản hồi mà tôi đã xem lại bài viết một lần nữa và tôi nghĩ bây giờ nó đã tốt hơn nhiều. Tôi đã trình bày những điều cơ bản về chuyển đổi và trích xuất dữ liệu trong Python bằng các đoạn mã và ví dụ ở đây và hy vọng nó sẽ hữu ích cho những người mới bắt đầu con đường của họ trong lĩnh vực này

Trong khi đó, hãy yêu khoa học dữ liệu và cười nhiều hơn. Chúng ta phải tích cực vì chúng ta đang có công việc quyến rũ nhất thế kỷ 21 😀

Tại sao phải chuyển đổi dữ liệu trong Python?

Chuyển đổi dữ liệu là quá trình chuyển đổi dữ liệu thô thành định dạng hoặc cấu trúc phù hợp hơn cho mô hình hoặc thuật toán cũng như khám phá dữ liệu nói chung. Đây là một bước thiết yếu trong kỹ thuật tính năng giúp tạo điều kiện khám phá thông tin chuyên sâu .

Thư viện Python nào đã được sử dụng để chuyển đổi dữ liệu?

Gấu trúc. Pandas [Phân tích dữ liệu Python] là điều bắt buộc trong vòng đời của khoa học dữ liệu. Đây là thư viện Python phổ biến và được sử dụng rộng rãi nhất cho khoa học dữ liệu, cùng với NumPy trong matplotlib.

Phương pháp nào được sử dụng trong chuyển đổi dữ liệu?

Chuẩn hóa giúp áp dụng thuật toán khai thác dữ liệu và trích xuất dữ liệu nhanh hơn. Các phương pháp chuẩn hóa phổ biến là. Chuẩn hóa tối thiểu-tối đa . Tỷ lệ thập phân .

Biến đổi biến trong Python là gì?

Khoa học dữ liệu và phân tích dữ liệu với Python . Nói cách khác, đối với mọi đối tượng, cuộc cách mạng được sử dụng cho giá trị của biến đối với đối tượng đó. a transformation that is used to some values of a variable. In other terms, for every object, the revolution is used to the value of the variable for that object.

Chủ Đề