Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Giới thiệu

Python nhanh chóng trở thành người ưa thích & nbsp; ngôn ngữ trong khoa học dữ liệu - và vì lý do chính đáng. Nó cung cấp hệ sinh thái lớn hơn của một ngôn ngữ lập trình và độ sâu của các thư viện tính toán khoa học tốt. Nếu bạn đang bắt đầu học Python, hãy xem con đường học tập trên Python.

Trong số các thư viện tính toán khoa học của nó, tôi thấy gấu trúc là hữu ích nhất cho các hoạt động khoa học dữ liệu. Pandas, cùng với Scikit-Learn cung cấp gần như toàn bộ ngăn xếp cần thiết cho một nhà khoa học dữ liệu. Bài viết này tập trung vào việc cung cấp 12 cách để thao tác dữ liệu trong Python. Tôi cũng đã chia sẻ một số mẹo & thủ thuật cho phép bạn làm việc nhanh hơn.12 ways for data manipulation in Python. I’ve also shared some tips & tricks which will allow you to work faster.

Tôi khuyên bạn nên xem xét các mã để khám phá dữ liệu & nbsp; trước khi tiếp tục. & Nbsp; để giúp bạn hiểu rõ hơn, tôi đã thực hiện một bộ dữ liệu để thực hiện các hoạt động và thao tác này.

Nếu bạn chỉ bắt đầu hành trình khoa học dữ liệu của mình, bạn sẽ yêu thích khóa học ‘Giới thiệu về Khoa học dữ liệu. Nó bao gồm những điều cơ bản của Python, giới thiệu toàn diện về thống kê và một số thuật toán học máy. Một khóa học phải có!

Bộ dữ liệu: Tôi đã sử dụng tập dữ liệu & nbsp; của vấn đề dự đoán cho vay. Tải xuống bộ dữ liệu và bắt đầu. I’ve used the data set of Loan Prediction problem. Download the dataset and get started.

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Bắt đầu nào

Tôi sẽ bắt đầu bằng cách nhập mô -đun Pandas và tải dữ liệu được đặt vào môi trường Python dưới dạng Pandas DataFrame:

import pandas as pd
import numpy as np
data = pd.read_csv("train.csv", index_col="Loan_ID")

#1 - Lập chỉ mục Boolean trong gấu trúc

Bạn làm gì, nếu bạn muốn lọc các giá trị của một cột dựa trên các điều kiện từ một tập hợp các cột khác từ khung dữ liệu gấu trúc? Chẳng hạn, chúng tôi muốn có một danh sách tất cả nữ & nbsp; những người không tốt nghiệp và có một khoản vay. Lập chỉ mục Boolean có thể giúp ở đây. Bạn có thể sử dụng mã sau:females who are not graduates and got a loan. Boolean indexing can help here. You can use the following code:

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Đọc thêm về Lập chỉ mục Boolean trong Pandas tại đây: Lựa chọn và lập chỉ mục của Pandas

#2 - Áp dụng chức năng trong gấu trúc

Đây là một trong những hàm gấu trúc thường được sử dụng để thao tác với khung dữ liệu gấu trúc và tạo các biến mới. Gấu trúc áp dụng chức năng Trả về một số giá trị sau khi chuyển từng hàng/cột của khung dữ liệu với & nbsp; một số hàm. Hàm có thể là cả mặc định hoặc do người dùng xác định. Chẳng hạn, ở đây nó có thể được sử dụng để tìm các giá trị #Missing trong mỗi hàng và cột.

#Create a new function:
def num_missing(x):
  return sum(x.isnull())

#Applying per column:
print "Missing values per column:"
print data.apply(num_missing, axis=0) #axis=0 defines that function is to be applied on each column

#Applying per row:
print "\nMissing values per row:"
print data.apply(num_missing, axis=1).head() #axis=1 defines that function is to be applied on each row

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Vì vậy, chúng tôi nhận được kết quả mong muốn.

Lưu ý: Hàm Pandas Head () được sử dụng trong đầu ra thứ hai vì nó chứa nhiều hàng. Đọc thêm về Pandas Áp dụng tại đây: Tham khảo Pandas (Áp dụng)
Read More about Pandas Apply here: Pandas Reference (apply)

#3 - Bị buộc tội các giá trị bị thiếu bằng gấu trúc

