Ускорьте анализ данных с помощью этих 12 эффективных функций Numpy и Pandas

анализ данных NumPy

Все мы знаем, что Numpy — это библиотека расширений в среде Python, которая поддерживает большое количество операций с многомерными массивами и матрицами; Pandas — это также пакет для обработки и анализа данных в среде Python, а также мощная библиотека анализа данных. Оба играют важную роль в повседневном анализе данных, что было бы чрезвычайно сложно без поддержки Numpy и Pandas. Но иногда нам нужно ускорить анализ данных, есть ли способ нам помочь?

Выбрано из TowardsDataScience, автор: Kunal Dhariwal, составлено Heart of Machines, участие: Jamin, Du Wei, Zhang Qian.

В этой статье инженер по данным и аналитике Кунал Дхаривал знакомит нас с 12 функциями Numpy и Pandas, которые упрощают и упрощают анализ данных. Наконец, читатели также могут найти Jupyter Notebook для кода, используемого в этой статье, в проекте GitHub.

Адрес проекта: https://github.com/kunaldhariwal/12-Amazing-Pandas-NumPy-Functions

6 эффективных функций Numpy

Сначала начните с Numpy. Numpy — это пакет расширения языка Python для научных вычислений, обычно содержащий мощные объекты N-мерного массива, сложные функции, инструменты для интеграции кода C/C++ и Fortran, а также полезные возможности линейной алгебры, преобразования Фурье и генерации случайных чисел.

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


Затем проанализируйте шесть функций Numpy одну за другой.

argpartition()

С помощью argpartition() Numpy может найти индексы N самых больших значений, а также распечатать эти индексы. Затем сортируем значения по мере необходимости.

x = np.array([12, 10, 12, 0, 6, 8, 9, 1, 16, 4, 6, 0])index_val = np.argpartition(x, -4)[-4:]index_valarray([1, 8, 2, 0], dtype=int64)np.sort(x[index_val])array([10, 12, 12, 16])

allclose()

allclose() используется для сопоставления двух массивов и получения вывода, представленного логическим значением. allclose() возвращает False, если два массива не равны в пределах допуска. Эта функция полезна для проверки сходства двух массивов.

array1 = np.array([0.12,0.17,0.24,0.29])array2 = np.array([0.13,0.19,0.26,0.31])# with a tolerance of 0.1, it should return False:np.allclose(array1,array2,0.1)False# with a tolerance of 0.2, it should return True:np.allclose(array1,array2,0.2)True

clip()

Clip() сохраняет значения в массиве в пределах диапазона. Иногда нам нужно удерживать значение в пределах верхней и нижней границы. Для этого мы можем сделать это с помощью функции clip() Numpy. Учитывая интервал, значения вне интервала обрезаются до края интервала.

x = np.array([3, 17, 14, 23, 2, 2, 6, 8, 1, 2, 16, 0])np.clip(x,2,5)array([3, 5, 5, 5, 2, 2, 5, 5, 2, 2, 5, 2])

extract()

Как следует из названия, extract() извлекает определенные элементы из массива при определенных условиях. С помощью Extract() мы также можем использовать такие условия, как и и или.

# Random integersarray = np.random.randint(20, size=12)arrayarray([ 0,  1,  8, 19, 16, 18, 10, 11,  2, 13, 14,  3])#  Divide by 2 and check if remainder is 1cond = np.mod(array, 2)==1condarray([False,  True, False,  True, False, False, False,  True, False, True, False,  True])# Use extract to get the valuesnp.extract(cond, array)array([ 1, 19, 11, 13,  3])# Apply condition on extract directlynp.extract(((array < 3) | (array > 15)), array)array([ 0,  1, 19, 16, 18,  2])

where()

Where() используется для возврата элементов из массива, которые удовлетворяют определенному условию. Например, он возвращает позицию индекса значения, удовлетворяющего определенному условию. Where() похоже на условие where, используемое в SQL, как показано в следующем примере:

y = np.array([1,5,6,8,1,7,3,6,9])# Where y is greater than 5, returns index positionnp.where(y>5)array([2, 3, 5, 7, 8], dtype=int64),)# First will replace the values that match the condition, # second will replace the values that does notnp.where(y>5, "Hit", "Miss")array(['Miss', 'Miss', 'Hit', 'Hit', 'Miss', 'Hit', 'Miss', 'Hit', 'Hit'],dtype='<U4')

percentile()

Percentile() используется для вычисления n-го процентиля элемента массива в определенном направлении оси.

a = np.array([1,5,6,8,1,7,3,6,9])print("50th Percentile of a, axis = 0 : ",        np.percentile(a, 50, axis =0))50th Percentile of a, axis = 0 :  6.0b = np.array([[10, 7, 4], [3, 2, 1]])print("30th Percentile of b, axis = 0 : ",        np.percentile(b, 30, axis =0))30th Percentile of b, axis = 0 :  [5.1 3.5 1.9]

Это 6 эффективных функций пакета расширения Numpy, я думаю, они вам помогут. Далее взгляните на 6 функций библиотеки анализа данных Pandas.

6 эффективных функций пакета статистики данных Pandas

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


