Trong nhiều dự án khoa học dữ liệu, bạn có thể cần tải xuống dữ liệu từ xa, chẳng hạn như hình ảnh, tệp CSV hoặc dữ liệu nén. Python làm cho việc tải xuống các tệp trong mã của bạn trở nên khá đơn giản, cho phép bạn tự động hóa các quy trình mà bạn có thể phải thực hiện thủ công hoặc thông qua tập lệnh Bash. Đây là cách nó được thực hiện
Đang tải xuống một tệp
Để tải xuống một tệp bằng Python, hãy nhập gói request
từ urllib
và xác định URL bạn muốn tải xuống. Sau đó, chuyển url
cho hàm
['image.jpg', ]
0 cùng với tên bạn muốn gán cho tệp đã tải xuốngimport urllib.request
url = '//practicaldatascience.co.uk/assets/images/posts/happy.jpg'
urllib.request.urlretrieve[url, 'image.jpg']
['image.jpg', ]
Tải xuống tệp và giữ nguyên tên tệp
Nếu bạn muốn giữ nguyên tên tệp của tệp bạn đang tải xuống, thay vì đặt tên tệp đó một cách rõ ràng trong mã của mình, trước tiên bạn có thể sử dụng
['image.jpg', ]
1 để yêu cầu tệp, sau đó sử dụng ['image.jpg', ]
2 để lấy tên tệp từ đối tượng url
trong phản hồi được trả về. Cuối cùng, bạn có thể chuyển tên tệp cho hàm ['image.jpg', ]
0 và tệp của bạn sẽ được tải xuống bằng tên tệp ban đầu của nóimport urllib.request
from os.path import basename
url = '//practicaldatascience.co.uk/assets/images/posts/happy.jpg'
response = urllib.request.urlopen[url]
filename = basename[response.url]
urllib.request.urlretrieve[url, filename]
['happy.jpg', ]
Đang tải xuống nhiều tệp
Nếu bạn có nhiều tệp để tải xuống, bạn chỉ cần sửa đổi mã ở trên và tạo vòng lặp for để yêu cầu và tải xuống từng tệp riêng lẻ. Trước tiên, hãy xác định danh sách các URL bạn muốn tải xuống, sau đó tạo vòng lặp for để lặp qua các URL. Sau đó, yêu cầu tệp, lấy tên tệp và chuyển URL và tên tệp tới
['image.jpg', ]
0 Python cung cấp khả năng đọc dữ liệu CSV trực tiếp từ web. Bài đăng này sẽ chỉ ra cách tải CSV theo ba cách-. sử dụng các gói gấu trúc, urllib và yêu cầu trong python
Phương pháp A. Đang tải CSV từ URL bằng Pandas
Hàm read_csv[] có thể đọc tệp CSV trực tiếp từ nguồn trực tuyến. Trong ví dụ sau, hàm tải dữ liệu CSV từ GitHub và lưu trữ dữ liệu đó trong DataFrame df
1
2
3
4
nhập gấu trúc dưới dạng pd
url = "https. // thô. githubusercontent. com/datasciencedojo/datasets/master/titanic. csv"
df = pd. read_csv[url]
Đầu ra [mô tả]
A DataFrame of 891 rows and 12 columns.
Khi đọc dữ liệu từ GitHub, đảm bảo bạn đọc từ URL thô. Ví dụ: ở trên, nếu bạn thử tải dữ liệu trực tiếp từ https. //github. com/datasciencedojo/datasets/blob/master/titanic. csv, quá trình tải xuống sẽ không thành công. Khi bạn truy cập vào một URL như vậy, hãy mở nội dung thô bằng nút "Thô" ở đầu Khung dữ liệu, sau đó bạn sẽ có URL chính xác như URL chúng tôi đã sử dụng trong ví dụ trên
CSV là viết tắt của Giá trị được phân tách bằng dấu phẩy, nhưng trong một số trường hợp, giá trị của tệp CSV không được phân tách bằng dấu phẩy. Trong một số trường hợp, các ký tự khác như “;”, tab [“\t”], v.v. Nếu bạn cố tải một CSV không được phân tách bằng dấu phẩy, hãy chuyển đối số “sep” cho hàm read_csv[]. Ví dụ,
1
2
3
4
nhập gấu trúc dưới dạng pd
# csv không được phân cách bằng dấu phẩy
df1 = pd. read_csv["https. // người. viễn thông-paristech. fr/eagan/class/igr204/data/cereal. csv"]
đầu ra
ParserError: Error tokenizing data.
1
2
3
4
nhập gấu trúc dưới dạng pd
#dữ liệu được phân tách bằng dấu hai chấm
df1 = pd. read_csv["https. // người. viễn thông-paristech. fr/eagan/class/igr204/data/cereal. csv", sep=";"]
Đầu ra [mô tả]
A data table of 78 rows and 16 columns
Phương pháp B. Đọc CSV từ URL bằng urllib
Mô-đun urllib của Python được sử dụng để tương tác và nhận URL từ các giao thức khác nhau. Để kết nối với một URL và đọc nội dung của nó, hãy sử dụng urllib. hàm urlopen[]
Sau khi nhận được phản hồi, chúng tôi có thể sử dụng csv. hàm reader[] để phân tích nội dung nhận được. Trình đọc cho phép chúng tôi lặp qua từng hàng CSV
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# Tải gói
từ urllib. yêu cầu nhập urlopen
nhập csv
nhập codec
# địa chỉ
url = "https. // thô. githubusercontent. com/datasciencedojo/datasets/master/titanic. csv"
# lấy nguồn bằng urlopen
phản hồi = urlopen[url]
# phân tích cú pháp dữ liệu đã tìm nạp bằng csv. đọc
# codec cho phép chúng tôi giải mã phản hồi byte thành một chuỗi
tệp csv = csv. trình đọc[codec. iterdecode[phản hồi, "]]
# Vòng qua các hàng
# enumerate[] cho phép chúng ta lập chỉ mục cho iterable
cho chỉ mục, hàng trong enumerate[csvfile]:
in[chỉ mục, row] # do something with row - note: the first row is the header
Đầu ra [mô tả]
139 rows of data
Lưu ý rằng hàng đầu tiên là tiêu đề trong hầu hết các trường hợp
Phương pháp C. Sử dụng yêu cầu và csv để tải CSV từ Nguồn trực tuyến
Giống như urllib, mô-đun yêu cầu có thể tìm nạp dữ liệu CSV từ một URL. Nó là một thư viện HTTP đơn giản với khả năng xử lý lỗi nâng cao
Hàm get[] trong mô-đun này có thể truy xuất phản hồi từ một liên kết tới nội dung được lặp lại bằng hàm iter_lines[]
Dữ liệu đã hoàn thành sau đó được phân tích cú pháp bằng csv. reader[], cho phép chúng ta duyệt qua các hàng. Đây là một ví dụ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
nhập yêu cầu
nhập csv
nhập codec
# url - đó là một url dài, vì vậy chúng tôi ngắt nó bằng cách sử dụng \ để xem tốt hơn bằng cách sử dụng
url = "https. //www. số liệu thống kê. chính phủ. nz/assets/Uploads/Annual-enterprise-survey/\
Khảo-sát-doanh-nghiệp-2021-năm-tài-chính-tạm-thời/Tải-dữ-liệu/\
doanh-nghiệp-khảo-sát-năm 2021-tài-chính-năm-tạm-csv. csv"
# tìm nạp nguồn trang bằng cách sử dụng các yêu cầu. được[]
res = yêu cầu. lấy[url]
# tạo iterator cho tất cả các dòng
lines_iterator = res. iter_lines[]
# tạo đối tượng trình đọc CSV và mã hóa nội dung bằng mô-đun codec
dữ liệu = csv. trình đọc[codec. iterdecode[lines_iterator, mã hóa="utf-8"], delimiter=","]
# lặp qua các hàng trong danh sách "dữ liệu"
cho chỉ mục, hàng trong enumerate[data]:
in[chỉ mục, row]
# lặp qua các hàng - lưu ý. hàng đầu tiên là tiêu đề
Đầu ra [mô tả]
41715 rows of data, including the header row
Phần kết luận
Bài viết này đề cập đến ba cách tải dữ liệu CSV từ một nguồn trực tuyến. Nếu bạn đang tải dữ liệu từ kho lưu trữ GitHub, hãy sử dụng URL cho nội dung thô. Đối với các nguồn khác, hãy đảm bảo bạn cũng nhận được liên kết chính xác. Một cách đơn giản để kiểm tra liên kết là nhấp vào liên kết đó. Nếu CSV bắt đầu tải xuống, di chuột qua URL, nhấp chuột phải và “Sao chép liên kết” sẽ giúp bạn có được URL chính xác