Fillna (), làm điều đó trong một lần. Nó được sử dụng để cập nhật các giá trị bị thiếu với giá trị trung bình/chế độ/trung bình tổng thể của cột. Hãy để Lừa áp đặt các cột giới tính, ‘kết hôn và các cột tự thất nghiệp với các chế độ tương ứng của họ.

#First we import scipy function to determine the mode
from scipy.stats import mode
mode(data['Gender'])

Đầu ra: Moderesult (mode = mảng ([nam nam], dtype = object), Count = mảng ([489]))

Điều này trả về cả chế độ và đếm. Hãy nhớ rằng chế độ có thể là một mảng vì có thể có nhiều giá trị có tần số cao. Chúng tôi sẽ sử dụng cái đầu tiên theo mặc định luôn luôn sử dụng:

mode(data['Gender']).mode[0]

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Bây giờ chúng ta có thể điền vào các giá trị bị thiếu trong dữ liệu DataFrame của Pandas và kiểm tra bằng kỹ thuật số 2.

#Impute the values:
data['Gender'].fillna(mode(data['Gender']).mode[0], inplace=True)
data['Married'].fillna(mode(data['Married']).mode[0], inplace=True)
data['Self_Employed'].fillna(mode(data['Self_Employed']).mode[0], inplace=True)

#Now check the #missing values again to confirm:
print data.apply(num_missing, axis=0)

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Do đó, người ta đã xác nhận rằng các giá trị bị thiếu trong khung dữ liệu gấu trúc được buộc tội. Xin lưu ý rằng đây là hình thức nguyên thủy nhất của việc cắt bỏ. Các kỹ thuật tinh vi khác bao gồm mô hình hóa các giá trị bị thiếu, sử dụng trung bình được nhóm (trung bình/chế độ/trung bình). Tôi sẽ bao gồm phần đó trong các bài viết tiếp theo của tôi.

Đọc thêm về việc buộc các giá trị bị thiếu trong Pandas DataFrame TẠI ĐÂY: Tham khảo Pandas (Fillna)

#4 - Bàn xoay trong gấu trúc

Gấu trúc có thể được sử dụng để tạo bảng trục kiểu MS Excel. Chẳng hạn, trong trường hợp này, một cột chính là Loan Loanamount, có các giá trị bị thiếu. Chúng ta có thể áp dụng nó bằng cách sử dụng số lượng trung bình của mỗi ‘giới tính,‘ kết hôn và ‘nhóm tự loan. Có thể xác định trung bình ‘Loanamount của mỗi nhóm trong Pandas DataFrame có thể được xác định là:

#Determine pivot table
impute_grps = data.pivot_table(values=["LoanAmount"], index=["Gender","Married","Self_Employed"], aggfunc=np.mean)
print impute_grps

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Đọc thêm về bảng Pivot Pivot ở đây: Tham khảo Pandas (Bảng Pivot)

#5-Đa chỉ số trong Pandas DataFrame

Nếu bạn nhận thấy đầu ra của bước #3, nó có một thuộc tính lạ. Mỗi chỉ số gấu trúc được tạo thành từ sự kết hợp của 3 giá trị. Điều này được gọi là đa chỉ số. Nó giúp thực hiện các hoạt động thực sự nhanh chóng.

Tiếp tục ví dụ từ #3, chúng tôi có các giá trị cho mỗi nhóm nhưng chúng chưa được & nbsp; bị buộc tội. Điều này có thể được thực hiện bằng cách sử dụng các kỹ thuật khác nhau từ gấu trúc đã học cho đến bây giờ.
This can be done using the various techniques from pandas learned till now.

#iterate only through rows with missing LoanAmount
for i,row in data.loc[data['LoanAmount'].isnull(),:].iterrows():
  ind = tuple([row['Gender'],row['Married'],row['Self_Employed']])
  data.loc[i,'LoanAmount'] = impute_grps.loc[ind].values[0]

#Now check the #missing values again to confirm:
print data.apply(num_missing, axis=0)

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Note:

  1. Đa chỉ số yêu cầu tuple để xác định các nhóm chỉ số trong câu lệnh PANDAS LỘC. Đây là một tuple được sử dụng trong chức năng.
  2. Hậu tố .Values ​​[0] được yêu cầu bởi vì, theo mặc định, một phần tử sê -ri được trả về, có một chỉ mục không khớp với khung dữ liệu gấu trúc. Trong trường hợp này, một gán trực tiếp đưa ra một lỗi.