Pandas работает со следующими типами данных:

  • Табличные данные с разнородными типами столбцов, например таблицы SQL или таблицы Excel;

  • упорядоченные и неупорядоченные (не обязательно с фиксированной частотой) данные временных рядов;

  • Произвольные матричные данные (однородные или разнородные) с метками строк/столбцов;

  • Другие произвольные наборы статистических данных. На самом деле данные вообще не нужно маркировать, чтобы они соответствовали структуре Pandas.


Типы, в которых Pandas преуспевает, следующие:

  • Простота обработки отсутствующих данных (представленных NaN) в данных с плавающей запятой и не с плавающей запятой;

  • Изменение размера: столбцы могут быть вставлены или удалены из DataFrame или объектов более высокого измерения;

  • Явные данные могут быть автоматически выровнены: объекты могут быть явно выровнены в пределах набора меток, или пользователь может просто игнорировать метки и автоматически выравнивать данные в Series, DataFrame и т. д.;

  • Гибкая функция группировки, выполнение таких операций, как разделение-применение-объединение наборов данных, а также объединение и преобразование данных;

  • Упростить процесс преобразования данных в объекты DataFrame, которые в основном представляют собой нерегулярные, по-разному индексированные данные в структурах данных Python и NumPy;

  • Интеллектуальные срезы, индексация и подмножество на основе меток для больших наборов данных;

  • Объединяйте и объединяйте наборы данных более интуитивно;

  • Больше гибкости в изменении формы и повороте наборов данных;

  • Градированные маркеры для осей (может содержать несколько маркеров);

  • Надежные инструменты ввода-вывода для добавления данных из плоских файлов (CSV и с разделителями), файлов Excel, баз данных и сохранения/загрузки данных из формата HDF5;

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


read_csv(nrows=n)

Ошибка большинства людей заключается в том, что они читают файл .csv целиком, не нуждаясь в нем. Если неизвестный файл .csv имеет размер 10 ГБ, было бы очень неразумно читать весь файл .csv, не только занимая много памяти, но и отнимая много времени. Все, что нам нужно сделать, это импортировать несколько строк из файла .csv и продолжить импорт по мере необходимости.

import ioimport requests# I am using this online data set just to make things easier for you guysurl = "https://raw.github.com/vincentarelbundock/Rdatasets/master/csv/datasets/AirPassengers.csv"s = requests.get(url).content# read only first 10 rowsdf = pd.read_csv(io.StringIO(s.decode('utf-8')),nrows=10 , index_col=0)

map()

Функция map() отображает значения Series в соответствии с соответствующими входными данными. Используется для замены каждого значения в серии другим значением, которое может исходить от функции, словаря или серии.

# create a dataframedframe = pd.DataFrame(np.random.randn(4, 3), columns=list('bde'), index=['India', 'USA', 'China', 'Russia'])#compute a formatted string from each floating point value in framechangefn = lambda x: '%.2f' % x# Make changes element-wisedframe['d'].map(changefn)

apply()

apply() позволяет пользователю передать функцию и применить ее к каждому значению в последовательности Pandas.

# max minus mix lambda fnfn = lambda x: x.max() - x.min()# Apply this on dframe that we've just created abovedframe.apply(fn)

isin()

lsin() используется для фильтрации кадров данных. Isin() помогает выбирать строки с определенным (или несколькими) значениями в определенном столбце.

# Using the dataframe we created for read_csvfilter1 = df["value"].isin([112]) filter2 = df["time"].isin([1949.000000])df [filter1 & filter2]

copy()

Функция Copy() используется для копирования объектов Pandas. Когда один фрейм данных назначается другому, если в один из фреймов данных вносится изменение, значение другого фрейма данных также изменится. Для предотвращения подобных проблем можно использовать функцию copy().

# creating sample series data = pd.Series(['India', 'Pakistan', 'China', 'Mongolia'])# Assigning issue that we facedata1= data# Change a valuedata1[0]='USA'# Also changes value in old dataframedata# To prevent that, we use# creating copy of series new = data.copy()# assigning new values new[1]='Changed value'# printing data print(new) print(data)

select_dtypes()

Что делает select_dtypes(), так это то, что он возвращает подмножество столбцов фрейма данных на основе столбцов dtypes. Аргументы этой функции можно настроить так, чтобы они включали все столбцы с определенным типом данных или исключали столбцы с определенным типом данных.

# We'll use the same dataframe that we used for read_csvframex =  df.select_dtypes(include="float64")# Returns only time column

Наконец, pivot_table() также является очень полезной функцией в Pandas. Если вы понимаете, как использовать pivot_table() в Excel, начать работу очень просто.

# Create a sample dataframeschool = pd.DataFrame({'A': ['Jay', 'Usher', 'Nicky', 'Romero', 'Will'],       'B': ['Masters', 'Graduate', 'Graduate', 'Masters', 'Graduate'],       'C': [26, 22, 20, 23, 24]})# Lets create a pivot table to segregate students based on age and coursetable = pd.pivot_table(school, values ='A', index =['B', 'C'],                          columns =['B'], aggfunc = np.sum, fill_value="Not Available") table

Оригинальная ссылка:к data science.com/12-amazing-…