Gấu trúc: từ Zero đến Hero
Một bài viết xuyên suốt mà bạn có thể đọc trong khi xem chương trình truyền hình yêu thích vào ban ngày của mình, nhưng đủ hay để dạy cho bạn tất cả những gì bạn cần biết để thực sự hoàn thành công việc.
Bắt đầu
Pandas là một thư viện Xử lý và Phân tích Dữ liệu bằng Python. Pandas được sử dụng rộng rãi cho Khoa học dữ liệu và Học máy. Nó được phát triển trên một gói Python khác có tên là NumPy, được sử dụng cho tính toán khoa học. Nếu bạn không biết nhiều về NumPy, bạn có thể muốn kiểm tra nhanh bằng cách đọc bài viết dài 5 phút của tôi trước khi tiếp tục với Pandas. Đây không phải là việc phải làm nhưng tôi thực sự khuyên bạn nên làm.
Để bắt đầu, trước tiên hãy đảm bảo bạn có Python, NumPy và Pandas trong hệ thống của mình. Cách bạn nhận được nó tùy thuộc vào hệ thống của bạn và IDE mà bạn ưu tiên, nhưng tôi khuyên dùng Anaconda. Với cài đặt Anaconda cơ bản, bạn chỉ cần vào terminal và chạy “conda install numpy”, sau đó “conda install pandas” & voila!
Bây giờ, hãy tạo một tệp example.py để bắt đầu làm việc.
Lưu ý: Nếu chúng ta tạo một dự án thay vì một tệp ví dụ duy nhất để làm việc, thì chúng ta chỉ cần tạo một thư mục và một tệp __init__.py bên trong nó.
Bạn nên thêm các dòng sau vào đầu tệp để có thể làm việc với Pandas trong tệp.
nhập numpy dưới dạng np
nhập gấu trúc dưới dạng pd
Lưu ý: Chúng tôi thường nhập NumPy dưới dạng np và Pandas dưới dạng pd để chúng tôi không phải nhập numpy & pandas mỗi khi chúng tôi gọi một hàm từ thư viện. Hãy nhớ rằng có thể thay đổi altough, np và pd là quy ước chung.
Sau đó, bạn có thể chạy mã trong tệp ví dụ bằng cách đi tới thiết bị đầu cuối và chạy lệnh:
ví dụ python.py
Loạt
Tương tự như cách bất kỳ ngôn ngữ lập trình nào có mảng, tương tự như cách NumPy có ma trận, chúng tôi nhận được chuỗi trong Pandas. Sự khác biệt chính giữa chuỗi và ma trận/mảng thông thường là các mục trong chuỗi có thể có số chỉ mục hoặc khóa để truy cập giá trị đó. Hãy nghĩ về nó như một danh sách các cặp khóa-giá trị giống như dữ liệu JSON.
Sự thật thú vị: Pandas thường được biểu thị là “Excel cho Khoa học dữ liệu” do thực tế là nó tiết kiệm giá trị — các cặp khóa, hiển thị chúng một cách trực quan và thực hiện các phép tính trên chúng theo cách tương tự như MS Excel.
Bạn có thể tạo chuỗi Pandas từ từ điển Python:
myDictionary = { “John” : 35, “Jane” : 40}
pd.Series(myDictionary) // trả về John 35, Jane 40
Nếu bạn thêm một mảng thay vì một từ điển, các mục trong chuỗi sẽ có các số nguyên làm khóa:
myArray = [ 35, 40]
pd.Series(myArray) // trả về 0 35, 1 40
Bạn có thể thêm hai mảng lại với nhau và tạo một chuỗi trong số chúng dưới dạng:
myArray1 = [ 35, 40]
myArray2 = [ “John”, “Jane”]
pd.Series(data= myArray1, index=myArray2) // trả về John 35, Jane 40
Nếu có hai chuỗi khác nhau có cùng khóa, bạn có thể thực hiện các phép toán trên chúng như sau:
series1 = pd.Series({ “John” : 35, “Jane” : 40})
series2 =pd.Series({ “John” : 100, “Jane” : 50})
seriesSum = series1 + series2 // trả về John 135, Jane 90
Lưu ý: Khi thực hiện phép toán trên chuỗi với các phím khác nhau, các phím phù hợp sẽ có kết quả của phép toán là giá trị của chúng nhưng các phím không gia công sẽ có giá trị NaN vì sẽ không có kết quả cho các phím này.
khung dữ liệu
Khung dữ liệu có thể được coi là Sê-ri nhưng đối với ma trận. Về cơ bản, một ma trận trong đó các chỉ mục là các khóa và toàn bộ là một cặp khóa-giá trị được gọi là khung dữ liệu.
Bạn có thể tạo khung dữ liệu từ bất kỳ mảng hoặc ma trận nào dưới dạng:
myMatrix = [ [10, 20, 30], [ 100, 200, 300] ]
dataFrame = pd.DataFrame(myMatrix)
Bạn có thể gán các phím cột và hàng là:
myMatrix = [ [ 1, 2, 3],[10, 20, 30], [ 100, 200, 300] ]
hàng = [ “John”, “Jane”, “Sarah” ]
cột = [ “Quần vợt”, “Bóng rổ”, “Bóng bàn”]
dataFrame = pd.DataFrame(myMatrix, index = hàng, cột = cột)
Bạn có thể gọi một cột nhất định từ khung dữ liệu là:
dataFrame[ “Quần vợt” ]
Tuy nhiên, nếu bạn gọi một hàng bằng phím như hình trên, nó sẽ báo lỗi. Bạn có thể gọi một hàng bằng phím là:
dataFrame.loc[“John” ]
Thực tế là có các khóa để gọi cột và hàng không có nghĩa là không có chỉ mục. Giống như trong ma trận, các chỉ mục vẫn tồn tại. Ví dụ, bạn có thể gọi hàng đầu tiên là:
dataFrame.iloc[1] // trả về hàng Jane với các giá trị 2, 20, 200
Bạn có thể thêm một cột mới vào khung dữ liệu dưới dạng:
dataFrame[ “Bóng đá” ] = [ 1000, 2000, 3000]
Ngược lại, bạn có thể xóa một cột hoặc một hàng khỏi khung dữ liệu dưới dạng:
dataFrame.drop(“Football”, axis=1, inPlace=True) // để xóa một cột, bạn phải đặt axis thành 1
dataFrame.drop(“John”, axis=0, inPlace=True) // để xóa một hàng, bạn phải đặt axis thành 0
Lưu ý: Pandas không muốn bạn thay đổi nhầm toàn bộ một cột hoặc một hàng. Có thể bạn đang cố gắng tạo một khung dữ liệu khác và đặt khung dữ liệu cũ bị thiếu một cột thay vì thực sự thay đổi khung dữ liệu cũ? Vì vậy, để đảm bảo rằng bạn đang thực sự thay đổi chính khung dữ liệu, chúng tôi đặt tham số inPlace=True trong hàm.
Bạn có thể gọi một giá trị ô là:
dataFrame.loc[ “John”, “Quần vợt”]
Bạn có thể loại bỏ trong các khung dữ liệu dưới dạng:
dataFrame[ dataFrame[“Quần vợt”] > 5]
// sẽ xóa các hàng có giá trị cột Tennis nhỏ hơn 5, do đó sẽ xóa hàng John
Để thay đổi các chỉ mục trong khung dữ liệu, trước tiên, bạn phải thêm mảng chỉ mục mới dưới dạng cột vào khung dữ liệu cũ. Sau đó, bạn có thể nắm bắt nó theo tên cột và gán các giá trị của nó làm chỉ mục mới như:
dataFrame.set_indexes(“Cột chỉ mục mới”, inPlace=True)
Khung dữ liệu đa chỉ mục trông như thế này trong Excel:
Ở đây có hai chỉ mục cho các hàng, Trái cây & Rau quả VÀ tên sản phẩm. Chúng tôi cũng có thể tạo nhiều chỉ mục như thế này thông qua Pandas. Để làm được điều đó bạn phải:
- Xác định hai danh sách chỉ mục bên ngoài và chỉ mục bên trong, sau đó kết hợp hai danh sách này thành một danh sách tuple uzing và các phương thức zip.
- Sau đó, sử dụng phương thức MultiIndex.from_tuples() để chuyển đổi bộ dữ liệu thành đa chỉ mục.
- Sau đó tạo một danh sách các cột.
- Sau đó, tạo danh sách dữ liệu dưới dạng ma trận và thực sự biến nó thành ma trận bằng phương thức np.array().
- Cuối cùng, sử dụng hàm DataFrame() từ Pandas để tạo khung dữ liệu với nhiều chỉ mục.
outsideIndexes = [ “Rau”, “Rau”, “Trái cây”, “Trái cây”]
innerIndexes = [ “Cà chua”, “Dưa chuột”, “Cam”, “Quả việt quất”]
kết hợp Indexes = danh sách ( zip ( bên ngoài Indexes, bên trong Indexes) )
kết hợp Indexes = pd.MultiIndex.from_tuples (kết hợp Indexes)
listAmountPrice =[ [ 2 USD, 5 lbs], [ 1USD, 3 lbs], [ 2 USD, 3 lbs], [ 3 USD, 2 lbs] ]
numpySeriesAmountPrice = np.array( listAmountPrice )
myColumns = [ “Giá”, “Số tiền” ]
multiIndexDataFrame = pd.DataFrame( numpySeriesAmountPrice, index = kết hợp Indexes, các cột = myColumns)
Và khi đó, bạn có thể gọi số lượng và giá của Blueberries là:
multiIndexDataFrame.loc[ “Trái cây” ].loc[ “Quả việt quất” ]
Bạn cũng có thể đặt tên cho các cột có nhiều chỉ mục như sau:
multiIndexDataFrame.index.names = [ “Lối đi”, “Tên sản phẩm” ]
hoạt động
- Để trả về khung dữ liệu từ khung dữ liệu gốc với các hàng chứa giá trị NaN đã bị xóa:
- Để trả về khung dữ liệu từ khung dữ liệu gốc với các cột chứa giá trị NaN đã bị xóa:
- Để trả về khung dữ liệu từ khung dữ liệu gốc với các hàng chứa nhiều hơn hai giá trị NaN đã bị xóa:
- Để trả về khung dữ liệu từ khung dữ liệu ban đầu với các ô chứa giá trị NaN được thay đổi thành một giá trị nhất định, giả sử, số nguyên 20:
- Để chạy các hoạt động và thu thập dữ liệu về khung dữ liệu dựa trên một cột, bạn nên nhóm khung dữ liệu liên quan đến cột đó bằng cách sử dụng nhóm. Sau đó, bạn có thể thực hiện các thao tác để đếm dữ liệu bên trong, lấy giá trị trung bình của các giá trị, v.v.
group.mean() // lấy giá trị trung bình của các mức lương trong bảng
group.count() // tính toán có bao nhiêu nhân viên nhận được một mức lương nhất định cho mỗi mức lương
group.describe() // mang lại một số kết quả phân tích thống kê như giá trị trung bình, giá trị tối đa và tối thiểu, v.v. cho khung dữ liệu đó so với cột “Lương” được nhóm
- Nếu bạn có hai hoặc nhiều khung dữ liệu có cùng cột, bạn có thể tập hợp chúng lại với nhau (cái này dưới cái kia) như sau:
- Tương tự như vậy, nếu bạn có hai hoặc nhiều khung dữ liệu có cùng hàng, bạn có thể tập hợp chúng lại với nhau (cái này nằm dưới cái kia) như sau:
- Tuy nhiên, nếu bạn đang tìm kiếm hai hoặc nhiều khung dữ liệu với các cột khác nhau, thì bạn nên sử dụng phương pháp hợp nhất như bên dưới. Nhưng hãy nhớ rằng, để có thể làm được điều này, tất cả các khung dữ liệu mà bạn hợp nhất phải có ít nhất một cột chung.
- Bạn chỉ có thể mang các giá trị duy nhất trong một cột trong cơ sở dữ liệu dưới dạng:
- Bạn có thể tính toán có bao nhiêu giá trị duy nhất trong một cột trong khung dữ liệu dưới dạng:
- Bạn có thể xác định hàm và áp dụng hàm đó cho từng giá trị trong khung dữ liệu bằng hàm .apply(). Để giải thích thêm trong một ví dụ:
giá trả về * 1.33 // hàm thêm %33 thuế vào giá gốc
priceDataFrame[ “Price” ].apply( priceWithTax ) // trả về một chuỗi với giá được cập nhật
Excel với gấu trúc
Mặc dù chúng tôi đã làm việc với các khung và chuỗi dữ liệu ở trên, nhưng dữ liệu thực tế rất có thể sẽ được chuyển cho bạn dưới dạng tệp Excel.
Để có thể làm việc với tệp Excel, hãy đảm bảo lưu tệp đó trong cùng thư mục với tệp python của bạn (tệp python mà bạn sẽ chạy các chức năng và hoạt động của Pandas). Sau đó, bạn có thể nhập tệp Excel của mình dưới dạng:
myDataFrame = pd.read_excel(“myExcelFile.xlsx” )
Theo mặc định, các tệp Excel sẽ được nhập dưới dạng loại DataFrame, vì vậy bạn đã sẵn sàng!
Sự kết luận
Có nhiều chức năng được xác định trước khác và cấu trúc dễ sử dụng trong Pandas mà bạn có thể cần tùy thuộc vào nhiệm vụ, nhưng chừng này là đủ để giúp bạn hoàn thành công việc. Nếu bạn đang tìm kiếm một sự nghiệp toàn diện về lĩnh vực này hoặc nếu bạn muốn học thêm, bạn có thể tiếp tục từ các khóa học nâng cao hoặc nghiên cứu khi bạn thấy cần một thứ gì đó khác (thứ gì đó thông minh hơn!) trong khi thực hiện một nhiệm vụ. Pandas có giải pháp cho hầu hết mọi thứ!

![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































