Python in các cột có chiều rộng cố định

Trình phân tích cú pháp thực hiện mọi nỗ lực để “làm điều đúng đắn” và không quá mong manh. Loại suy luận là một vấn đề khá lớn. Vì vậy, nếu một cột có thể bị ép thành dtype số nguyên mà không thay đổi nội dung, thì nó sẽ làm như vậy. Mọi cột không phải là số sẽ xuất hiện dưới dạng đối tượng dtype như với các đối tượng pandas còn lại

Các tệp có các cột có chiều rộng cố định¶

Trong khi read_csv đọc dữ liệu được phân tách, hàm read_fwf[] hoạt động với các tệp dữ liệu có độ rộng cột đã biết và cố định. Các tham số chức năng cho read_fwf phần lớn giống như read_csv với hai tham số bổ sung.

  • colspecs . một danh sách các cặp [bộ], đưa ra phạm vi của các trường có độ rộng cố định của mỗi dòng dưới dạng các khoảng thời gian nửa mở [từ, đến[
  • chiều rộng . danh sách độ rộng trường, có thể được sử dụng thay cho colspecs nếu các khoảng liền kề nhau

Xem xét một tệp dữ liệu có chiều rộng cố định điển hình

In [600]: print open['bar.csv'].read[]
id8141    360.242940   149.910199   11950.7
id1594    444.953632   166.985655   11788.4
id1849    364.136849   183.628767   11806.2
id1230    413.836124   184.375703   11916.8
id1948    502.953953   173.237159   12468.3

Để phân tích cú pháp tệp này thành DataFrame, chúng tôi chỉ cần cung cấp thông số cột cho hàm read_fwf cùng với tên tệp

#Column specifications are a list of half-intervals
In [601]: colspecs = [[0, 6], [8, 20], [21, 33], [34, 43]]

In [602]: df = read_fwf['bar.csv', colspecs=colspecs, header=None, index_col=0]

In [603]: df
Out[603]: 
               X.2         X.3      X.4
X.1                                    
id8141  360.242940  149.910199  11950.7
id1594  444.953632  166.985655  11788.4
id1849  364.136849  183.628767  11806.2
id1230  413.836124  184.375703  11916.8
id1948  502.953953  173.237159  12468.3

Lưu ý cách trình phân tích cú pháp tự động chọn tên cột X. header=None được chỉ định. Ngoài ra, bạn có thể chỉ cung cấp độ rộng cột cho các cột liền kề.

#Widths are a list of integers
In [604]: widths = [6, 14, 13, 10]

In [605]: df = read_fwf['bar.csv', widths=widths, header=None]

In [606]: df
Out[606]: 
      X.1         X.2         X.3      X.4
0  id8141  360.242940  149.910199  11950.7
1  id1594  444.953632  166.985655  11788.4
2  id1849  364.136849  183.628767  11806.2
3  id1230  413.836124  184.375703  11916.8
4  id1948  502.953953  173.237159  12468.3

Trình phân tích cú pháp sẽ xử lý các khoảng trắng thừa xung quanh các cột để bạn có thể phân tách thêm giữa các cột trong tệp

Tệp có cột chỉ mục "ngầm"¶

Xem xét một tệp có ít mục nhập hơn trong tiêu đề so với số lượng cột dữ liệu

In [607]: print open['foo.csv'].read[]
A,B,C
20090101,a,1,2
20090102,b,3,4
20090103,c,4,5

Trong trường hợp đặc biệt này, read_csv giả định rằng cột đầu tiên sẽ được sử dụng làm chỉ mục của DataFrame.

clipdf = read_clipboard[sep='\s*']
0

Lưu ý rằng ngày không được phân tích cú pháp tự động. Trong trường hợp đó, bạn sẽ cần phải làm như trước

clipdf = read_clipboard[sep='\s*']
1

Đọc đối tượng DataFrame bằng MultiIndex

Giả sử bạn có dữ liệu được lập chỉ mục bởi hai cột

clipdf = read_clipboard[sep='\s*']
2

Đối số index_col cho read_csvread_table can take a list of column numbers to turn multiple columns into a MultiIndex:

clipdf = read_clipboard[sep='\s*']
3

Tự động “đánh hơi” dấu phân cách¶

read_csv có khả năng suy ra các tệp được phân tách [không nhất thiết phải được phân tách bằng dấu phẩy]. YMMV, vì gấu trúc sử dụng lớp Sniffer của mô-đun csv.

clipdf = read_clipboard[sep='\s*']
4

Lặp lại qua từng đoạn tệp¶

Giả sử bạn muốn duyệt qua một tệp [có khả năng rất lớn] một cách lười biếng thay vì đọc toàn bộ tệp vào bộ nhớ, chẳng hạn như sau

clipdf = read_clipboard[sep='\s*']
5

Bằng cách chỉ định kích thước khối thành read_csv hoặc read_table, the return value will be an iterable object of type TextParser:

clipdf = read_clipboard[sep='\s*']
6

Việc chỉ định iterator=True cũng sẽ trả về TextParser .

clipdf = read_clipboard[sep='\s*']
7

Ghi sang định dạng CSV¶

Các đối tượng Sê-ri và DataFrame có một phương thức phiên bản to_csv cho phép lưu trữ nội dung của đối tượng dưới dạng tệp giá trị được phân tách bằng dấu phẩy. Hàm nhận một số đối số. Chỉ cái đầu tiên là bắt buộc.

  • đường dẫn . Đường dẫn chuỗi đến tệp để ghi nanRep . Biểu diễn chuỗi của một giá trị bị thiếu [mặc định là ‘’]
  • cols . Các cột để viết [mặc định là Không có]
  • tiêu đề . Có viết tên cột hay không [mặc định là True]
  • chỉ mục . có viết tên hàng [chỉ mục] hay không [mặc định là True]
  • index_label . [Các] nhãn cột cho [các] cột chỉ mục nếu muốn. Nếu Không có [mặc định] và tiêu đề và chỉ mục là Đúng, thì tên chỉ mục được sử dụng. [Một chuỗi sẽ được cung cấp nếu DataFrame sử dụng MultiIndex].
  • chế độ . Chế độ ghi Python, mặc định là 'w'
  • tháng chín . Dấu phân cách trường cho tệp đầu ra [mặc định là “'”]
  • mã hóa . một chuỗi đại diện cho mã hóa để sử dụng nếu nội dung không phải là mã ascii, đối với các phiên bản python trước 3

Viết một chuỗi được định dạng¶

Đối tượng DataFrame có một phương thức mẫu to_string cho phép kiểm soát biểu diễn chuỗi của đối tượng. Tất cả các đối số là tùy chọn.

  • buf mặc định Không có, ví dụ đối tượng StringIO
  • cột mặc định Không có, nên viết cột nào
  • col_space mặc định Không có, số khoảng trắng để viết giữa các cột
  • na_rep mặc định NaN , đại diện cho giá trị NA
  • trình định dạng mặc định Không có, một từ điển [theo cột] gồm các hàm, mỗi hàm nhận một đối số và trả về một chuỗi được định dạng
  • float_format mặc định Không có, một hàm nhận một đối số [float] duy nhất và trả về một chuỗi được định dạng; .
  • sparsify mặc định là Đúng, được đặt thành Sai cho DataFrame có chỉ mục phân cấp để in mọi khóa đa chỉ mục ở mỗi hàng.
  • index_names mặc định là True, sẽ in tên của các chỉ số
  • index mặc định là True, sẽ in chỉ mục [nghĩa là nhãn hàng]
  • header mặc định là True, sẽ in nhãn cột
  • căn chỉnh mặc định trái , sẽ in tiêu đề cột căn trái hoặc căn phải

Đối tượng Sê-ri cũng có phương thức to_string , nhưng chỉ có phương thức buf, na_rep, float_format arguments. There is also a độ dài , nếu được đặt thành True , sẽ .

Viết sang định dạng HTML¶

Đối tượng DataFrame có một phương thức mẫu to_html hiển thị nội dung của DataFrame dưới dạng bảng html. Các đối số của hàm như trong phương thức to_string được mô tả ở trên.

Tệp Excel¶

Lớp ExcelFile có thể đọc tệp Excel 2003 bằng cách sử dụng xlrd Python module and use the same parsing code as the above to convert tabular data into a DataFrame. To use it, create the ExcelFile .

clipdf = read_clipboard[sep='\s*']
8

Sau đó, sử dụng phương thức mẫu parse với tên trang tính, sau đó sử dụng các đối số bổ sung giống như các trình phân tích cú pháp ở trên.

clipdf = read_clipboard[sep='\s*']
9

Để đọc trang tính từ tệp Excel 2007, bạn có thể chuyển tên tệp bằng . xlsx , trong trường hợp đó, mô-đun openpyxl sẽ được sử dụng để đọc tệp.

Để ghi một đối tượng DataFrame vào một trang tính của tệp Excel, bạn có thể sử dụng phương thức phiên bản to_excel . Các đối số phần lớn giống như to_csv được mô tả ở trên, đối số đầu tiên là tên của tệp excel và đối số thứ hai tùy chọn là tên của trang tính . Ví dụ.

#Column specifications are a list of half-intervals
In [601]: colspecs = [[0, 6], [8, 20], [21, 33], [34, 43]]

In [602]: df = read_fwf['bar.csv', colspecs=colspecs, header=None, index_col=0]

In [603]: df
Out[603]: 
               X.2         X.3      X.4
X.1                                    
id8141  360.242940  149.910199  11950.7
id1594  444.953632  166.985655  11788.4
id1849  364.136849  183.628767  11806.2
id1230  413.836124  184.375703  11916.8
id1948  502.953953  173.237159  12468.3
40

Tệp có . xls sẽ được viết bằng cách sử dụng xlwt và những phần mở rộng có . xlsx phần mở rộng sẽ được viết bằng cách sử dụng openpyxl . Lớp Bảng điều khiển cũng có một phương thức cá thể to_excel , ghi từng Khung dữ liệu trong Bảng điều khiển vào một trang tính riêng biệt.

Để ghi các DataFrame riêng biệt vào các trang tính riêng biệt trong một tệp Excel, người ta có thể sử dụng lớp ExcelWriter, như trong ví dụ sau

0 là gì. 3 F bằng Python?

Bằng cách sử dụng 0. 3f làm trình giữ chỗ định dạng, chúng tôi có thể chứa số vị trí thập phân đến 3 .

0 là gì. 2 F bằng Python?

%f dành cho số float. 02. 01 Ngoài chỉ báo, bạn cũng có thể đặt thông tin định dạng. số 0. 2 ở đây yêu cầu Python đặt bao nhiêu chữ số ở bên trái của số thập phân tùy thích, nhưng chỉ 2 chữ số có nghĩa ở bên phải . 02. 15 Định dạng này sẽ hoạt động không chỉ ở dạng nổi.

Là gì. định dạng trong Python 3?

Phương thức format[] định dạng [các] giá trị đã chỉ định và chèn chúng vào bên trong trình giữ chỗ của chuỗi . Trình giữ chỗ được xác định bằng cách sử dụng dấu ngoặc nhọn. {}. Đọc thêm về trình giữ chỗ trong phần Trình giữ chỗ bên dưới. Phương thức format[] trả về chuỗi đã định dạng.

Chủ Đề