Cách đọc và ghi tệp csv trong python bằng gấu trúc?
Tệp CSV (giá trị được phân tách bằng dấu phẩy) là định dạng tệp phổ biến để truyền và lưu trữ dữ liệu. Khả năng đọc, thao tác và ghi dữ liệu vào và từ các tệp CSV bằng Python là kỹ năng quan trọng cần thành thạo đối với bất kỳ nhà khoa học dữ liệu hoặc phân tích kinh doanh nào. Trong bài đăng này, chúng ta sẽ tìm hiểu về tệp CSV là gì, cách đọc tệp CSV vào Pandas DataFrames và cách ghi DataFrames trở lại tệp CSV phân tích bài đăng Show
Pandas là gói thao tác dữ liệu phổ biến nhất trong Python và DataFrames là kiểu dữ liệu Pandas để lưu trữ dữ liệu 2D dạng bảng Mục lục
Tải tệp CSV lên Python PandasQuy trình cơ bản để tải dữ liệu từ tệp CSV vào Khung dữ liệu Pandas (tất cả đều ổn) đạt được bằng cách sử dụng chức năng “read_csv” trong Pandas # Load the Pandas libraries with alias 'pd' import pandas as pd # Read data from file 'filename.csv' # (in the same directory that your python process is based) # Control delimiters, rows, column names with read_csv (see later) data = pd.read_csv("filename.csv") # Preview the first 5 lines of the loaded data data.head() Mặc dù mã này có vẻ đơn giản nhưng cần phải hiểu ba khái niệm cơ bản để nắm bắt đầy đủ và gỡ lỗi hoạt động của quy trình tải dữ liệu nếu bạn gặp sự cố
Mỗi chủ đề này được thảo luận bên dưới và chúng tôi kết thúc hướng dẫn này bằng cách xem xét một số cơ chế tải CSV nâng cao hơn và đưa ra một số ưu điểm và nhược điểm chung của định dạng CSV 1. Phần mở rộng tệp và loại tệpBước đầu tiên để làm việc với các tệp có giá trị được phân tách bằng dấu phẩy (CSV) là hiểu khái niệm về loại tệp và phần mở rộng tệp
Phần mở rộng tệp được ẩn theo mặc định trên nhiều hệ điều hành. Bước đầu tiên mà bất kỳ kỹ sư, kỹ sư phần mềm hoặc nhà khoa học dữ liệu có lòng tự trọng nào cũng sẽ thực hiện trên máy tính mới là đảm bảo rằng phần mở rộng tệp được hiển thị trong cửa sổ Explorer (Windows) hoặc Finder (Mac) của họ Để kiểm tra xem các phần mở rộng tệp có hiển thị trong hệ thống của bạn hay không, hãy tạo một tài liệu văn bản mới bằng Notepad (Windows) hoặc TextEdit (Mac) và lưu nó vào thư mục bạn chọn. Nếu bạn không thể nhìn thấy “. txt” trong thư mục của bạn khi bạn xem nó, bạn sẽ phải thay đổi cài đặt của mình
2. Biểu diễn dữ liệu trong tệp CSVTệp “CSV”, tức là tệp có kiểu tệp “csv”, là tệp văn bản cơ bản. Bất kỳ trình soạn thảo văn bản nào, chẳng hạn như NotePad trên windows hoặc TextEdit trên Mac, đều có thể mở tệp CSV và hiển thị nội dung. Sublime Text là một tùy chọn soạn thảo văn bản tuyệt vời và đa chức năng cho mọi nền tảng CSV là tiêu chuẩn để lưu trữ dữ liệu dạng bảng ở định dạng văn bản, trong đó dấu phẩy được sử dụng để phân tách các cột khác nhau và dòng mới (dấu xuống dòng/nhấn enter) được sử dụng để phân tách các hàng. Thông thường, hàng đầu tiên trong tệp CSV chứa tên của các cột chứa dữ liệu Và tập dữ liệu bảng ví dụ và dữ liệu định dạng CSV tương ứng được hiển thị trong sơ đồ bên dưới Các tệp giá trị được phân tách bằng dấu phẩy hoặc tệp CSV là các tệp văn bản đơn giản trong đó dấu phẩy và dòng mới được sử dụng để xác định dữ liệu dạng bảng theo cách có cấu trúcLưu ý rằng hầu hết mọi dữ liệu dạng bảng đều có thể được lưu trữ ở định dạng CSV – định dạng phổ biến vì tính đơn giản và linh hoạt của nó. Bạn có thể tạo một tệp văn bản trong trình soạn thảo văn bản, lưu nó với một. csv và mở tệp đó trong Excel hoặc Google Trang tính để xem biểu mẫu bảng Dấu phân cách / Dấu phân cách khác – tệp TSVSơ đồ phân tách bằng dấu phẩy cho đến nay là phương pháp phổ biến nhất để lưu trữ dữ liệu dạng bảng trong tệp văn bản Tuy nhiên, việc lựa chọn ký tự dấu phẩy ',' cho các cột phân cách là tùy ý và có thể được thay thế khi cần thiết. Các lựa chọn thay thế phổ biến bao gồm tab (“\t”) và dấu chấm phẩy (“;”). Các tệp được phân tách bằng tab được gọi là tệp TSV (Giá trị được phân tách bằng tab) Khi tải dữ liệu bằng Pandas, hàm read_csv được sử dụng để đọc bất kỳ tệp văn bản nào được phân tách và bằng cách thay đổi dấu phân cách bằng tham số Dấu phân cách trong trường văn bản – QuotecharMột điều phức tạp khi tạo tệp CSV là nếu bạn thực sự có dấu phẩy, dấu chấm phẩy hoặc tab ở một trong các trường văn bản mà bạn muốn lưu trữ. Trong trường hợp này, điều quan trọng là sử dụng "ký tự trích dẫn" trong tệp CSV để tạo các trường này Ký tự trích dẫn có thể được chỉ định trong Pandas. read_csv sử dụng đối số Trong ví dụ hiển thị, tệp được phân cách bằng dấu chấm phẩy, có dấu ngoặc kép dưới dạng ký tự trích dẫn được tải vào Pandas và được hiển thị trong Excel. Việc sử dụng ký tự trích dẫn cho phép cột “NickName” chứa dấu chấm phẩy mà không bị chia thành nhiều cột hơn Ngoài dấu phẩy trong tệp CSV, dữ liệu được phân tách bằng tab và dấu chấm phẩy cũng phổ biến. Các ký tự trích dẫn được sử dụng nếu dữ liệu trong một cột có thể chứa ký tự phân cách. Trong trường hợp này, cột 'NickName' chứa các ký tự dấu chấm phẩy và do đó, cột này được "trích dẫn". Chỉ định dấu phân cách và ký tự trích dẫn trong pandas. read_csv3. Python - Đường dẫn, Thư mục, TệpKhi bạn chỉ định tên tệp cho Pandas. read_csv, Python sẽ tìm trong “thư mục làm việc hiện tại” của bạn. Thư mục làm việc của bạn thường là thư mục mà bạn đã bắt đầu quy trình Python hoặc sổ ghi chép Jupyter của mình từ đó Pandas tìm kiếm 'thư mục làm việc hiện tại' của bạn để tìm tên tệp mà bạn chỉ định khi mở hoặc tải tệp. FileNotFoundError có thể do tên tệp sai chính tả hoặc thư mục làm việc không chính xácTìm đường dẫn Python của bạnĐường dẫn Python của bạn có thể được hiển thị bằng cách sử dụng mô-đun Để tìm thư mục làm việc hiện tại của bạn, chức năng cần thiết là # Find out your current working directory import os print(os.getcwd()) # Out: /Users/shane/Documents/blog # Display all of the files found in your current working directory print(os.listdir(os.getcwd()) # Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']0 có thể được sử dụng để hiển thị tất cả các tệp trong một thư mục, đây là một cách kiểm tra hữu ích để xem liệu tệp CSV bạn đang tải có nằm trong thư mục như mong đợi hay không # Find out your current working directory import os print(os.getcwd()) # Out: /Users/shane/Documents/blog # Display all of the files found in your current working directory print(os.listdir(os.getcwd()) # Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv'] Trong ví dụ trên, thư mục làm việc hiện tại của tôi nằm trong thư mục ‘/Users/Shane/Document/blog’. Bất kỳ tệp nào nằm trong thư mục này sẽ có sẵn ngay lập tức cho hàm open() của tệp Python hoặc hàm Pandas read csv Thay vì di chuyển các tệp dữ liệu cần thiết vào thư mục làm việc của bạn, bạn cũng có thể thay đổi thư mục làm việc hiện tại của mình thành thư mục chứa các tệp đó bằng cách sử dụng # Find out your current working directory import os print(os.getcwd()) # Out: /Users/shane/Documents/blog # Display all of the files found in your current working directory print(os.listdir(os.getcwd()) # Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']1 Đang tải tệp. Đường dẫn tuyệt đối và tương đốiKhi chỉ định tên tệp cho hàm read_csv, bạn có thể cung cấp cả đường dẫn tệp tuyệt đối hoặc tương đối
Bạn nên sử dụng các đường dẫn tương đối nếu có thể trong các ứng dụng, vì các đường dẫn tuyệt đối không có khả năng hoạt động trên các máy tính khác nhau do cấu trúc thư mục khác nhau 4. Lỗi tải tệp CSV của gấu trúcLỗi phổ biến nhất mà bạn gặp phải khi tải dữ liệu từ tệp CSV vào Pandas sẽ là
Đọc tệp CSV nâng caoCó một số tham số linh hoạt bổ sung trong hàm Pandas read_csv() hữu ích khi có trong kho kỹ thuật khoa học dữ liệu của bạn Chỉ định kiểu dữ liệuNhư đã đề cập trước đây, tệp CSV không chứa bất kỳ thông tin loại dữ liệu nào. Các loại dữ liệu được suy ra thông qua việc kiểm tra các hàng trên cùng của tệp, điều này có thể dẫn đến lỗi. Ví dụ, để chỉ định loại dữ liệu cho các cột khác nhau theo cách thủ công, thông số dtype có thể được sử dụng với một từ điển tên cột và loại dữ liệu sẽ được áp dụng, chẳng hạn. # Find out your current working directory import os print(os.getcwd()) # Out: /Users/shane/Documents/blog # Display all of the files found in your current working directory print(os.listdir(os.getcwd()) # Out: ['test_delimted.ssv', 'CSV Blog.ipynb', 'test_data.csv']2 Lưu ý rằng đối với ngày và giờ, định dạng, cột và hành vi khác có thể được điều chỉnh bằng cách sử dụng các tham số parse_dates, date_parser, dayfirst, keep_date Bỏ qua và chọn hàng và cột từ tệpTham số nrows chỉ định số lượng hàng từ đầu tệp CSV cần đọc, điều này rất hữu ích khi lấy mẫu của một tệp lớn mà không cần tải hoàn toàn. Tương tự, tham số skiprows cho phép bạn chỉ định các hàng cần loại bỏ, ở đầu tệp (cung cấp một số nguyên) hoặc trong toàn bộ tệp (cung cấp danh sách các chỉ số hàng). Tương tự, tham số usecols có thể được sử dụng để chỉ định cột nào trong dữ liệu sẽ tải Biểu tượng giá trị bị thiếu tùy chỉnhKhi dữ liệu được xuất sang CSV từ các hệ thống khác nhau, các giá trị bị thiếu có thể được chỉ định bằng các mã thông báo khác nhau. Thông số na_values cho phép bạn tùy chỉnh các ký tự được nhận dạng là giá trị bị thiếu. Các giá trị mặc định được hiểu là NA/NaN là. ‘’, ‘#N/A’, ‘#N/A N/A’, ‘#NA’, ‘-1. #IND', '-1. #QNAN’, ‘-NaN’, ‘-nan’, ‘1. #IND', '1. #QNAN’, ‘N/A’, ‘NA’, ‘NULL’, ‘NaN’, ‘n/a’, ‘nan’, ‘null’ # Advanced CSV loading example data = pd.read_csv( "data/files/complex_data_example.tsv", # relative python path to subdirectory sep='\t' # Tab-separated value file. quotechar="'", # single quote allowed as quote character dtype={"salary": int}, # Parse the salary column as an integer usecols=['name', 'birth_date', 'salary']. # Only load the three columns specified. parse_dates=['birth_date'], # Intepret the birth_date column as a date skiprows=10, # Skip the first 10 rows of the file na_values=['.', '??'] # Take any '.' or '??' values as NA ) Ưu điểm và nhược điểm của định dạng CSVNhư với tất cả các quyết định kỹ thuật, việc lưu trữ dữ liệu của bạn ở định dạng CSV có cả ưu điểm và nhược điểm. Hãy nhận biết những cạm bẫy và sự cố tiềm ẩn mà bạn sẽ gặp phải khi tải, lưu trữ và trao đổi dữ liệu ở định dạng CSV Về mặt tích cực
Tuy nhiên, định dạng CSV có một số mặt tiêu cực
Bên cạnh đó, trong nỗ lực khắc phục một số nhược điểm này, hai nhà phát triển khoa học dữ liệu nổi tiếng trong cả hệ sinh thái R và Python, Wes McKinney và Hadley Wickham, gần đây đã giới thiệu Định dạng Feather, nhằm mục đích trở thành một định dạng nhanh, đơn giản, mở, Làm thế nào bạn có thể đọc và ghi dữ liệu từ. Tệp CSV bằng Python?Các bước để đọc tệp CSV. . Nhập thư viện csv. nhập csv Mở tệp CSV. Các. . Sử dụng tệp csv. đối tượng reader để đọc tệp CSV. csvreader = csv. người đọc (tập tin) Trích xuất tên trường. Tạo một danh sách trống gọi là tiêu đề. . Trích xuất các hàng/bản ghi. . Đóng tệp Bạn có thể đọc và ghi vào tệp CSV cùng lúc với Python không?Bạn có thể làm open("data. csv", "rw") , điều này cho phép bạn đọc và viết cùng một lúc. |