Чтобы прочитать файл 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']
