Как читать частями | GPTMain News

Введение

В науке о данных вы столкнетесь со многими сложными проблемами, которые нужно решить. Одной из основных проблем, с которыми вы сталкиваетесь, является этап подготовки данных. Большая часть эффективной науки о данных направлена ​​на то, чтобы научиться эффективно работать с данными. Одним из самых первых шагов работы с данными является загрузка данные. Звучит просто, правда? Подумайте еще раз. Во многих ситуациях наборы данных слишком велики, чтобы поместиться в локальную память вашего компьютера. Итак, что делать, если набор данных, с которым вы работаете, не помещается в локальную память? Вот тут-то и вступает в игру фрагментирование.

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

Читайте также: Введение в долговременную краткосрочную память (LSTM)

Сравнение традиционной загрузки данных pandas и загрузки pandas с фрагментированием
Рисунок 1. Рабочий процесс разделения на фрагменты

В этой статье мы расскажем, как выполнить фрагментацию с помощью библиотеки Python. панды. Панды«яЭто библиотека с открытым исходным кодом, имеющая лицензию BSD, предоставляющая высокопроизводительные и простые в использовании структуры данных и инструменты анализа данных». Это де-факто библиотека для работы с данными в Python, предоставляющая множество полезных и эффективных функций для своих структур данных.

Основное использование

Чтобы читать в pandas по частям, необходимо понимать, как pandas выполняет ввод/вывод файлов (IO) и основные функции для ввода/вывода файлов в pandas. Чтобы ознакомиться с этими функциями, ознакомьтесь с документацией pandas: Ввод, вывод. Pandas использует соглашение «read_» для ввода файла и «to_» для вывода файла. Это означает, что все функции ввода и вывода файлов будут соответствовать следующему синтаксису:

import pandas as pd
file1 = pd.read_csv("myInputFile.csv") ## File Input
file1.to_csv("myOutputFile.csv") ## File Output

Для конкретного блока кода выше мы читаем тип файла «csv» или значения, разделенные запятыми, и это будет основной темой остальной части статьи. Другие типы файлов, которые можно прочитать в pandas с помощью этого соглашения, перечислены в таблице 1.

Тип файла Синтаксис ввода Синтаксис вывода
Плоские файлы (csv, txt, tsv и т. д.) pd.read_csv() pd.to_csv()
Файлы Excel pd.read_excel() pd.to_excel()
JSON-файлы pd.read_json() pd.to_json()
HTML-файлы pd.read_html() pd.to_html()
XML-файлы pd.read_xml() pd.to_xml()
Файлы HDFStore (HDF5) pd.read_hdf() pd.to_csv() Использовать параметры плоского файла
Перьевые файлы pd.read_feather() pd.to_csv() Использовать параметры плоского файла
Паркетные пилки pd.read_parquet() pd.to_csv() Использовать параметры плоского файла
ORC-объекты pd.read_orc() pd.to_csv() Использовать параметры плоского файла
SAS-файлы pd.read_sas() pd.to_sas()
SPSS-файлы pd.read_spss() pd.to_csv() Использовать параметры плоского файла
SQL-таблицы pd.read_sql_table(), pd.read_sql_query(), pd.read_sql() pd.to_sql()
Подключения Google BigQuery pd.read_gbg() pd.to_csv() Использовать параметры плоского файла
STATA-файлы pd.read_stata() pd.to_stata()
Таблица 1. Функции файлового ввода-вывода, предоставляемые библиотекой pandas

Теперь, когда вы понимаете основной синтаксис загрузки и сохранения данных с помощью pandas, давайте более подробно рассмотрим read_csv() и то, как его можно использовать для выполнения фрагментирования. Функция read_csv() имеет более 50 возможных параметров, которые может установить пользователь, но для большинства случаев использования вам нужно понимать только несколько основных параметров, в основном путь к файлу и параметры разделителя. Они необходимы для правильного чтения интересующего файла. Путь к файлу — это расположение интересующего файла. Разделитель определяет, какой символ (обычно запятая или символ табуляции) обозначает одну ячейку в файле. Для чтения порциями панда предоставляет параметр «chunksize», который создает итерируемый объект, считывающий н количество строк в блоках. В приведенном ниже блоке кода вы можете узнать, как использовать параметр «chunksize» для загрузки объема данных, который поместится в память вашего компьютера. В качестве примера мы используем numpy для генерации случайных гауссовых чисел для создания файлов данных CSV формы (10 000, 10) или 10 000 строк по 10 столбцов. Затем мы загружаем данные с параметром «chunksize», установленным на 100, и сравниваем их с традиционным методом загрузки в кадрах данных pandas, чтобы увидеть, дают ли они тот же результат при сложении 2 и 3 столбцов вместе.