#6. Pandas crosstab

Chức năng này là & nbsp; được sử dụng để có được cảm giác ban đầu (xem) dữ liệu. Ở đây, chúng ta có thể xác nhận một số giả thuyết cơ bản. Chẳng hạn, trong trường hợp này, Credit Credit_History dự kiến ​​sẽ ảnh hưởng đáng kể đến tình trạng cho vay. Điều này có thể được kiểm tra bằng cách sử dụng tài sản chéo như hình dưới đây:

pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True)

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Đây là những con số tuyệt đối. Nhưng, tỷ lệ phần trăm có thể trực quan hơn trong việc tạo ra một số hiểu biết nhanh. Chúng ta có thể làm điều này bằng cách sử dụng chức năng áp dụng gấu trúc:

def percConvert(ser):
  return ser/float(ser[-1])
  pd.crosstab(data["Credit_History"],data["Loan_Status"],margins=True).apply(percConvert, axis=1)

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Bây giờ, rõ ràng là những người có lịch sử tín dụng có cơ hội nhận khoản vay cao hơn nhiều vì 80% người có lịch sử tín dụng có khoản vay so với chỉ 9% không có lịch sử tín dụng.

Nhưng đó không phải là nó. Nó kể một câu chuyện thú vị. Vì tôi biết rằng có một lịch sử tín dụng là siêu quan trọng, điều gì sẽ xảy ra nếu tôi dự đoán tình trạng cho vay là y cho những người có lịch sử tín dụng và n. Đáng ngạc nhiên, chúng tôi sẽ đúng 82+378 = 460 lần trong số 614, đó là một con số khổng lồ 75%!

Tôi đã giành được sự đổ lỗi cho bạn nếu bạn đang tự hỏi tại sao chúng ta cần những mô hình thống kê. Nhưng hãy tin tôi, tăng độ chính xác thậm chí 0,001% so với điểm này là một nhiệm vụ đầy thách thức. Bạn sẽ thực hiện thử thách này?

Lưu ý: 75% là trên bộ tàu. Các bộ kiểm tra sẽ hơi khác nhau nhưng gần. Ngoài ra, tôi hy vọng điều này sẽ cung cấp một số trực giác về lý do tại sao thậm chí độ chính xác tăng 0,05% có thể dẫn đến việc tăng 500 cấp bậc trên bảng xếp hạng & NBSP; Kaggle. 75% is on train set. The test set will be slightly different but close. Also, I hope this gives some intuition into why even a 0.05% increase in accuracy can result in jump of 500 ranks on the Kaggle leaderboard.

Đọc thêm về chức năng pandas crosstab tại đây: Tham khảo Pandas (Crosstab)

#7 - Hợp nhất các khung dữ liệu gấu trúc

Hợp nhất các khung dữ liệu gấu trúc trở nên cần thiết khi chúng ta có thông tin đến từ các nguồn khác nhau sẽ được đối chiếu. Hãy xem xét một trường hợp giả thuyết trong đó tỷ lệ tài sản trung bình (INR trên mét vuông) có sẵn cho các loại tài sản khác nhau. Hãy để định nghĩa một dữ liệu gấu trúc như:

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
0

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Bây giờ chúng ta có thể hợp nhất thông tin này với DataFrame Pandas gốc như:

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
1

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Bảng Pivot xác nhận hoạt động hợp nhất thành công. Lưu ý rằng đối số ‘giá trị không liên quan ở đây vì chúng tôi chỉ đơn giản là đếm các giá trị.

Readmore: Tham khảo Pandas (Merge)

#8 - Sắp xếp các khung dữ liệu gấu trúc

Gấu trúc cho phép dễ dàng phân loại dựa trên nhiều cột. Điều này có thể được thực hiện như:

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
2

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

LƯU Ý: Chức năng sắp xếp Pandas sắp xếp hiện tại không được dùng. Thay vào đó, chúng ta nên sử dụng các loại sort_values.

Thêm: Tham khảo gấu trúc (sort_values)

#9 - Âm mưu (Boxplot & Biểu đồ) với gấu trúc

Nhiều người trong số các bạn có thể không biết rằng Boxplots và biểu đồ có thể được vẽ trực tiếp trong gấu trúc và gọi riêng là không cần thiết. Nó chỉ là một lệnh 1 dòng. Chẳng hạn, nếu chúng ta muốn so sánh phân phối applicantincome bằng loan_status:

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
3

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
4

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Điều này cho thấy thu nhập không phải là một yếu tố quyết định lớn vì không có sự khác biệt đáng kể giữa những người nhận được và bị từ chối khoản vay.

