Чтобы прочитать файл CSV с заголовком через NumPy в Python, мы можем использовать genfromtxt() с параметром name=True, или функцию loadtxt(), которая подходит для числовых данных, или функцию read() из функции csv().
Существует три разных метода чтения CSV-файла с заголовком в Python NumPy. Давайте посмотрим на них один за другим подробно.
Метод 1: используя genfromtxt
numpy.genfromtxt — это мощная функция, предоставляемая NumPy в Python, предназначенная для обработки загрузки данных из текстовых файлов с особым упором на файлы CSV.
Синтаксис:
data = np.genfromtxt(filename, delimiter=',', names=True)
Здесь,
Имя | Описание |
---|---|
filename | Имя входного CSV-файла, который мы хотим прочитать. |
delimiter | Параметр delimiter=’,’ указывает, что файл разделен запятыми. |
names | Параметр name=True сообщает NumPy использовать строку заголовка для определения имен столбцов, что позволит нам ссылаться на столбцы по имени их заголовка в Python. |
Пример. Давайте посмотрим код Python, который поможет нам через NumPy прочитать CSV с заголовком в Python, используя функцию genfromtxt.
import numpy as np filename = 'C:/Users/kumar/OneDrive/Desktop/CSVFile.csv' employee_data = np.genfromtxt(filename, delimiter=',', names=True, dtype=None, encoding='utf-8') print(employee_data)
Вывод:
- delimiter=’,’: указывает, что файл представляет собой CSV.
- names=True: это указывает genfromtxt рассматривать первую строку как заголовки столбцов.
- dtype=None: NumPy определит тип данных каждого столбца.
- encoding= ‘utf-8’: указывает кодировку файла, которая важна для чтения текстовых данных.
[('John Doe', 28, 'Marketing', 50000) ('Jane smith', 32, 'Engineering', 65000) ('Emily Davis', 45, 'Sales', 52000)]
Таким образом, NumPy читает CSV с заголовком в Python, используя функцию genfromtxt() с параметром name=True.
Чтобы прочитать определенный заголовок из CSV-файла в Python как массив NumPy, мы можем применить этот код:
import numpy as np filename = 'C:/Users/kumar/OneDrive/Desktop/CSVFile.csv' employee_data = np.genfromtxt(filename, delimiter=',', names=True, dtype=None, encoding='utf-8') Names = employee_data['Name'] print('Names of the Employees:', Names)
Вывод: давайте сделаем имена доступными только для чтения, ссылаясь только на имя заголовка («Имя»), и получим массив имен NumPy в Python.
Names of the Employees: ['John Doe' 'Jane smith' 'Emily Davis']
Метод 2: с помощью функции loadtxt()
Функция loadtxt NumPy — это простой инструмент для загрузки данных из текстовых файлов с упором на числовые данные в Python. В отличие от genfromtxt, loadtxt обычно работает быстрее, но менее гибок. Он не обрабатывает пропущенные значения и более ограничен в обработке нечисловых столбцов.
Однако loadtxt по-прежнему можно использовать для чтения файлов CSV с заголовками с некоторой ручной обработкой.
Синтаксис:
data = np.loadtxt(Filename, delimiter=',', skiprows=1)
Здесь:
Имя | Описание |
---|---|
Filename | Имя входного CSV-файла, который мы хотим прочитать. |
delimiter | Параметр delimiter=’,’ указывает, что файл разделен запятыми. |
skiprows | Аргумент skiprows=1 сообщает loadtxt пропустить первую строку(которая обычно является заголовком в файле CSV). |
Usecols | Usecols используется для выбора определенных столбцов. |
Пример: Давайте попробуем прочитать CSV-файл с заголовком на Python.
import numpy as np Filename = 'C:/Users/kumar/OneDrive/Desktop/CSVFile.csv' with open(Filename, 'r') as f: header = f.readline().strip().split(',') data = np.loadtxt(Filename, delimiter=',', skiprows=1, usecols=(1, 3)) ages = data[:, 0] # Age data salaries = data[:, 1] # Salary data print(header) print(ages) print(salaries)
Вывод: здесь мы печатаем заголовки и некоторые данные под некоторыми заголовками в виде массива в Python.
['Name', 'Age', 'Department', 'Salary'] [28. 32. 45.] [50000. 65000. 52000.]
Таким образом, мы можем использовать NumPy для чтения CSV с заголовком в Python.
Метод 3: с помощью csv.reader()
Функция csv.reader считывает файл построчно и возвращает каждую строку в виде списка строк в Python. Это означает, что нам нужно будет вручную преобразовать числовые данные в соответствующие типы.
Пример. Вот как мы можем использовать csv.reader для чтения файла CSV, а затем преобразовать его в массив NumPy в Python.
import numpy as np import csv path = 'C:/Users/kumar/OneDrive/Desktop/CSVFile.csv' with open(path, 'r') as f: reader = csv.reader(f, delimiter=',') headers = next(reader) data = np.array(list(reader)).astype(str) print(headers)
Вывод:
['Name', 'Age', 'Department', 'Salary']