Найти тему
Машинное обучение

5 различных способов загрузки данных в Python

Оглавление

Данные - это хлеб с маслом для специалиста по анализу данных, поэтому знание многих подходов к загрузке данных для анализа имеет решающее значение. Здесь рассматриваются пять методов Python для получения данных с примерами кода, которые вы можете использовать.

Как новичок, вы можете знать только один способ загрузки данных (обычно в формате CSV), который заключается в чтении их с помощью функции pandas.read_csv. Это одна из наиболее популярных и простых функций, но и другие способы очень полезны и, безусловно пригодятся.

Способы, которые я собираюсь обсудить:

  • Вручную
  • функция loadtxt
  • функция genfromtxt
  • функция read_csv
  • Pickle

Набор данных, который мы будем использовать для загрузки данных, можно найти здесь. Он называется 100-Sales-Records.

Import

Мы будем использовать пакеты Numpy, Pandas и Pickle, поэтому импортируйте их.

import numpy as np
import pandas as pd
import pickle

1. Вручную

Это самый сложный вариант, поскольку вам придется разработать пользовательскую функцию, которая сможет загружать данные за вас. Вам придется иметь дело с обычными концепциями файлов Python и использовать их для чтения файла .csv.

Давайте сделаем это на файле 100 записей о продажах.

Хммм, что это такое????? Кажется немного сложным кодом!!!! Давайте разберем все пошагово, чтобы вы понимали, что происходит, и могли применить подобную логику для чтения .csv-файла.

Здесь я создал функцию load_csv, которая принимает в качестве аргумента путь к файлу, который вы хотите прочитать.

У меня есть список data, в котором будут данные из CSV-файла, и список col, в котором будут имена столбцов. Теперь, проверив csv вручную, я знаю, что имена столбцов находятся в первой строке, поэтому при первой итерации я должен хранить данные первой строки в col, а остальные строки - в data.

Для проверки первой итерации я использовал булеву переменную checkcol, которая по умолчанию равна False, и когда она равна false в первой итерации, она сохраняет данные первой строки в col, а затем устанавливает checkcol в True, поэтому мы будем работать со списком данных и сохранять остальные значения в списке данных.

Логика

Основная логика заключается в том, что я выполнил итерацию в файле, используя функцию readlines() в Python. Эта функция возвращает список, содержащий все строки внутри файла.

При чтении заголовков она обнаруживает новую строку как символ \n, который является символом окончания строки, поэтому, чтобы удалить его, я использовал функцию str.replace.

Поскольку это .csv-файл, мне нужно разделить вещи на основе запятых, поэтому я разделю строку, используя string.split(','). Для первой итерации я сохраню первую строку, которая содержит имена столбцов в списке, известном как col. Затем я добавлю все данные в список, известный как data.

Чтобы данные читались красиво, я вернул их в формате dataframe, потому что читать dataframe проще, чем массив numpy или список python.

Вывод

myData = load_csv('100 Sales Record.csv')
print(myData.head())
-2

Плюсы и минусы

Важным преимуществом является то, что у вас есть вся гибкость и контроль над структурой файла, и вы можете читать его в любом формате и любым способом и сохранять его.

Вы также можете читать файлы, которые не имеют стандартной структуры, используя свою собственную логику.

Важными недостатками этого метода являются сложность написания, особенно для стандартных типов файлов, поскольку они легко читаются. Приходится жестко кодировать алгоритм, что требует проб и ошибок.

Его следует использовать только в тех случаях, когда файл не имеет стандартного формата или вам нужна гибкость и чтение файла таким способом, который недоступен через библиотеки.

2. Функция Numpy.loadtxt

Это встроенная функция в Numpy, известной числовой библиотеке в Python. Это действительно простая функция для загрузки данных. Она очень полезна для чтения данных, которые имеют одинаковый тип данных.

Когда данные более сложные, их трудно читать с помощью этой функции, но когда файлы легкие и простые, эта функция действительно мощная.

Чтобы получить данные одного типа, вы можете загрузить этот набор фиктивных данных. Давайте перейдем к коду.

df = np.loadtxt('convertcsv.csv', delimeter = ',')

Здесь мы просто использовали функцию loadtxt, передав delimeter в качестве ',', поскольку это CSV-файл.

