Cách đọc các cột từ tệp văn bản trong Python

Bài viết này sẽ cung cấp cho bạn hướng dẫn chi tiết về cách bạn có thể sử dụng Python để đọc các tệp văn bản lớn. Đoạn mã đầy đủ chức năng, sẵn sàng để thực thi được bao gồm trong hướng dẫn này để giúp bạn tăng tốc trong 10 phút sau khi đọc bài viết này

Trước tiên, hãy để chúng tôi làm quen với các cấu trúc dữ liệu nâng cao có sẵn trong Python mà chúng tôi sẽ sử dụng để lưu trữ và xử lý dữ liệu từ các tệp, chỉ trong trường hợp bạn chưa quen với lập trình Python

Cấu trúc dữ liệu nâng cao trong Python

Python có hai cấu trúc dữ liệu tiên tiến và mạnh mẽ giúp nó vượt trội về chức năng so với C/C++. Điều này làm cho nó trở thành một ngôn ngữ lý tưởng cho các ứng dụng cần nhiều dữ liệu số cạnh tranh với Matlab

ndarrays và khung dữ liệu

Chuyển thể từ tài liệu nguồn mở Numpy và Pandas

Mảng NumPy

Mảng Numpy hoặc ndarray là các mảng có thể được thu nhỏ theo kích thước 'n'. Chúng được sử dụng tốt nhất dưới dạng cấu trúc mảng hai chiều để biểu diễn ma trận. Bản thân mô-đun Numpy chứa các thư viện hàm mạnh mẽ cho nhiều phép toán số và đại số

Khung dữ liệu gấu trúc

Khung dữ liệu được xây dựng dựa trên ndarray hai chiều để thêm chức năng bổ sung. Ndarray hai chiều hiện có một cột riêng cho chỉ mục mảng và tất cả các tiêu đề cột hiện có thể định địa chỉ riêng. Quan trọng hơn, giờ đây mỗi cột có thể chứa một kiểu dữ liệu khác nhau [int, float hoặc string]

Tệp văn bản được đọc bằng mã Python

Hãy chuyển sang phần hướng dẫn và làm quen với tệp văn bản trình diễn

Đó là bảng dữ liệu 14 hàng x 20 cột được lưu dưới dạng tệp txt. Nó chứa dữ liệu ở cả ba định dạng dữ liệu. int, float và chuỗi. Tên tệp là BusData

hình 1. Tệp dữ liệu sẽ được phân tích cú pháp bằng mã của chúng tôi

Tệp CDF Hệ thống IEEE 14-Bus

Tiếp theo, hãy xem đoạn mã được cung cấp bên dưới, để đọc tệp này và chúng tôi sẽ giải thích từng dòng mã này trong phần sau

Mã Python để đọc dữ liệu từ tệp văn bản

# Copyrights © Ali Khan [Author]
# Permitted to use with attribution

import numpy
import pandas

def Read []:
    
    global BusData, BusDataList, BusDataArray, BusDataReshaped
    
    X = open['C:/Users/user/OneDrive - Washington State University [email.wsu.edu]/EE - 521/BusData.txt', 'r']
    BusData = X.read[]                      
    
    BusDataList = BusData.split[]
    BusDataArray = numpy.array[BusDataList]
    BusDataReshaped = BusDataArray.reshape[14,20] #Make a matrix out of 1D Array

Read[]

BusDataFrame = pandas.DataFrame[BusDataReshaped, columns =['BusNumber', 'Bus', 'Busx', 'BusClass', 'Unused1', 'Unused2', 'BusType', 'Unused3', 'Unused4', 'BusLoadMW', 'BusLoadMVAR', 'BusGenMW', 'BusGenMVAR', 'InitialVoltAngle', 'InitialVolt', 'Qlimit+', 'Qlimit-', 'Unused5', 'Shunt', 'Unused']]

print[BusDataFrame.BusClass[6]]

Giải thích mã

Đây là một lời giải thích về những gì đang xảy ra trong mã

Khởi tạo. Nhập Numpy và Pandas

dòng 4. Nhập gói numpy trong dự án

