Trong Pandas, DataFrame là cấu trúc dữ liệu hai chiều, được gắn nhãn trông giống như Bảng SQL hoặc bảng tính có các cột và hàng. Các cột của DataFrame có thể bao gồm nhiều loại dữ liệu khác nhau. Trong bài viết này, tôi sẽ giải thích thao tác cơ bản để thực hiện thao tác dữ liệu đó là cắt lát
Các hàm “loc” và “iloc” được bao gồm trong cú pháp Pandas DataFrame, ví dụ: khung dữ liệu. loc[] và khung dữ liệu. iloc[]. Cả hai hàm đều được sử dụng để truy cập hàng và/hoặc cột, với “loc” thể hiện quyền truy cập theo nhãn và “iloc” thể hiện quyền truy cập theo vị trí, i. e. chỉ số nguyên
môi trường
- trăn3. 9
- gấu trúc
Đầu tiên và quan trọng nhất, chúng tôi cần cài đặt các gói cần thiết cho phần trình diễn sau đây của chúng tôi
Cài đặt gói
pip install pandas
pip install pandas_datareader
Khi chúng tôi hoàn tất cài đặt gói, chúng tôi có thể bắt đầu mã hóa ngay lập tức. Nếu bạn đã đọc bất kỳ bài đăng nào trước đây của tôi, bạn sẽ thấy rằng chức năng này đã được sử dụng lại một vài lần với những sửa đổi nhỏ. Hãy xem bài đăng này nếu bạn chưa quen với lĩnh vực khoa học dữ liệu
import pandas_datareader as data_reader
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Một cách đơn giản để trích xuất dữ liệu chứng khoán từ Yahoo Finance, tôi sẽ không giải thích thêm ở đây, vì phần giải thích này có thể được tìm thấy trong các chủ đề trước đây của tôi
data = get_stock_data[['GOOG'], 14]
print[data]
Chúng tôi đang chuyển Google Stock Ticker, để truy xuất dữ liệu lịch sử của 14 ngày qua
Coded By Author [Bản quyền thuộc về Tác giả]
Vì dữ liệu đã sẵn sàng, vì vậy chúng tôi đi đến chủ đề của chúng tôi ngày hôm nay
Thao tác dữ liệu - Cắt lát1. [] Phương pháp dấu ngoặc vuông
[] là cách sử dụng phổ biến nhất cho các nhà phát triển python hoặc Nhà khoa học dữ liệu. Dấu ngoặc vuông [] có thể được sử dụng để cắt khung dữ liệu. Hai cách để cắt khung dữ liệu
- Tên cột
- Trình tự Boolean của các cột
print[data['stock_ticker']]
Coded By Author [Bản quyền thuộc về Tác giả]
Như ví dụ trên, kiểu dữ liệu này sẽ là chuỗi vì chỉ truy cập vào một cột
Nhiều cột
print[df[['stock_ticker','Open']]]
Coded By Author [Bản quyền thuộc về Tác giả]
Lọc điều kiện
Các nhà khoa học dữ liệu luôn sử dụng tính năng lọc có điều kiện để chọn phạm vi dữ liệu mẫu phù hợp
print[data[data['Open'] > 2000]]
Coded By Author [Bản quyền thuộc về Tác giả]
Nhiều lát cắt có điều kiện
print[data[[data['Open'] > 2000] & [data['High'] < 2800]]]
Coded By Author [Bản quyền thuộc về Tác giả]
Nếu bạn đang phải đối mặt với các lỗi sau
Coded By Author [Bản quyền thuộc về Tác giả]
Vui lòng thêm [] để giải quyết vấn đề như dưới đây
[] & []
Bằng cách đó, nó sẽ ưu tiên thực hiện các phép tính logic. do đó cả hai bên sẽ chỉ trả về kiểu dữ liệu boolean
2. phương pháp ilocĐể cắt khung dữ liệu bằng cách sử dụng vị trí của các hàng và cột, hãy sử dụng kỹ thuật iloc. Có thể sử dụng phép cắt Boolean
lát hàng
________số 8Mã hóa bởi Tác giả [Bản quyền thuộc về Tác giả]
print[data.iloc[[0]]]
Coded By Author [Bản quyền thuộc về Tác giả]
Chọn hai hàng đầu tiên
import pandas_datareader as data_reader0
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Mã hóa bởi Tác giả [Bản quyền thuộc về Tác giả]
import pandas_datareader as data_reader1
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Kết quả hoàn toàn giống nhau, nhưng tôi thích phương pháp đầu tiên hơn
Chọn hàng thứ ba và cho đến khi kết thúc
import pandas_datareader as data_reader2
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Truy cập dữ liệu giữa phạm vi và dựa trên các bước
import pandas_datareader as data_reader3
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Truy cập 5 hàng cuối cùng và cho đến khi kết thúc
Coded By Author [Bản quyền thuộc về Tác giả]
Cắt lát có điều kiện
import pandas_datareader as data_reader4
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Mình không khuyến khích viết như trên, kể cả lambda thao tác rất nhanh, code nhìn thừa
cắt cột
Khi sử dụng phương thức iloc để cắt cột, tham số hàng cần được đặt thành. , có nghĩa là tất cả các hàng được chọn. Cắt cột được thực hiện theo cách tương tự như cắt hàng
import pandas_datareader as data_reader5
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
import pandas_datareader as data_reader6
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Chọn các cột chứa ký tự O
import pandas_datareader as data_reader7
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Kết hợp các lát
Đặt tham số hàng và tham số cột cùng lúc và sử dụng iloc để cắt kết hợp
Chọn hàng 1, 3, cột 2, 4
import pandas_datareader as data_reader8
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
phương pháp định vị
Sử dụng phương thức loc để cắt khung dữ liệu theo tên hàng và cột, đồng thời hỗ trợ lập chỉ mục boolean
cắt hàng
Khi một đối số được truyền vào, chỉ các hàng được cắt
import pandas_datareader as data_reader9
import pandas as pd
from datetime import datetime
from datetime import timedeltadef get_stock_data[stocktickers, days]:
start = [datetime.now[] - timedelta[days=days]].strftime['%Y-%m-%d']
end = [datetime.now[]].strftime['%Y-%m-%d']
stock = []
for stockticker in stocktickers:
data = data_reader.DataReader[stockticker, 'yahoo', start, end]
data['stock_ticker'] = stockticker
stock.append[data]
return pd.concat[stock]
Coded By Author [Bản quyền thuộc về Tác giả]
Vì chỉ mục của chúng tôi là một chuỗi thời gian nên chúng tôi có thể chuyển ngày giờ để lọc
Lập chỉ mục với Tìm kiếm Regex
data = get_stock_data[['GOOG'], 14]
print[data]
0Coded By Author [Bản quyền thuộc về Tác giả]
cắt cột
Khi sử dụng phương thức loc để cắt cột, tham số hàng cần được đặt thành. , có nghĩa là tất cả các hàng được chọn. Cắt cột được thực hiện theo cách tương tự như cắt hàng
data = get_stock_data[['GOOG'], 14]
print[data]
1Coded By Author [Bản quyền thuộc về Tác giả]
Chọn cột Mở và tất cả các cột tiếp theo
data = get_stock_data[['GOOG'], 14]
print[data]
2Coded By Author [Bản quyền thuộc về Tác giả]
Kết hợp các lát
Đặt tham số hàng và tham số cột cùng một lúc và sử dụng phương thức loc để cắt kết hợp
data = get_stock_data[['GOOG'], 14]
print[data]
3Coded By Author [Bản quyền thuộc về Tác giả]
Cắt theo vị trí chỉ mục và tên cột
data = get_stock_data[['GOOG'], 14]
print[data]
4Coded By Author [Bản quyền thuộc về Tác giả]
Cắt theo tên chỉ mục và vị trí cột
data = get_stock_data[['GOOG'], 14]
print[data]
5Mã hóa bởi tác giả [Bản quyền thuộc về tác giả]Phương pháp lọc
Phương thức lọc tương tự như phương thức loc ở chỗ nó cắt lát dựa trên tên chỉ mục và tên cột