Mục lụcThư viện pandas là gì?...Cài đặt Pandas...Giới thiệu qua về matplotlib...Bắt đầu với Pyplot...Tạo một biểu đồ đơn giản...Nhiều biểu đồ trong 1 figure...Tạo các loại biểu đồ khác n
Trang 2Mục lục
Pandas
Thư viện pandas là gì?
Cài đặt Pandas
Giới thiệu qua về matplotlib
Bắt đầu với Pyplot
Tạo một biểu đồ đơn giản
Nhiều biểu đồ trong 1 figure
Tạo các loại biểu đồ khác nhau với Pyplot
Đọc file csv sử dụng thư viện pandas
Thao tác với dataframe trong pandas
Xem thông tin của dataframe
Truy xuất dữ liệu trên dataframe
Giới thiệu qua về Numpy Array
Arrays
Array indexing
Datatypes
Array math
Broadcasting
Thêm, sửa, xóa trong dataframe
Hiểu dữ liệu trong dataframe
Tạo mới dataframe
Tạo mới dataframe từ python dictionary
Tạo mới dataframe từ các python list
Một số thao tác khác trên dataframe
Sắp xếp dataframe
Nối 2 dataframe
Xáo trộn các bản ghi trong dataframe
Lưu dataframe về file csv
Tổng kết
Tài nguyên lập trình
Hỗ trợ tư vấn, định hướng
Trang 3LỜI MỞ ĐẦU
Chào mừng đến với tài liệu về thư viện Pandas trong phân tích dữ liệu! Pandas làmột trong những thư viện quan trọng nhất trong lĩnh vực này, cho phép chúng tathao tác với dữ liệu một cách linh hoạt và hiệu quả hơn Với Pandas, chúng ta cóthể đọc và ghi dữ liệu từ nhiều nguồn khác nhau, xử lý và phân tích dữ liệu mộtcách dễ dàng, và thực hiện nhiều loại biểu đồ và trực quan hóa để hiểu rõ hơn về
dữ liệu của mình
Trong tài liệu này, chúng ta sẽ tìm hiểu về các khái niệm cơ bản trong Pandas, baogồm Pyplot, Arrays, Datatypes… và các phương pháp thao tác và xử lý dữ liệuthông qua các ví dụ cụ thể Bên cạnh đó, chúng ta cũng sẽ đề cập đến các chủ đềliên quan như tải dữ liệu từ các nguồn khác nhau, trực quan hóa dữ liệu và xử lý dữliệu bị thiếu
Tài liệu này được thiết kế để giúp bạn có một sự hiểu biết tổng quan về thư việnPandas và cách sử dụng nó để phân tích dữ liệu một cách hiệu quả Nếu bạn là mộtnhà phân tích dữ liệu hoặc một nhà khoa học dữ liệu mới bắt đầu với Pandas, thìtài liệu này sẽ là một tài nguyên hữu ích để bắt đầu Hãy cùng bắt đầu khám pháthế giới của Pandas!
Thân,
Ban biên tập CodeGym
Trang 4Thư viện pandas python là gì? Nó có thể giúp bạn những gì và làm sao để sử dụngthư viện pandas này trong lập trình python Hãy cùng đi tìm câu trả lời cho các câuhỏi trên trong bài viết ngày hôm nay Nó chắc chắn sẽ đem lại cho các bạn nhiềukiến thức bổ ích và làm chủ được cách sử dụng thư viện này
Thư viện pandas là gì?
Thư viện pandas trong python là một thư viện mã nguồn mở, hỗ trợ đắc lực trongthao 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ủangôn ngữ lập trình python Thư viện này được sử dụng rộng rãi trong cả nghiêncứu lẫn phát triển các ứng dụng về khoa học dữ liệu Thư viện này sử dụng mộtcấ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àlàm việc trên cấu trúc dữ liệu này Chính sự linh hoạt và hiệu quả đã khiến chopandas được sử dụng rộng rãi
Tại sao sử dụng thư viện pandas?
● DataFrame đem lại sự linh hoạt và hiệu quả trong thao tác dữ liệu và lập chỉmục;
● Là một công cụ cho phép đọc/ ghi dữ liệu giữa bộ nhớ và nhiều định dạngfile: csv, text, excel, sql database, hdf5;
● Liên kết dữ liệu thông minh, xử lý được trường hợp dữ liệu bị thiếu Tựđộng đưa dữ liệu lộn xộn về dạng có cấu trúc;
● Dễ dàng thay đổi bố cục của dữ liệu;
● Tích hợp cơ chế trượt, lập chỉ mục, lấy ra tập con từ tập dữ liệu lớn
Trang 5● Có thể thêm, xóa các cột dữ liệu;
● Tập hợp hoặc thay đổi dữ liệu với group by cho phép bạn thực hiện các toán
tử trên tập dữ liệu;
● Hiệu quả cao trong trộn và kết hợp các tập dữ liệu;
● Lập chỉ mục theo các chiều của dữ liệu giúp thao tác giữa dữ liệu cao chiều
và dữ liệu thấp chiều;
● Tối ưu về hiệu năng;
● Pandas được sử dụng rộng rãi trong cả học thuật và thương mại Bao gồmthống kê, thương mại, phân tích, quảng cáo,…
Cài đặt Pandas
Để cài đặt thư viện Pandas, bạn có thể làm theo một số cách khác nhau:
1 Sử dụng pip: pip install pandas
2 Sử dụng conda: conda install pandas
Bây giờ chúng ta sẽ bắt đầu học cách sử dụng thư viện pandas python Nhưngtrước khi bắt đầu, hãy import thư viện pandas nhé Chúng ta sẽ dùng cả thư việnmatplotlib nữa
# Render our plots inline
%matplotlib inline
import pandas as pd
Trang 6Giới thiệu qua về matplotlib
Để thực hiện các suy luận thống kê cần thiết, cần phải trực quan hóa dữ liệu củabạn và Matplotlib là một trong những giải pháp như vậy cho người dùng Python
Nó là một thư viện vẽ đồ thị rất mạnh mẽ hữu ích cho những người làm việc vớiPython và NumPy Module được sử dụng nhiều nhất của Matplotib là Pyplot cungcấp giao diện như MATLAB nhưng thay vào đó, nó sử dụng Python và nó lànguồn mở
Để cài đặt Matplotlib nếu bạn có Anaconda chỉ cần gõ conda install matplotlib hoặc sửdụng tools pip pip install matplotlib
Một Matplotlib figure có thể được phân loại thành nhiều phần như dưới đây:
● Figure: Như một cái cửa sổ chứa tất cả những gì bạn sẽ vẽ trên đó.
● Axes: Thành phần chính của một figure là các axes (những khung nhỏ hơn
để vẽ hình lên đó) Một figure có thể chứa một hoặc nhiều axes Nói cáchkhác, figure chỉ là khung chứa, chính các axes mới thật sự là nơi các hình vẽđược vẽ lên
● Axis: Chúng là dòng số giống như các đối tượng và đảm nhiệm việc tạo các
giới hạn biểu đồ
● Artist: Mọi thứ mà bạn có thể nhìn thấy trên figure là một artist
như Text objects, Line2D objects, collection objects Hầu hết các Artistsđược gắn với Axes
Bắt đầu với Pyplot
Pyplot là một module của Matplotlib cung cấp các hàm đơn giản để thêm các thànhphần plot như lines, images, text, v.v vào các axes trong figure
Tạo một biểu đồ đơn giản
import matplotlib.pyplot as plt
import numpy as np
Trang 7Ở đây chúng ta import Matplotlib’s Pyplot module và thư viện Numpy vì hầu hết các dữ liệu mà ta sẽ làm việc sẽ chỉ ở dạng
mảng
Chúng ta chuyển hai mảng làm đối số đầu vào cho phương thức plot() và sử dụng phương thức show() để gọi biểu đồ được yêu cầu Ở đây lưu ý rằng mảng đầu tiên xuất hiện trên trục x và mảng thứ hai xuất hiện trên trục y của biểu đồ Bây giờ, biểu đồ đầu tiên của chúng ta đã sẵn sàng, chúng ta hãy thêm tiêu đề và đặt tên trục
x và trục y bằng cách sử dụng các phương thức title(), xlabel() và ylabel()
Trang 8Chúng ta cũng có thể chỉ định kích thước của hình bằng cách sử dụng phương thức figure() và truyền các giá trị dưới dạng một tuple về độ dài của các hàng và cột cho đối số figsize
Trang 9Với mỗi đối số X và Y, bạn cũng có thể chuyển một đối số thứ ba tùy chọn dưới dạng một chuỗi cho biết màu sắc và loại đường của biểu đồ Định dạng mặc định
là b- có nghĩa là một đường màu xanh lam đặc Trong hình dưới đây, mình sử dụng go có nghĩa là vòng tròn màu xanh lá cây Tương tự như vậy, chúng ta có thể
thực hiện nhiều kết hợp như vậy để định dạng biểu đồ của mình
Trang 10Chúng ta cũng có thể vẽ nhiều bộ dữ liệu bằng cách chuyển vào nhiều bộ đối số của trục X và Y trong phương thức plot() như bên dưới.
Trang 11Nhiều biểu đồ trong 1 figure
Chúng ta có thể sử dụng phương thức subplot() để thêm nhiều plots trong một hình Trong hình ảnh bên dưới, mình đã sử dụng phương pháp này để phân tách hai biểu
đồ mà đã vẽ trên cùng một trục trong ví dụ trước Phương thức subplot() có ba đối số: nrows, ncols và index Chúng chỉ ra số lượng hàng, số cột và số index của sub-plot
Ví dụ, mình muốn tạo hai sub-plot trong một hình sao cho nó nằm trên một hàng
Trang 12Nếu ta muốn các sub-plots thành hai hàng và một cột, chúng ta có thể truyền các đối số (2,1,1) và (2,1,2)
Trang 13Cách tạo ra subplots trên đây trở nên hơi tẻ nhạt khi chúng ta muốn có nhiều
subplots trong hình Một cách thuận tiện hơn là sử dụng phương thức subpltots() Lưu
ý sự khác biệt của các giá trị trong cả hai phương thức Phương thức này lấy hai đối số nrows và ncols làm số lượng hàng và số cột tương ứng Phương thức này tạo ra
Trang 14Tạo các loại biểu đồ khác nhau với Pyplot
1 Biểu đồ thanh
Biểu đồ thanh là một trong những loại biểu đồ phổ biến nhất và được sử dụng để hiển thị dữ liệu được liên kết với các biến phân loại Pyplot cung cấp một phương thức bar() để tạo các biểu đồ thanh có các đối số: biến phân loại, giá trị và màu sắc của chúng (nếu bạn muốn chỉ định bất kỳ)
Trang 15Để tạo biểu đồ thanh ngang sử dụng phương thức barh() Ngoài ra, chúng ta có thể truyền đối số (với giá trị của nó) xerr or yerr (trong trường hợp biểu đồ thanh dọc ở trên) để mô tả phương sai trong dữ liệu của chúng ta như sau:
Trang 16Để tạo các biểu đồ thanh xếp chồng theo chiều ngang, ta sử dụng phương
thức bar() hai lần và chuyển các đối số trong đó ta đề cập đến index và width của biểu đồ thanh để xếp chúng theo chiều ngang Ngoài ra, chú ý việc sử dụng hai phương thức legend() được sử dụng để hiển thị chú giải của biểu đồ và xticks() để gắn nhãn trục x dựa trên vị trí của các thanh
Trang 17Tương tự, để xếp theo chiều dọc các biểu đồ thanh với nhau, chúng ta có thể sử dụng đối số bottom và đề cập đến biểu đồ thanh mà chúng ta muốn xếp chồng bên dưới làm giá trị của nó.
Trang 182 Biểu đồ tròn
Một loại biểu đồ cơ bản nữa là biểu đồ Pie có thể được tạo bằng phương
thức pie() Chúng ta cũng có thể chuyển các đối số để tùy chỉnh biểu đồ Pie của mình để hiển thị shadow, explode một phần của nó, nghiêng nó theo một góc như sau:
Trang 193 Histogram Histogram là một loại biểu đồ rất phổ biến khi chúng ta xem xét dữ
liệu như chiều cao và cân nặng, giá cổ phiếu, thời gian chờ đợi của một khách hàng, v.v liên tục trong tự nhiên Histogram's data được vẽ trong một phạm vi sovới tần số của nó Histograms là các biểu đồ xuất hiện rất phổ biến trong xác suất
và thống kê và tạo cơ sở cho các distributions khác nhau như normal -distribution, t-distribution, v.v Trong ví dụ sau, chúng ta tạo dữ liệu liên tục ngẫu nhiên gồm
1000 entries và vẽ biểu đồ theo tần số của nó với dữ liệu chia thành 10 tầng bằng nhau Mình đã sử dụng phương thức random.randn() của NumPy's để tạo dữ liệu với các thuộc tính của standard normal distribution, nghĩa là = 0 và độ lệch chuẩn = 1
và do đó biểu đồ trông giống như một đường cong normal distribution
Trang 204 Sơ đồ phân tán và 3 chiều
Các biểu đồ phân tán là các biểu đồ được sử dụng rộng rãi, đặc biệt là chúng có íchtrong việc hình dung một vấn đề về hồi quy Trong ví dụ sau, cung cấp dữ liệu được tạo tùy ý về chiều cao và cân nặng và vẽ chúng với nhau Mình đã sử dụng các phương thức xlim() và ylim() để đặt giới hạn của trục X và trục Y tương ứng
Trang 21Sự phân tán ở trên cũng có thể được hình dung trong ba chiều Để sử dụng chức năng này, trước tiên ta cần import module mplot3d như sau:
from mpl_toolkits import mplot3d
Trang 22Chúng ta cũng có thể tạo các biểu đồ 3 chiều của các loại khác như biểu đồ đường,
bề mặt, khung lưới, đường viền, v.v Ví dụ trên ở dạng biểu đồ đường đơn giản như sau: Ở đây thay vì scatter3D() chúng ta sử dụng phương thức plot3D()
Trang 23Đọc file csv sử dụng thư viện pandas
Bạn có thể dễ dàng đọc vào một file csv bằng cách sử dụng hàm read_csv và được trả về 1 dataframe Mặc định, hàm này sẽ phân biệt các trường của file csv theo dấu phẩy Cách đọc hết sức đơn giản như sau:
peoples_df = pd.read_csv( './people.csv' )
Bạn có thể in ra n bản ghi đầu tiên của dataframe sử dụng hàm head Ngược lại của hàm head là hàm tail
Trang 24Kết quả:
Tuy nhiên, bạn cũng sẽ phải lưu ý một vài tham số của hàm read_csv như:
● encoding: chỉ định encoding của file đọc vào Mặc định là utf-8.
● sep: thay đổi dấu ngăn cách giữa các cột Mặc định là dấu phẩy (‘,’)
● header: chỉ định file đọc vào có header(tiêu đề của các cột) hay không Mặc
định là infer
● index_col: chỉ định chỉ số cột nào là cột chỉ số(số thứ tự) Mặc định là None.
● n_rows: chỉ định số bản ghi sẽ đọc vào Mặc định là None – đọc toàn bộ.
Trang 25Thao tác với dataframe trong pandas
Xem thông tin của dataframe
Bạn có thể xem thông tin của dataframe vừa đọc vào bằng cách sử dụng
hàm .info() hoặc xem kích thước của dataframe này với thuộc tính shape Cụ thể như sau:
# Xem chiều dài của df, tương đương shape[0]
Data columns (total 11 columns):
person_ID 40 non-null int64
name 40 non-null object
first 40 non-null object
last 40 non-null object
Trang 26fax 40 non-null object
title 40 non-null object
age 40 non-null int64
is_young 40 non-null bool
dtypes: bool(1), int64(2), object(8)
memory usage: 3.2+ KB
Shape: (40, 11)
Truy xuất dữ liệu trên dataframe
Lấy 1 cột theo tên cột
Để chỉ định cột muốn lấy, bạn chỉ cần truyền vào tên cột như sau:
peoples_df['name']
Trang 27Lấy theo nhiều cột
Thay vì truyền vào 1 string thì hãy truyền vào 1 list các tên cột Mình
thêm .head(5) để chỉ in ra 5 bản ghi đầu tiên cho ngắn, mặc định sẽ lấy hết
peoples_df[['name', 'age']].head(5)
Trang 28Lấy bản ghi theo chỉ số
Để lấy một hoặc nhiều bản ghi liên tiếp trong dataframe, sử dụng cơ chế trượt theo chỉ số giống như trên list trong python Lấy 5 bản ghi đầu tiên:
Trang 29Mộ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ư:
professor = peoples_df[peoples_df.title == 'Professor']
Trang 30Name: name, dtype: bool
Lấy giá trị trả về numpy arrays
Để lấy giá trị của một cột trả về dưới dạng numpy array trong thư viện pandas python, bạn chỉ cần thêm .values vào sau, ví dụ:
peoples_df['name'].values
Output bạn thu được như sau:
array([ '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)
Trang 31Giới thiệu qua về Numpy Array
Numpy là một thư viện lõi phục vụ cho khoa học máy tính của Python, hỗ trợ cho việc tính toán các mảng nhiều chiều, có kích thước lớn với các hàm đã được tối ưu
áp dụng lên các mảng nhiều chiều đó Numpy đặc biệt hữu ích khi thực hiện các hàm liên quan tới Đại Số Tuyến Tính
Để cài đặt numpy nếu bạn có Anaconda chỉ cần gõ conda install numpy hoặc sử dụng tools pip pip install numpy
Sau khi cài đặt xong, trong Python, chúng ta cần khai báo import numpy để có thể bắt đầu sử dụng các hàm của numpy Vì numpy là thư viện được sử dụng thường
xuyên nên nó thường được khai báo gọn lại thành np import numpy as np np có thể thay thế bằng các từ khác, tuy nhiên bạn nên đặt là np vì các tài liệu hướng dẫn
đều ngầm quy ước như thế
Arrays
Một mảng numpy là một lưới các giá trị, và tất cả các giá trị có dùng kiểu giá trị,
và được lập chỉ mục bởi một số nguyên không âm, số chiều được gọi là rank của mảng Numpy, và shape là một tuple các số nguyên đưa ra kích thước của mảng
theo mỗi chiều
Chúng ta có thể khởi tạo numpy arrays từ nested Python lists, và dùng dấu ngoặc vuông để truy cập từng phần tử
import numpy as np
a = np.array([1, 2, 3]) # Tạo một numpy array với rank = 1
print(type(a)) # Sẽ in ra "<class 'numpy.ndarray'>"