Pandas là thư viện Python phổ biến nhất để thao tác dữ liệu và phân tích dữ liệu. Đó là điều phải biết đối với tất cả các nhà khoa học dữ liệu
Hai cấu trúc dữ liệu Pandas là
- Khung dữ liệu gấu trúc
- Dòng gấu trúc
Tôi thích nghĩ về Pandas Dataframe gần giống như một bảng excel. Bạn có hàng và cột dữ liệu. Tuy nhiên, trong Pandas, dữ liệu trong các cột phải cùng kiểu dữ liệu. Sê-ri Pandas chỉ là một cột trong Khung dữ liệu Pandas
Bài viết này sẽ cung cấp cho bạn rất nhiều thông tin hữu ích về Pandas về cách làm việc với các phương thức khác nhau trong Pandas để thực hiện thao tác và khám phá dữ liệu. Đây là một hướng dẫn nhanh dành cho người mới bắt đầu về Pandas cũng như một tài liệu bồi dưỡng bổ ích nếu bạn không sử dụng Pandas trong một thời gian. Phần tổng quan này sẽ bao gồm thông tin chi tiết về cách nhập tập dữ liệu cũng như khám phá, chọn, làm sạch, thao tác, tổng hợp, kết hợp và xuất dữ liệu của bạn để bạn có thể tiếp tục hoàn thành dự án khoa học dữ liệu tiếp theo của mình
Tôi đã thêm vào một số “mẹo chuyên gia” trong suốt bài viết để chia sẻ với bạn một số điều hữu ích mà tôi đã học được trong thời gian sử dụng Pandas. Nếu bạn có một số mẹo hay để chia sẻ, tôi rất thích nghe chúng. Thả một bình luận dưới đây
Bạn có thể tải Jupyter Notebook của tôi tại đây và làm theo. Các phương pháp được mô tả bên dưới sẽ sử dụng bộ dữ liệu Soils làm ví dụ. Tôi khuyên bạn nên mở Jupyter Notebook để có thể xem kết quả đầu ra của mã
Mẹo bắt đầuĐể bắt đầu, trước tiên hãy đảm bảo bạn nhập thư viện Pandas
import pandas as pd
Tôi cũng muốn sửa đổi các tùy chọn Pandas mặc định trước khi bắt đầu. Xem lời khuyên của chuyên gia bên dưới
Mẹo chuyên gia. Theo mặc định, nếu bạn có nhiều cột trong khung dữ liệu của mình, thì không phải tất cả các cột sẽ hiển thị trong màn hình đầu ra. Bạn có thể mở rộng các cột trong màn hình đầu ra của mình bằng cách sử dụng dòng mã này
pd.set_option['display.max_columns', 500]
Giá trị 500 cho biết chiều rộng tối đa tính bằng ký tự của một cột. Tức là giá trị 500 có nghĩa là bạn muốn hiển thị tối đa 500 cột khi gọi dataframe. Mặc định chỉ là 50
Ngoài ra, bạn có thể mở rộng các hàng trong màn hình đầu ra bằng một dòng mã tương tự. Điều này sẽ cho phép hiển thị tối đa 500 hàng
pd.set_option['display.max_rows', 500]
Nhập dữ liệu sẽ là bước đầu tiên trong dự án của bạn. Cho dù bạn có tệp excel hay tệp csv, chúng có thể dễ dàng được nhập vào gấu trúc
Để nhập các tệp giá trị [CSV] được phân tách bằng dấu phẩy, hãy sử dụng dòng mã này
pd.read_csv["Soils.csv"]
Trong ngoặc đơn, "Soils.csv",
là tên của tệp mà tôi đang tải lên. Đối với các tệp excel, hãy sử dụng dòng mã này
pd.read_excel["Soils.xls"]
Để nhập thành công tệp của bạn, đoạn mã trên giả định rằng tệp dữ liệu nằm trong thư mục làm việc hiện tại của bạn
Mẹo chuyên gia. Nếu bạn không chắc chắn về vị trí thư mục làm việc của mình, bên trong Jupyter Notebook của bạn, bạn có thể sử dụng
mask2 = df[‘Conduc’] > 10
0 để lấy thư mục làm việc của mình. Ký tự
mask2mask2 = df[‘Conduc’] > 10
1 yêu cầu Jupyter Notebook coi mã này là lệnh shell của hệ điều hành
mask2Mẹo chuyên gia. Nếu bạn tình cờ có bất kỳ cột nào thuộc loại ngày giờ, hãy thêm vào
mask2 = df[‘Conduc’] > 10
2 làm đối số bên trong dấu ngoặc đơn để Pandas có thể nhận ra cột đó là ngày tháng. Ví dụ: nếu bạn có một cột ngày được gọi là Collection_Date, bạn sẽ sử dụng
mask2mask2 = df[‘Conduc’] > 10
3
mask2
Đây là một đoạn khung dữ liệu của tôi sau khi tôi đã nhập thành công
Khám phá dữ liệu của bạn
Bây giờ dữ liệu của bạn đã nằm trong khung dữ liệu của Pandas, bạn đã sẵn sàng để điều tra. Dưới đây là một số phương pháp hữu ích để gọi mỗi khi bạn đưa vào một tập dữ liệu. Các bước này sẽ giúp bạn hiểu những gì bạn có trong dữ liệu của mình
Khám phá khung dữ liệu
mask2 = df[‘Conduc’] > 10
mask2
4 Trả về 5 hàng đầu tiên của khung dữ liệu. Để ghi đè giá trị mặc định, bạn có thể chèn một giá trị vào giữa dấu ngoặc đơn để thay đổi số hàng được trả về. Thí dụ. mask2 = df[‘Conduc’] > 10
mask2
5 sẽ trả về 10 hàngmask2 = df[‘Conduc’] > 10
mask2
6 Trả về 5 hàng cuối cùng của khung dữ liệu. Bạn có thể chèn một giá trị vào giữa dấu ngoặc đơn để thay đổi số hàng được trả vềmask2 = df[‘Conduc’] > 10
mask2
7 Trả về một bộ đại diện cho các kích thước. Ví dụ: đầu ra của [48, 14] đại diện cho 48 hàng và 14 cộtmask2 = df[‘Conduc’] > 10
mask2
8 Cung cấp tóm tắt dữ liệu bao gồm kiểu dữ liệu chỉ mục, kiểu dữ liệu cột, giá trị khác null và mức sử dụng bộ nhớmask2 = df[‘Conduc’] > 10
mask2
9 Cung cấp số liệu thống kê mô tả tóm tắt xu hướng trung tâm, sự phân tán và hình dạngKhám phá các cột
Một trong những phương pháp yêu thích của tôi là
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
0. Phương pháp này cung cấp số lượng cho từng giá trị duy nhất trong cột bạn đã chọnMẹo chuyên gia. Nếu bạn muốn xem bảng phân tích theo tỷ lệ phần trăm thay vì số tuyệt đối, hãy thử
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
1 để thay thế
df[mask3]
Dưới đây là một số phương pháp hữu ích hơn để xem có gì trong khung dữ liệu của bạn
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
2 Trả về số lượng giá trị null trong cột ‘Contour’mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
3 Trả về số lượng các giá trị khác null trong cột 'pH'mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
4 Trả về các giá trị duy nhất trong cột 'Depth'mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
5 Trả về tên của tất cả các cộtChọn dữ liệuCó nhiều cách khác nhau để chọn dữ liệu mà bạn quan tâm. Dưới đây là một số cách hữu ích nhất mà tôi thường sử dụng
Lựa chọn cột
Nếu bạn chỉ muốn chọn một cột, bạn có thể sử dụng
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
6 Ở đây ‘Nhóm’ là tên cộtĐể chọn nhiều cột, bạn sẽ sử dụng
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
7 Lưu ý rằng dấu ngoặc kép được sử dụng khi chọn nhiều cột. Chỉ cần nhập tên của các cột mà bạn muốnLựa chọn tập hợp con/Lập chỉ mục
Để chọn các tập dữ liệu con cụ thể, chúng tôi dựa vào các phương pháp
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
8 hoặc mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
9. Tôi khuyên bạn chỉ nên thử với hai phương pháp này để hiểu rõ hơn về cách chúng hoạt độngChúng ta có thể sử dụng
writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
0 để chọn theo nhãn của hàng và cộtwriter = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
1 chọn tất cả các hàng và cột 'Đường viền'. Dấu hai chấm duy nhất writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
2 chọn tất cả các hàng. Ở bên trái dấu phẩy, bạn chỉ định các hàng bạn muốn và bên phải dấu phẩy, bạn chỉ định các cộtwriter = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
3 chọn chỉ mục của chúng tôi từ 0 đến 4 và cột 'Đường viền'Mặt khác, chúng tôi sử dụng
writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
4 để chọn hàng và cột theo vị trí. Chúng tôi sẽ vượt qua ở các vị trí số nguyênwriter = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
5 chọn tất cả các hàng và cột ở vị trí 2writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
6 chọn hàng ở vị trí 3 và tất cả các cộtlọc
Ngoài ra, chúng tôi có thể sử dụng mặt nạ để giúp chúng tôi chọn các hàng cụ thể trong khung dữ liệu của mình phù hợp với một tiêu chí nhất định. Trong mặt nạ bên dưới, mỗi giá trị trong cột được đánh giá dựa trên câu lệnh. Tức là, giá trị có bằng “Top”
mask = df[‘Contour’] == “Top”
df[mask]
Giá trị boolean là Đúng hoặc Sai được trả về từ mã
writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
7. Khi chúng tôi sử dụng mặt nạ boolean của mình trong writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
df.to_excel[writer, ‘DataFrame’]
writer.save[]
8, nó sẽ chỉ in các hàng mà mặt nạ ghi là TrueMặt nạ cũng có thể được sử dụng để đánh giá các cột số. Giá trị boolean của True được trả về khi giá trị trong cột 'Tiến hành' lớn hơn 10 trong ví dụ bên dưới
mask2 = df[‘Conduc’] > 10
mask2
Một cách hữu ích khác để sử dụng mặt nạ là lọc các mục trong danh sách
mask3 = df[‘Contour’].isin[[‘Depression’, ‘Slope’]]
df[mask3]
Dọn dẹp dữ liệuLời khuyên của chuyên gia. Nếu bạn muốn chọn mặt đối lập với mặt nạ của mình, bạn có thể sử dụng biểu tượng dấu ngã. Ví dụ:
writer = pd.ExcelWriter[‘myDataFrame.xlsx’]
9 sẽ chọn tất cả các hàng KHÔNG chứa Độ lõm cũng như Độ dốc trong cột 'Đường viền'
df.to_excel[writer, ‘DataFrame’]
writer.save[]
Một dự án khoa học dữ liệu chỉ có thể tốt nếu bản thân dữ liệu tốt. Đó là, chúng tôi muốn có chất lượng dữ liệu tốt trước khi đưa nó vào thuật toán máy học. Dưới đây là một số phương pháp hữu ích giúp tăng tốc độ làm sạch dữ liệu của bạn. Lưu ý rằng tôi chuyển vào import pandas as pd
0 cho nhiều phương pháp bên dưới. Điều này đảm bảo rằng thay đổi diễn ra trong khung dữ liệu thực tế. Nếu bạn không chuyển vào dòng mã này, các thay đổi không thực sự diễn ra trong khung dữ liệu
Thay thế các ký tự lạ
import pandas as pd
1
Xóa giá trị null
import pandas as pd
2
Áp đặt giá trị null
import pandas as pd
3
Xóa hàng và cột
import pandas as pd
4
import pandas as pd
5
Một điều cần lưu ý là axis=0 yêu cầu Pandas thả theo hàng. Bạn có thể sử dụng axis=1 để thả cột. Điều này áp dụng cho nhiều phương pháp Pandas khác có sẵn
Thay đổi tên cột
import pandas as pd
6
Thao tác dữ liệu
Bạn có thể sử dụng import pandas as pd
7 để áp dụng một hàm trên hàng hoặc cột trong khung dữ liệu của mình. Mã bên dưới áp dụng căn bậc hai cho tất cả các giá trị trong cột 'Điều kiện'
import pandas as pd
8
Đôi khi, sự khác biệt và các mẫu có thể được xác định tốt hơn nếu chúng ta nhóm dữ liệu để quan sát
Dưới đây là một số cách khác nhau để bạn có thể nhóm dữ liệu. Ví dụ bên dưới nhóm dữ liệu theo cột 'Đường viền' và tính giá trị trung bình, tổng hoặc số lượng bản ghi trong cột 'Ca'. Xem đầu ra trong Jupyter Notebook để hiểu rõ hơn những gì mã trả về
import pandas as pd
9
pd.set_option['display.max_columns', 500]
0
pd.set_option['display.max_columns', 500]
1
Bạn cũng được phép nhóm theo nhiều cột
pd.set_option['display.max_columns', 500]
2
Có một số cách để kết hợp hai khung dữ liệu với nhau và tùy thuộc vào nhiệm vụ cụ thể của bạn, có thể sử dụng một cách tốt hơn để thực hiện nhiệm vụ. Hai công cụ hàng đầu mà tôi có xu hướng sử dụng là concat và hợp nhất
Concat rất tốt cho việc xếp chồng các hàng của nhiều khung dữ liệu
Nối dữ liệu theo cột
pd.set_option['display.max_columns', 500]
3
Nối dữ liệu theo hàng
pd.set_option['display.max_columns', 500]
4
Hợp nhất rất tốt để kết hợp các khung dữ liệu khi bạn có các cột chung giữa các khung dữ liệu của mình
hợp nhất dữ liệu
pd.set_option['display.max_columns', 500]
5
Tôi sẽ không đi vào chi tiết quá nhiều về hợp nhất, nhưng bạn có thể tìm thấy các ví dụ tuyệt vời về cách sử dụng nó tốt hơn tại đây
Khung dữ liệu đầu raKhi bạn đã hoàn tất việc dọn dẹp và thao tác dữ liệu của mình. Bạn có thể xuất ra file csv hoặc excel để làm việc
Để xuất dữ liệu sang tệp csv được phân tách bằng tab, hãy sử dụng mã bên dưới. pd.set_option['display.max_columns', 500]
6 cho biết rằng bạn muốn nó được phân cách bằng tab. Thay vào đó, nếu bạn thích một pd.set_option['display.max_columns', 500]
7, bạn có thể sử dụng pd.set_option['display.max_columns', 500]
8