Dòng 5. Nhập gói gấu trúc trong dự án

dòng 7. Bắt đầu định nghĩa hàm Read[]. Luôn luôn là một cách tốt để phá vỡ mã của bạn trong các chức năng

Dòng 9. Định nghĩa các biến toàn cục

Trong Python, chỉ các biến toàn cục mới xuất hiện trong trình khám phá biến và chúng có thể được tham chiếu bên ngoài các hàm. Để trình diễn, tôi đã định nghĩa cả bốn là toàn cầu. Mặt khác, chỉ có biến BusDataReshape được khai báo toàn cục

Hình 2. Trình khám phá biến Spyder hiển thị chi tiết của mọi biến

Bản quyền © Ali Khan [Tác giả]

Mở và đọc tệp mục tiêu

Dòng 11. Hàm open[] trỏ đến vị trí thư mục của tệp BusData. txt. Định nghĩa được gán cho biến ngẫu nhiên X

Dòng 12. read[] đọc toàn bộ tệp dưới dạng chuỗi và gán nó cho biến BusData. Hình 2 cho thấy BusData hiện là một chuỗi có 1792 ký tự

Tách tệp nhân vật khôn ngoan

Dòng 14. split[] trong Python, chia chuỗi thành một danh sách tại các điểm mà chúng là khoảng trắng. Dữ liệu hiện được chuyển đổi thành danh sách gồm 280 phần tử và được gán cho biến BusDataList. Tham khảo Hình 2

Chuyển đổi sang mảng Numpy

Dòng 15. Danh sách được chuyển đổi thành một mảng numpy bởi numpy. hàm mảng []. Hình 2 cho thấy BusDataArray bây giờ là một mảng chuỗi kiểu dữ liệu và có 280 phần tử

Vấn đề là nó vẫn không giống như bảng dữ liệu ban đầu của chúng tôi trong tệp. Nó cần phải được định hình lại

Dòng 16. các numpy. reshape[] hàm từ gói numpy định hình lại mảng thành các kích thước mong muốn của chúng ta là 14 x 20. Hình 2 cho thấy biến BusDataReshape bây giờ là một ndarray và có kích thước 14 x 20

Như chúng ta có thể thấy, kiểu dữ liệu của tất cả các giá trị vẫn là chuỗi, nhưng hãy nhớ rằng, tệp gốc có cả số nguyên và số float trong dữ liệu. Để đảm bảo rằng tất cả dữ liệu được xử lý theo đúng loại dữ liệu của nó, chúng tôi cần chuyển đổi nó thành Khung dữ liệu Pandas

Hình 3. BusDataFrame, hiển thị 13 cột đầu tiên trong trình khám phá biến

Bản quyền © Ali Khan [Tác giả]

Chuyển đổi một mảng Numpy thành khung dữ liệu

Dòng 20. Dòng này cuối cùng thực hiện công việc chuyển đổi một chuỗi các chuỗi thành một khung dữ liệu gấu trúc

gấu trúc. Hàm dataframe[] lấy mảng numpy được định hình lại và tên của tất cả 20 tiêu đề cột làm đầu vào. Hình 3 hiển thị khung dữ liệu đã hình thành và Hình 2 xác minh điều này trong trình khám phá biến

hình 4. Kết quả in

Giá trị tham chiếu của khung dữ liệu Pandas

dòng 22. Các giá trị của khung dữ liệu này có thể được khung dữ liệu truy cập rất thuận tiện. đầu mục. [chỉ mục] cú pháp

Kiểm tra các loại biến sẽ cho thấy rằng cả ba loại dữ liệu chuỗi, số nguyên và số float của mỗi cột đều được khung dữ liệu tự động bảo toàn

Bài viết này là chính xác và đúng với sự hiểu biết tốt nhất của tác giả. Nội dung chỉ nhằm mục đích cung cấp thông tin hoặc giải trí và không thay thế cho lời khuyên cá nhân hoặc lời khuyên chuyên nghiệp trong các vấn đề kinh doanh, tài chính, pháp lý hoặc kỹ thuật

Chủ Đề