#!/usr/bin/env python # coding: utf-8 
import pandas as pd import numpy as np import os for i in range(200):     
data = np.random.normal(size=(10000, 10))     
data = pd.DataFrame(data)     
data.to_csv("./data/test"+str(i+1).zfill(3)+".csv", sep=",") 
testfiles = os.listdir("./data/") testfiles = np.sort(testfiles)                 
 ###### Chunking pandas approach ####### 
all_data2 = [] ### List to gather all dataframes of results for i in testfiles:     
result = [] ### List to gather all series of add_col1_with_col2         
with pd.read_csv("data/"+i, sep=",", chunksize=100, index_col=0) as reader:         
for chunk in reader:             
add_col1_with_col2 = chunk.iloc[:, 1] + chunk.iloc[:, 2]             
result.append(add_col1_with_col2)     
result = pd.concat(result)     
all_data2.append(result)      
result2 = pd.concat(all_data2)               
###### Traditional pandas approach ####### 
all_data = [] for i in testfiles:     
data2 = pd.read_csv("data/"+i, index_col=0)     
all_data.append(data2)      
all_data = pd.concat(all_data) result1 = all_data.iloc[:, 1] + all_data.iloc[:, 2] 
### Results are the same np.unique(result1 == result2) 
#### OUTPUT #### array([ True])

Как мы видим из результатов, оба метода дают один и тот же результат, а это означает, что метод фрагментирования работает одинаково, но позволяет вам работать с данными эффективно с точки зрения использования памяти. Давайте рассмотрим, что мы сделали с обоими методами. Во-первых, в методах фрагментирования мы используем функцию read_csv() с параметром chunksize, равным 100, в качестве вызова итератора «reader». Итератор предоставляет нам метод get_chunk() в виде чанка. Мы перебираем фрагменты и добавляем второй и третий столбцы. Мы добавляем результаты в список и создаем DataFrame с помощью pd.concat(). Затем мы перебираем все файлы и делаем то же самое, получаем результаты каждого файла и сохраняем их в другом списке. Этот список мы снова объединяем с помощью pd.concat(). Во втором способе мы просто открываем все файлы и добавляем их вместе с помощью pd.concat(). Затем мы выполняем математические вычисления для всех данных одновременно. Мы можем это сделать, потому что в качестве примера мы используем набор данных, который помещается в память. Затем мы проверяем, дает ли метод фрагментирования тот же результат, что и традиционный метод, и это так. Этот пример позволяет нам увидеть полезность опции pandas «chunk_size».

Читайте также: Программирование для детей: как создать Pacman на Scratch

Также обратите внимание на Даск

При работе с большими файлами появилось множество нововведений, которые также могут помочь вам упростить выполнение тех же задач. Одним из таких нововведений является библиотека Python Dask. Dask — гибкая библиотека для параллельных вычислений. Он имеет множество замечательных функций, которые можно использовать и на вашем локальном компьютере. Например, вы можете использовать фреймы данных dask так же, как вы используете фреймы данных pandas, но они всегда будут загружаться в память! Как, спросите вы? Это связано с тем, что dask фактически не загружает данные в память, пока это не будет явно указано! dask использует функцию «compute()», которую вы вызываете, когда готовы выполнить некоторые вычисления. Таким образом, вы можете настроить свой код так, чтобы он работал быстро и помещался в памяти. Посмотрите видео от dask, в котором объясняются основы фреймов данных dask.

Заключение: Pandas и большие фреймы данных

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

Подскажите утилиту работы с большими наборами данных, какие библиотеки или методы для работы с большими наборами данных вам больше всего нравятся? Оставьте комментарий ниже и дайте нам знать ваши мысли!

Последние статьи

Related articles

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

hentai lou nicehentai.com ahegeo hentai pron v bigztube.mobi kannada school girl sex videos sxsi com pornoko.net indian porn xnxx.com سكس.جماعي pornigh.com سكس لوسي bangali sex in kompoz2.com ganapa kannada movie songs
سكس مع المعلمة matureporni.com سكس كس مفتوح desi clip.com foxporns.info girls sexy pictures хентай манга hentaitale.net hentai zombie girl little sister doujin justhentaiporn.com kasumi tendo hentai افلام جيانا مايكلز gratisfucktube.com foto sex
desi gay porn vedio momyporn.mobi nepali x video مدام شرموطه freetube18x.com ايناس الدغيدي سكس tony tony chopper hentai hentaimangaz.com naruto new hentai manga الكس والزبر pornarabic.net احلى بزاز ميلفاية arabgrid.net فلم\سكس