Khung dữ liệu trong python
Thư viện pandas python là gì? . Hãy cùng tôi đi tìm câu trả lời cho các câu hỏi trên trong bài viết hôm nay. Tôi tin rằng đây là một bài viết cực kỳ hữu ích. Nó chắc chắn sẽ trả lại cho bạn nhiều kiến thức bổ sung và làm chủ theo cách sử dụng thư viện này Show
Toàn bộ source code direction của bài học các bạn có thể xem và tải về tại đây NỘI DUNG BÀI VIẾT Thư viện pandas python là gì?Thư viện pandas trong python là thư viện mã nguồn mở, hỗ trợ đắc lực trong thao tác dữ liệu. Đây cũng là bộ công cụ phân tích và xử lý dữ liệu mạnh mẽ của ngôn ngữ lập trình python. 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. Thư viện này sử dụng cấu trúc dữ liệu riêng là Dataframe. Pandas cung cấp rất nhiều chức năng xử lý và xử lý trên cấu trúc dữ liệu này. Chính sự linh hoạt và hiệu quả đã khiến pandas được sử dụng rộng rãi In sao lại sử dụng pandas thư viện?
Để cài đặt thư viện Pandas, bạn có thể làm theo một số cách khác nhau theo hướng dẫn tài liệu
Bây giờ chúng ta sẽ bắt đầu học cách sử dụng thư viện pandas python. Nhưng trước khi bắt đầu, hãy nhập thư viện pandas nhé. Chúng ta sẽ sử dụng cả thư viện matplotlib nữa Nếu bạn chưa biết về thư viện matplotlib, hãy đọc trước nhé 1 2 3 4 5 6 # Kết xuất các ô của chúng tôi trong dòng %matplotlib inline
nhập gấu trúc as pd nhập matplotlib. pyplot as plt nhập ngẫu nhiên Đọc tệp csv sử dụng thư viện pandasĐọc tệp csv vào khung dữ liệuBạn có thể dễ dàng đọc vào một tập tin. csv bằng cách sử dụng hàm 1 peoples_df = pd. read_csv('. /mọi người. csv') Bạn có thể ra bản ghi đầu tiên của khung dữ liệu bằng cách sử dụng hàm 1 Peoples_df. đầu(5) And results in the format as after read file csv using pandas libraryTuy nhiên, bạn cũng sẽ phải lưu ý một vài tham số của hàm
1 2 peoples_df = pd. read_csv('. /mọi người. csv', mã hóa='utf-8', header=None, sep=',') Peoples_df. đầu(5) Khi tôi chỉ định không có tiêu đề, dòng tiêu đề của chúng tôi đã biến thành 1 bản ghi dữ liệu Bạn đọc có thể xem mô tả đầy đủ từng tham số của hàm Thao tác với dataframe trong pandasKhi bạn đọc tệp csv ở phía trên, Thư viện pandas python cung cấp rất nhiều hàm hữu ích cho phép bạn thao tác với đối tượng dữ liệu dataframe này. Hãy cùng tôi đi khám phá sự thật hay ho này nhé See information of dataframeBạn có thể xem thông tin của khung dữ liệu vừa đọc bằng cách sử dụng hàm 1 2 3 4 5 6 # Xem chiều dài của df, hình dạng tương đương[0] in('Len. ', len(peoples_df)) # Viewed dataframe dataframe vừa đọc được Peoples_df. thông tin() # View size of dataframe in('Hình dạng. ', peoples_df. hình dạng) Và đây là những gì chúng ta sẽ thấy 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Len. 40 <lớp 'gấu trúc. cốt lõi. khung. DataFrame'> Chỉ số phạm vi. 40 bài viết, 0 đến 39 Dữ liệu cột (tổng 11 columns): người_ ID 40 non-null int64 tên 40 không-null object đầu tiên 40 không-null object lần cuối 40 không-null object trung bình 15 không-null object email 40 không-null object điện thoại 40 không-null object fax 40 không-null object tiêu đề 40 không-null object tuổi 40 không-null int64 là_ trẻ 40 non-null bool dtypes. bool(1), int64(2), object(8) bộ nhớ việc sử dụng. 3. 2+ KB Hình dạng. (40, 11) Truy xuất dữ liệu trên dataframeGet 1 column by name columnTo only column you want to get, you only to transfer to the column name as after 1 peoples_df['name'] get 1 column of dataframe used pandas pythonGet by many columnThay vì truyền vào 1 chuỗi thì hãy truyền vào 1 danh sách các cột tên. Mình thêm 1 peoples_df[['name', 'age']].đầu(5) get many column in dataframeGet the write table by numberĐể lấy hoặc nhiều bản ghi liên tiếp trong khung dữ liệu, sử dụng cơ chế trượt theo số giống như trên danh sách trong python. Nhận 5 bản ghi đầu tiên 1 Peoples_df[0. 5] Trong trường hợp này, kết quả giống như hàm head on. Mũi tên là khoảng 5 bản ghi đầu tiên Bạn cũng có thể kết hợp lấy theo hàng và cột mong muốn 1 peoples_df[['name', 'age']][:5] Nhận các bản ghi theo điều kiện1 2 young_pp = Peoples_df[Peoples_df['age'] < 25] young_pp[. 5] get the dataframe ghi theo điều kiệnMột ví dụ khác. Lấy tất cả các bản ghi chứa thông tin của người có chức danh là giáo sư 1 2 giáo sư = Peoples_df[Peoples_df.chức danh == 'Giáo sư'] giáo sư. đầu(5) Hoặc 1 ví dụ so sánh chuỗi như sau 1 2 name_compare = peoples_df['name'].str. chứa('Rosella') tên_so sánh. đầu(5) Kết quả thu được là một khung dữ liệu có 1 cột chưa 2 giá trị Đúng hoặc Sai 1 2 3 4 5 6 0 Đúng 1 Sai 2 Sai 3 Sai 4 Sai Tên. tên, dtype. bool Get the return value for numpy arraysĐể lấy giá trị của một cột trả về dưới dạng mảng numpy trong thư viện pandas python, bạn chỉ cần thêm 1 peoples_df['name']. giá trị Output you get as after 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 mảng(['Burks, Rosella ', 'Avila, Damien ', 'Olsen, Robin ', 'Moises, Edgar Estes', 'Brian, Heath Pruitt', 'Claude, Elvin Haney', 'Mosley, Edmund ', 'Derek, Antoine Mccoy', 'Hawkins, Callie ', 'Pate, Andrea ', 'Austin, Liz ', 'Kendrick, Reba Alford', 'Sims, Angelina ', 'Mullins, Kimberly ', 'Chuck, Lloyd Haney', 'Payne, Ladonna ', 'Baxter, Johnathan Browning', 'Weiss, Gilbert ', 'Deirdre, Florence Barrera', 'Fernando, Toby Calderon', 'Garrison, Patrica ', 'Effie, Leila Vinson', 'Buckley, Rose ', 'Stanton, Kathie ', 'Banks, Shannon ', 'Barnes, Cleo ', 'Brady, Nellie ', 'Katheryn, Ruben Holt', 'Michael, Dianne ', 'Grant, Adam ', 'Head, Kurtis ', 'Berger, Jami ', 'Earline, Jaime Fitzgerald', 'Evelyn, Summer Frost', 'Quentin, Sam Hyde', 'Dunlap, Ann ', 'Shields, Rich Pena', 'Page, Winnie ', 'Sparks, Ezra ', 'Kaufman, Elba '], dtype=object) Nếu bạn quan tâm đến mảng numpy, hãy đọc bài viết hướng dẫn về numpy của tôi Thêm, sửa, xóa trong dataframeAdd column from new dataTo add column to a dataframe available. Trước tiên, bạn cần có 1 Ở đây, tôi sẽ sử dụng thư viện ngẫu nhiên để sinh ngẫu nhiên một danh sách năm sinh và thêm vào khung dữ liệu như sau 1 2 3 4 df_len = len(peoples_df) sinh nhật = [ngẫu nhiên. sắp xếp(1980, 2000, 1) for i in range(df_len)] Peoples_df['sinh nhật'] = birthday Peoples_df. đuôi(5) thêm cột vào khung dữ liệu pandas pythonAdd column based on the data has beenGiả sử ở đây mình muốn thêm cột 1 2 Peoples_df['is_young'] = peoples_df['age'] < 25 Peoples_df. đầu(5) thêm cột vào pandas khung dữ liệuKhởi tạo cột mới có giá trị trốngSử dụng cú pháp đơn giản như dưới đây, bạn sẽ có một trường mới và tất cả các giá trị là Không có 1 Peoples_df['new_column'] = None Thêm bản ghi trong khung dữ liệuVề vấn đề bổ sung bản ghi, chúng tôi thường ít khi sử dụng nên tôi sẽ không trình bày. Bạn đọc quan tâm có thể đọc thêm tại tài liệu này Edit the value of the columnĐể sửa giá trị của 1 cột, bạn làm tương tự như thêm cột mới. Nhưng khác với vị trí được thêm vào là tên cột bạn truyền vào đã có trong khung dữ liệu. Còn nữa là 1 tên trường mới hoàn toàn chưa có. Không hạn chế, bạn muốn thay đổi tên trường, bạn chỉ cần làm như sau 1 2 3 peoples_df['name'] = xxx #list các tên mới có chiều dài bằng chiều dài của dataframe // Hoặc đặt lại tên trường về Không có peoples_df['name'] = None Delete the column in dataframeYou can't use a in the way after 1 2 3 Peoples_df. drop('tên cột cần xóa', axis=1) # Xóa 1 cột Peoples_df. thả(['cột 1', 'cột 2'], axis=1) # Xóa nhiều cột df. thả(cột=['B', 'C']) # Xóa các cột có tên là B và C Delete the write by numbercon trăn1 Peoples_df. thả([0, 1]) # Xóa bản ghi ở chỉ số 1 và 2 Hiểu dữ liệu trong dataframeThư viện pandas python cung cấp cho bạn một số hàm giúp bạn hiểu về cấu trúc, phân bố của dữ liệu. Dưới đây là cách để bạn khám phá và hiểu dữ liệu của mình Tôi đã bổ sung trường 1 peoples_df['tuổi'] 1 2 3 4 5 6 7 8 9 10 11 12 0 25 1 23 2 21 3 18 4 30 5 35 . . . 38 25 39 25 Tên. tuổi, dạng. int64 Sử dụng hàm 1 Peoples_df. mô tả() xem data data trong dataframeXem cụ thể hơn trên từng cột như sau 1 peoples_df['tuổi']. value_counts() 1 2 3 4 5 6 7 8 9 10 11 25 21 28 6 35 3 29 2 23 2 22 2 30 1 24 1 21 1 18 1 Tên. tuổi, dạng. int64 Bạn cũng có thể vẽ đồ thị để xem phân bố giá trị của một trường trong khung dữ liệu như sau 1 peoples_df['tuổi']. value_counts(). cốt truyện(tử tế=') Tạo khung dữ liệu mớiCó một vài cách để tạo ra dataframe trong thư viện pandas python. Bạn có thể sử dụng cách mà bạn cho là dễ sử dụng, đôi khi cũng phải tùy chọn vào trường hợp mà nên chọn cách nào từng lần nữa Tạo khung dữ liệu mới từ từ điển python con trăn1 2 3 người = {'tên'. ['Nguyễn Văn Hiếu', 'Hiếu Nguyễn Văn'], 'age': [28, 28] . , 'website': ['https. //nguyenvanhieu. vn', Không]} df = pd. Khung dữ liệu(người) in(df) You will have 1 dataframe as after 1 2 3 tên tuổi trang web 0 Nguy ễ n Văn Hiếu 28 https://nguyenvanhieu. vn 1 Chào ế u Nguyễn Văn 28 None Lưu ý. list of each key in dictionary must have the same size Tạo khung dữ liệu mới từ danh sách python 1 2 3 4 5 6 txts = ['chỗ này ăn cũng khá ngon', 'ngon, nhất định sẽ quay lại', 'thái độ phục vụ quá tệ'] nhãn = [1, 1, 0] df = pd. Khung dữ liệu() df['txt'] = txts df['nhãn'] = labels in(df) You will get dataframe as after 1 2 3 4 txt nhãn 0 ch ỗ này ăn cũng khá ngon 1 1 ngon, nhất định sẽ quay lại 1 2 th á i độ phục vụ quá tệ 0 Lưu ý. danh sách này phải có cùng kích thước Một số thao tác khác trên khung dữ liệuSắp xếp khung dữ liệuVới thư viện pandas python, bạn có thể sắp xếp dataframe tăng dần, hoặc giảm dần theo 1 hoặc nhiều cột chỉ định 1 2 3 4 5 # Sắp xếp df tăng dần theo cột nào đó df = pd. Khung dữ liệu({'name': ['Nam', 'Hiếu', 'Mai', 'Hoa'], 'age': [18,18,17,19]}) in('Trước khi sắp xếp\n', df) df = df. sort_values('tuổi', ascending=True) in('Sau khi sắp xếp\n', df) Kết quả in ra được như sau 1 2 3 4 5 6 7 8 9 10 11 12 Trước sắp xếp tên tuổi 0 Nam 18 1 Chào ế u 18 2 Mai 17 3 Hòa 19 Sau sắp xếp tên tuổi 2 Mai 17 0 Nam 18 1 Chào ế u 18 3 Hòa 19 Bạn có thể sắp xếp theo nhiều cột có mức độ ưu tiên giảm dần, bằng cách truyền vào danh sách cột tên. Ví dụ Kết nối 2 khung dữ liệuBạn có thể kết nối 2 dataframe thành 1 dataframe mới bằng cách sử dụng hàm 1 2 3 4 5 # Gộp 2 dataframe df1 = pd. Khung dữ liệu({'name': ['Hiếu'], 'age': [18], ' . : ['nam']}) df2 = pd. Khung dữ liệu({'name': ['Nam', 'Mai', 'Hoa'], 'age': [15,17,19]}) df = df1. chắp thêm(df2, sắp xếp=True) in(df) Kết quả 1 2 3 4 5 tuổi giới tính tên 0 18 nam Hiếu 0 15 NaN Nam 1 17 NaN Mai 2 19 NaN Hoa Xoá các bản ghi trong khung dữ liệuTrong xử lý dữ liệu, bạn chắc chắn sẽ cần đến công việc trộn dữ liệu. Rất có thể, pandas thư viện có thể giúp chúng tôi làm việc đó 1 2 3 4 5 # Xáo trộn các hàng trong df - xáo trộn các hàng trong khung dữ liệu df = pd. Khung dữ liệu({'name': ['Hiếu', 'Nam', 'Mai', 'Hoa'], 'age': [18,15,17,19]}) in('Trước khi xáo trộn\n', df) df = df. mẫu(frac=1 . ).reset_index(drop=True) in('Sau khi xáo trộn\n', df) Kết quả(Có thể khác nhau nhé – xáo trộn mà) 1 2 3 4 5 6 7 8 9 10 11 12 Trước xáo bài tên tuổi 0 Chào ế u 18 1 Nam 15 2 Mai 17 3 Hòa 19 Sau xáo bài tên tuổi 0 Mai 17 1 Nam 15 2 Chào ế u 18 3 Hòa 19 Giải thích thêm
Save dataframe về file csvThư viện pandas python cho phép bạn lưu lại khung dữ liệu chỉ với một dòng mã. Quá đơn giản phải không? 1 df. to_csv('nhận xét. csv') You can open file to view results save lưu khung dữ liệu vào tệp csvTham số của hàm Tới đây mình xin kết thúc bài hướng dẫn về thư viện pandas python. Qua bài viết này, tôi tin chắc rằng bạn đã có những kiến thức cần thiết và có thể làm chủ thư viện pandas trong python. Bạn cũng có thể xem ví dụ thực tế sử dụng thư viện này tại bài viết code thuật toán hồi quy tuyến tính này Tôi ưu tiên bộ nhớ khi sử dụng pandasMục này mình đọc từ bài viết của Anh Lê Huỳnh Đức trên Diễn đàn machinelearningcoban, xin được trích dẫn lại con trăn1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 nhập numpy as np # đại số tuyến tính nhập gấu trúc as pd # xử lý dữ liệu, CSV . g. pd. read_csv)
def reduce_mem_usage(df): """ lặp qua tất cả các cột của khung dữ liệu và sửa đổi loại dữ liệu để giảm sử dụng bộ nhớ. """ start_mem = df. sử dụng bộ nhớ(). tổng() / 1024**2 in('Mức sử dụng bộ nhớ của khung dữ liệu là {. 2f} MB'. định dạng(start_mem))
cho col trong df.cột. col_type = df[col].dtype
if col_type . = đối tượng và col_type. tên . = 'danh mục' và 'ngày giờ' không in col_type.tên. c_min = df[col].phút() c_max = df[col].tối đa() if str(col_type)[:3] == 'int': if c_min > np.iinfo(np. int8). phút và c_max < np . .iinfo(np. int8). tối đa. df[col] = df[col].astype(np. int8) elif c_min > np.iinfo(np. int16). phút và c_max < np . .iinfo(np. int16). tối đa. df[col] = df[col].astype(np. int16) elif c_min > np.iinfo(np. int32). phút và c_max < np . .iinfo(np. int32). tối đa. df[col] = df[col].astype(np. int32) elif c_min > np.iinfo(np. int64). phút và c_max < np . .iinfo(np. int64). tối đa. df[col] = df[col].astype(np. int64) else. if c_min > np.finfo(np. float16). phút và c_max < np . .finfo(np. float16). tối đa. df[col] = df[col].astype(np. float16) elif c_min > np.finfo(np. float32). phút và c_max < np . .finfo(np. float32). tối đa. df[col] = df[col].astype(np. float32) khác. df[col] = df[col].astype(np. float64) elif 'datetime' not in col_type.tên. df[col] = df[col].astype('category')
end_mem = df. sử dụng bộ nhớ(). tổng() / 1024**2 in('Mức sử dụng bộ nhớ sau khi tối ưu hóa là. {. 2f} MB'. định dạng(end_mem)) in('Đã giảm bởi {. 1f}%'. định dạng(100 * (start_mem - end_mem) / start_mem))
return df Run try 1 2 3 4 5 đào tạo = pd. read_csv('. /đầu vào/đào tạo. csv') kiểm tra = pd. read_csv('. /đầu vào/kiểm tra. csv') sub = pd. read_csv('. /input/sample_submission. csv') đào tạo = reduce_mem_usage(đào tạo) kiểm tra = reduce_mem_usage(kiểm tra) Tài liệu tham khảo
Nguyễn Văn Hiếu Sáng lập cộng đồng Lập Trình Không Khó với mong muốn giúp đỡ các bạn trẻ trên con đường trở thành những lập trình viên tương lai. Tất cả những gì tôi viết ra đây chỉ đơn giản là cơ sở thích ghi lại các kiến thức mà tôi tích lũy được |