Hướng dẫn how do you read a table in python? - làm thế nào để bạn đọc một bảng trong python?

Bảng đọc là một điều khá phổ biến để làm và có một số cách để đọc các bảng ngoài việc tự viết một chức năng đọc. Điều đó không thể nói đây là những viên đạn ma thuật. Mỗi bảng là khác nhau và có thể có sự lập dị của riêng nó. Nếu bạn thấy mình đọc cùng một loại tệp kỳ quặc nhiều lần thì có thể đáng để bạn nỗ lực viết người đọc của riêng bạn mà làm mọi việc theo cách bạn muốn. Điều đó nói rằng, đây là một số lựa chọn khác.

numpy.loadtxt

numpy.loadtxt là một trình đọc rất đơn giản. Có nhiều cách để làm cho nó thực hiện một số thứ nâng cao như xử lý dữ liệu bị thiếu hoặc đọc các cột không phải là số nhưng tất cả đều hơi tẻ nhạt nên chức năng này được sử dụng tốt nhất với các bảng hành xử tốt.

numpy.loadtxt có một vài từ khóa hữu ích. Sử dụng từ khóa

 >>> a,b,c = np.loadtxt['data_table.txt', skiprows=1, unpack=True]
 >>> a
 array[[ 0.2536, 0.4839, 0.1292, 0.1781, 0.6253]]
 >>> b
 array[[ 0.1008, 0.4536, 0.6875, 0.3049, 0.3486]]
 >>> c
 array[[ 0.3857, 0.3561, 0.5929, 0.8928, 0.8791]]
 
8 để bỏ qua các dòng tiêu đề. Theo mặc định numpy.loadtxt sẽ phân chia các cột trên không gian trắng nhưng bạn có thể chỉ định các dấu phân cách khác bằng từ khóa
 >>> a,b,c = np.loadtxt['data_table.txt', skiprows=1, unpack=True]
 >>> a
 array[[ 0.2536, 0.4839, 0.1292, 0.1781, 0.6253]]
 >>> b
 array[[ 0.1008, 0.4536, 0.6875, 0.3049, 0.3486]]
 >>> c
 array[[ 0.3857, 0.3561, 0.5929, 0.8928, 0.8791]]
 
9. Nếu bạn muốn chỉ chọn một số cột nhất định từ bảng, hãy sử dụng từ khóa
 >>> np.loadtxt['data_table2.txt', skiprows=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 
0. Điều đó có thể hữu ích nếu bạn muốn bỏ qua một cột văn bản.

Thông thường dữ liệu được trả về dưới dạng một mảng 2D lớn nhưng cài đặt

 >>> np.loadtxt['data_table2.txt', skiprows=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 
1 sẽ trả về các cột dưới dạng các mảng riêng lẻ.

Ví dụ

Đọc một bảng được phân định không gian trắng định dạng tốt vào một mảng duy nhất:

 >>> np.loadtxt['data_table.txt', skiprows=1]
 array[[[ 0.2536, 0.1008, 0.3857],
 [ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, 0.5929],
 [ 0.1781, 0.3049, 0.8928],
 [ 0.6253, 0.3486, 0.8791]]]

Đọc một bảng được phân định không gian trắng được định dạng tốt vào ba mảng:

 >>> a,b,c = np.loadtxt['data_table.txt', skiprows=1, unpack=True]
 >>> a
 array[[ 0.2536, 0.4839, 0.1292, 0.1781, 0.6253]]
 >>> b
 array[[ 0.1008, 0.4536, 0.6875, 0.3049, 0.3486]]
 >>> c
 array[[ 0.3857, 0.3561, 0.5929, 0.8928, 0.8791]]
 

Đọc một bảng có giá trị

 >>> np.loadtxt['data_table2.txt', skiprows=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 
2:

 >>> np.loadtxt['data_table2.txt', skiprows=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 

Đọc một tệp CSV được định dạng độc đáo. Bỏ qua cột đầu tiên vì nó chứa chuỗi:

 >>> np.loadtxt['exoplanetData_clean.csv', skiprows=1, delimiter=',', usecols=[1,2,3]]
 array[[[ 0.2 , 0.33 , 29.329 ],
 [ 9.1 , 1.29 , 60.3251],
 [ 17. , 0.96 , 143.213 ],
 [ 6.8 , 0.38 , 20.8613],
 [ 4.7 , 0.38 , 42.6318]]]
 

numpy.genfromtxt

numpy.genfromtxt là một phiên bản mạnh mẽ hơn của loadTXT có thể xử lý tốt hơn dữ liệu bị thiếu. Nó hỗ trợ hầu hết các từ khóa giống như LoadTXT ngoại trừ nó có

 >>> np.loadtxt['data_table2.txt', skiprows=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 
3 thay vì
 >>> a,b,c = np.loadtxt['data_table.txt', skiprows=1, unpack=True]
 >>> a
 array[[ 0.2536, 0.4839, 0.1292, 0.1781, 0.6253]]
 >>> b
 array[[ 0.1008, 0.4536, 0.6875, 0.3049, 0.3486]]
 >>> c
 array[[ 0.3857, 0.3561, 0.5929, 0.8928, 0.8791]]
 
8.

Ví dụ

Đọc một bảng được phân định không gian trắng định dạng tốt vào một mảng duy nhất:

 >>> np.genfromtxt['data_table3.txt', skip_header=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 

Đọc một bảng được phân định không gian trắng được định dạng tốt vào ba mảng:

 >>> np.genfromtxt['data_table3.txt', skip_header=1, missing_values=['MISSING','MISSING','MISSING'], filling_values=[-999,-999,-999]]
 array[[[ 4.83900000e-01, 4.53600000e-01, 3.56100000e-01],
 [ 1.29200000e-01, 6.87500000e-01, -9.99000000e+02],
 [ 1.78100000e-01, 3.04900000e-01, 8.92800000e-01],
 [ -9.99000000e+02, 5.80100000e-01, 2.03800000e-01],
 [ 5.99300000e-01, 4.35700000e-01, 7.41000000e-01]]]
 

Đọc một bảng có giá trị

 >>> np.loadtxt['data_table2.txt', skiprows=1]
 array[[[ 0.4839, 0.4536, 0.3561],
 [ 0.1292, 0.6875, nan],
 [ 0.1781, 0.3049, 0.8928],
 [ nan, 0.5801, 0.2038],
 [ 0.5993, 0.4357, 0.741 ]]]
 
2:

 >>> np.genfromtxt['exoplanetData_clean.csv', names=True, delimiter=',', dtype=None]
 array[[['Kepler-30 b', 0.2, 0.33, 29.329],
 ['Kepler-30 c', 9.1, 1.29, 60.3251],
 ['Kepler-30 d', 17.0, 0.96, 143.213],
 ['Kepler-31 b', 6.8, 0.38, 20.8613],
 ['Kepler-31 c', 4.7, 0.38, 42.6318]],
 dtype=[['Planet_Name', '|S11'], ['Pl_Mass', '

Chủ Đề