Теперь, если мы выведем df, мы увидим наши данные в довольно приличных массивах numpy, готовых к использованию.

print(df[:5,:])

-3

Из-за большого объема данных мы вывели только первые 5 строк.

Плюсы и минусы

Важным аспектом использования этой функции является то, что вы можете быстро загружать данные из файла в массивы numpy.

Недостатки этой функции заключаются в том, что вы не можете иметь различные типы данных или пропущенные строки в ваших данных.

3. Numpy.genfromtxt()

Мы будем использовать набор данных '100 Sales Records.csv', который мы использовали в нашем первом примере, чтобы продемонстрировать, что мы можем иметь несколько типов данных в нем.

Давайте перейдем к коду.

data = np.genfromtxt('100 Sales Records.csv', delimiter=',')

И чтобы увидеть это более четко, мы можем просто увидеть это в формате датафрейма, т.е,

>>> pd.DataFrame(data)
-4

Подождите? Что это? О, мы пропустили все столбцы со строковым типом данных. Как с этим быть?

Просто добавьте еще один параметр dtype и установите dtype в None, что означает, что скрипт должен сам позаботиться о типах данных каждого столбца.

data = np.genfromtxt('100 Sales Records.csv', delimiter=',', dtype=None)

И затем для вывода:

>>> pd.DataFrame(data).head()
-5

Довольно лучше, чем первый вариант, но здесь наши заголовки столбцов являются строками, чтобы сделать их заголовками столбцов, мы должны добавить еще один параметр, который является names и установить его в True, так что он будет принимать первую строку в качестве заголовка столбца.

Т.е.

data = np.genfromtxt('100 Sales Records.csv', delimiter=',', dtype=None, names = True)

и мы можем распечатать его как:

>>> pd.DataFrame(df3).head()
-6

И здесь мы видим, что он успешно добавил имена столбцов в датафрейм.

Теперь последняя проблема заключается в том, что столбцы, которые имеют строковый тип данных, не являются реальными строками, но они находятся в формате байтов. Вы можете видеть, что перед каждой строкой стоит символ b', поэтому, чтобы встретиться с ними, мы должны декодировать их в формат utf-8.

df3 = np.genfromtxt('100 Sales Records.csv', delimiter=',', dtype=None, names=True, encoding='utf-8')

Это вернет наш фрейм данных в нужном виде.

>>> pd.DataFrame(df3)
-7

4. Pandas.read_csv()

Pandas - это очень популярная библиотека для работы с данными, и она очень часто используется датасаетистами. Её одна из самых важных и развитых функций - read_csv(), которая может легко прочитать любой файл .csv и помочь нам манипулировать им. Давайте сделаем это на нашем наборе данных 100-Sales-Record.

Эта функция очень популярна благодаря простоте использования. Вы можете сравнить ее с нашими предыдущими кодами и проверить ее.

>>> pdDf = pd.read_csv('100 Sales Record.csv')
>>> pdDf.head()
-8

И знаете что? Мы закончили. На самом деле это было так просто и легко использовать. Pandas.read_csv определенно предлагает множество других параметров для настройки нашего набора данных, например, в нашем файле convertcsv.csv у нас не было имен столбцов, поэтому мы можем прочитать его как:

>>> newdf = pd.read_csv('convertcsv.csv', header=None)
>>> newdf.head()
-9

И мы видим, что он прочитал файл csv без заголовка.

5. Pickle

Если ваши данные в не читаемом формате, вы можете использовать pickle для сохранения их в двоичном формате.

Мы возьмем наш CSV-файл 100-Sales-Record и сначала сохраним его в формате pickle, чтобы мы могли его прочитать.

with open('test.pkl','wb') as f:
pickle.dump(pdDf, f)

Это создаст новый файл test.pkl, внутри которого будет наш pdDf из заголовка Pandas.

Теперь, чтобы открыть его с помощью pickle, мы просто должны использовать функцию pickle.load.

with open("test.pkl", "rb") as f:
d4 = pickle.load(f)
>>> d4.head()
-10

И вот мы успешно загрузили данные из файла pickle в формате pandas.DataFrame.

Теперь вы знаете 5 различных способов загрузки файлов данных в Python, что может помочь вам в различных способах загрузки, набора данных при работе над вашими повседневными проектами.

Machinelearning
Машинное обучение RU