Tìm hiểu thêm về biểu đồ Pandas & Pandas Boxplot tại đây: Tham khảo Pandas (Hist) | Tham khảo gấu trúc (Boxplot)

#10 - Cắt chức năng cho Binning

Đôi khi các giá trị số có ý nghĩa hơn nếu tập hợp lại với nhau. Ví dụ: nếu chúng tôi cố gắng mô hình hóa lưu lượng truy cập (#Cars trên đường) theo thời gian trong ngày (phút). Phút chính xác của một giờ có thể không phù hợp để dự đoán giao thông so với thời gian thực tế trong ngày như buổi sáng, buổi chiều, buổi tối, buổi tối, đêm, đêm muộn. Mô hình hóa lưu lượng truy cập theo cách này sẽ trực quan hơn và sẽ tránh quá mức.

Ở đây chúng tôi xác định một chức năng đơn giản có thể được sử dụng lại để tạo ra bất kỳ biến nào khá dễ dàng.

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
5

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Đọc thêm về chức năng cắt gấu trúc ở đây: Tham khảo Pandas (CUT)

#11 - Mã hóa dữ liệu danh nghĩa sử dụng gấu trúc

Thông thường, chúng tôi tìm thấy & nbsp; một trường hợp mà chúng tôi đã sửa đổi các loại của một biến danh nghĩa. Điều này có thể là do nhiều lý do:

  1. Một số thuật toán (như hồi quy logistic) yêu cầu tất cả các đầu vào phải là số. Vì vậy, các biến danh nghĩa chủ yếu được mã hóa là 0, 1. (N-1)
  2. Đôi khi một thể loại có thể được thể hiện theo 2 cách. Ví dụ: Nhiệt độ có thể được ghi lại dưới dạng cao cấp, trung bình, trung bình, mức thấp ,, Ở đây, cả hai phần cao của người Viking và người Hiêu đề cập đến cùng một thể loại. Tương tự như vậy, trong nhóm Low Low và và Low Low, chỉ có một sự khác biệt về trường hợp. Nhưng, Python sẽ đọc chúng như các cấp độ khác nhau.
  3. Một số loại có thể có tần số rất thấp và nói chung là một ý tưởng tốt để kết hợp chúng.

Ở đây, tôi đã xác định một hàm chung lấy đầu vào làm từ điển và mã hóa các giá trị bằng cách sử dụng hàm thay thế chức năng trong gấu trúc.

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
6

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Số lượng tương tự trước và sau khi chứng minh mã hóa.

Đọc thêm về chức năng thay thế gấu trúc ở đây: Tham khảo Pandas (thay thế)

#12 - Lặp đi lặp lại trên các hàng của Pandas DataFrame

Đây không phải là một hoạt động gấu trúc thường được sử dụng. Tuy nhiên, bạn không muốn bị mắc kẹt. Đúng? Đôi khi bạn có thể cần lặp lại thông qua tất cả các hàng của một khung dữ liệu gấu trúc bằng cách sử dụng một vòng lặp. Ví dụ, một vấn đề phổ biến mà chúng ta gặp phải là điều trị không chính xác các biến trong Python. Điều này thường xảy ra khi:

  1. Các biến danh nghĩa với các loại số được coi là số.
  2. Các biến số với các ký tự được nhập trong một trong các hàng (do lỗi dữ liệu) được coi là phân loại.

Vì vậy, nó nói chung là một ý tưởng tốt để xác định thủ công các loại cột. Nếu chúng ta kiểm tra các loại dữ liệu của tất cả các cột:

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
7

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Ở đây chúng ta thấy rằng Credit_history là một biến danh nghĩa nhưng xuất hiện dưới dạng float. Một cách tốt để giải quyết các vấn đề như vậy & nbsp; là tạo một tệp CSV với tên và loại cột. Bằng cách này, chúng ta có thể tạo một hàm chung để đọc tệp và gán các loại dữ liệu cột. Chẳng hạn, ở đây tôi đã tạo A & NBSP; CSV File DataTypes.csv.

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
8

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Sau khi tải tệp này, chúng tôi có thể lặp qua từng hàng và gán kiểu dữ liệu bằng cách sử dụng cột ‘loại, cho tên biến được xác định trong cột‘ tính năng.

data.loc[(data["Gender"]=="Female") & (data["Education"]=="Not Graduate") & (data["Loan_Status"]=="Y"), ["Gender","Education","Loan_Status"]]
9

Hướng dẫn data manipulation in python pandas - thao tác dữ liệu trong python pandas

Bây giờ cột Lịch sử tín dụng được sửa đổi thành loại đối tượng, được sử dụng để thể hiện các biến danh nghĩa trong gấu trúc. Đọc thêm về Pandas ITERROWS tại đây: Tham khảo Pandas (ITERROWS)
Read More about Pandas iterrows here: Pandas Reference (iterrows)

Dự án

Bây giờ, đã đến lúc phải lao vào và thực sự chơi với một số bộ dữ liệu thực khác và kiểm tra việc học của bạn trong gấu trúc. Vì vậy, bạn đã sẵn sàng để thực hiện thử thách? Tăng tốc hành trình khoa học dữ liệu của bạn với các vấn đề thực hành sau:

Ghi chú kết thúc

Trong bài viết này, chúng tôi đã đề cập đến các chức năng khác nhau của gấu trúc có thể giúp cuộc sống của chúng tôi dễ dàng trong khi thực hiện khám phá dữ liệu và kỹ thuật tính năng. Ngoài ra, chúng tôi đã xác định một số chức năng chung có thể được sử dụng lại để đạt được mục tiêu tương tự trên các bộ dữ liệu khác nhau.

Cũng xem: Nếu bạn có bất kỳ nghi ngờ nào liên quan đến gấu trúc hoặc python nói chung, vui lòng thảo luận với chúng tôi.: If you have any doubts pertaining to Pandas or Python in general, feel free to discuss with us.

Bạn có thấy bài viết hữu ích không? Bạn có sử dụng một số kỹ thuật tốt hơn (dễ/nhanh hơn) để thực hiện các nhiệm vụ được thảo luận ở trên không? Bạn có nghĩ rằng có những lựa chọn thay thế tốt hơn cho gấu trúc trong Python? Chúng tôi sẽ rất vui nếu bạn chia sẻ suy nghĩ của bạn như những bình luận dưới đây.

Nếu bạn thích những gì bạn chỉ đọc và muốn tiếp tục học phân tích của bạn, & nbsp; đăng ký email của chúng tôi, & nbsp; hãy theo dõi chúng tôi trên Twitter & nbsp; hoặc như của chúng tôi & nbsp; trang facebook & nbsp; trang.analytics learning, subscribe to our emails, follow us on twitter or like our facebook page.

Thao tác dữ liệu bằng cách sử dụng Python là gì?

Thao tác dữ liệu với Python được định nghĩa là một quá trình trong ngôn ngữ lập trình Python cho phép người dùng trong tổ chức dữ liệu để đọc hoặc giải thích những hiểu biết từ dữ liệu có cấu trúc hơn và bao gồm thiết kế tốt hơn.

Python có tốt cho thao tác dữ liệu không?

Nó là tuyệt vời để phân tích dữ liệu và xử lý dữ liệu. Pandas cung cấp kiểm soát thao tác dữ liệu. Numpy là một thư viện miễn phí cho điện toán số. Nó cung cấp các chức năng toán học cấp cao cùng với các thao tác dữ liệu.Pandas provides data manipulation control. NumPy is a free library for numerical computing. It provides high-level math functions along with data manipulations.

Những lợi thế chính của gấu trúc trong thao tác dữ liệu là gì?

1.1.Sự miêu tả dữ liệu.Gấu trúc cung cấp các hình thức biểu diễn dữ liệu cực kỳ hợp lý.....
1.2.Ít viết và nhiều công việc hơn.....
1.3.Một bộ các tính năng rộng lớn.....
1.4.Xử lý hiệu quả dữ liệu lớn.....
1.5.Làm cho dữ liệu linh hoạt và có thể tùy chỉnh.....
1.6.Được làm cho Python ..

Kỹ thuật thao tác dữ liệu là gì?

9 kỹ thuật thao tác dữ liệu phổ biến được thảo luận là:..
Lọc ..
Sắp xếp ..
Nhóm ..
Xoay vòng ..
Chuyển đổi ..
Thay đổi loại dữ liệu ..
Thêm các cột và hàng ..
Đặt tên cột hoặc hàng ..