Источником этой статьи является сердце машины, оригинальная ссылка:
https://towardsdatascience.com/be-a-more-efficient-data-scientist-today-master-pandas-with-this-guide-ea362d27386
, если есть какое-либо нарушение, его можно удалить.
Python имеет открытый исходный код, и это здорово, но с открытым исходным кодом связаны некоторые проблемы: многие пакеты делают (или пытаются делать) одно и то же. Если вы новичок в Python, трудно понять, какой пакет лучше всего подходит для конкретной задачи, и вам нужен опытный человек, который подскажет вам. Существует один пакет для науки о данных, который абсолютно необходим, и это панды.
Самое интересное в пандах то, что внутри спрятано множество пакетов. Это основной пакет с функциональностью многих других пакетов. Это здорово, потому что вам нужно использовать только панд, чтобы выполнить работу.
pandas эквивалентен excel в python: он использует таблицы (то есть кадры данных), может выполнять различные преобразования данных, но имеет много других функций.
Если вы уже знакомы с использованием Python, вы можете сразу перейти к третьему абзацу.
Давайте начнем:
import pandas as pd
Не спрашивайте, почему это "pd", а не "p", вот и все. Просто используйте его :)
Самые основные функции панд
читать данные
data = pd.read_csv( my_file.csv )
data = pd.read_csv( my_file.csv , sep= ; , encoding= latin-1 , nrows=1000, skiprows=[2,5])
sep обозначает разделитель. Если вы работаете с французскими данными, разделителем CSV в Excel является «;», поэтому вам нужно указать его явно. Для чтения французских символов установлена кодировка latin-1. nrows=1000 означает чтение первых 1000 строк данных. skiprows=[2,5] означает, что вы удалите строки 2 и 5 при чтении файла.
-
Наиболее часто используемые функции: read_csv, read_excel
-
Некоторые другие замечательные функции: read_clipboard, read_sql
записать данные
data.to_csv( my_new_file.csv , index=None)
index=None означает, что данные будут записаны как есть. Если вы не напишите index=None, у вас будет дополнительный первый столбец с содержимым 1, 2, 3, ..., вплоть до последней строки.
Обычно я не использую другие функции, такие как .to_excel, .to_json, .to_pickle и т. д., потому что .to_csv хорошо справляется со своей задачей, а csv — наиболее распространенный способ сохранения таблиц.
Проверить данные
Gives (#rows, #columns)
указать количество строк и столбцов
data.describe()
Рассчитать базовую статистику
Просмотр данных
data.head(3)
Распечатайте первые 3 строки данных. Точно так же .tail() соответствует последней строке данных.
data.loc[8]
распечатать восьмую строку
data.loc[8, column_1 ]
Распечатайте столбец с именем «column_1» в восьмой строке.
data.loc[range(4,6)]
Подмножества данных для строк с 4 по 6 (закрытые слева и открытые справа)
Основные функции панд
логическая операция
data[data[ column_1 ]== french ]
data[(data[ column_1 ]== french ) & (data[ year_born ]==1990)]
data[(data[ column_1 ]== french ) & (data[ year_born ]==1990) & ~(data[ city ]== London )]
Возьмите подмножество данных с помощью логических операций. Чтобы использовать & (И), ~ (НЕ) и | (ИЛИ), перед логическими операциями должно стоять «и».
data[data[ column_1 ].isin([ french , english ])]
Помимо использования нескольких операций ИЛИ в одном столбце, вы также можете использовать функцию .isin().
базовый рисунок
Пакет matplotlib делает это возможным. Как мы уже говорили во введении, его можно использовать непосредственно в пандах.
data[ column_numerical ].plot()
().plot() пример вывода
data[ column_numerical ].hist()
Постройте распределение данных (гистограмму)
Пример вывода .hist()
%matplotlib inline
Если вы используете Jupyter, не забудьте добавить приведенный выше код перед рисованием.
обновить данные
data.loc[8, column_1 ] = english
将第八行名为 column_1 的列替换为「english」
data.loc[data[ column_1 ]== french , column_1 ] = French
Изменить значения нескольких столбцов в одной строке кода
Что ж, теперь вы можете делать некоторые вещи в Excel, к которым легко получить доступ. Давайте рассмотрим удивительную глубину, которую Excel в работе не может достичь.
Промежуточные функции
количество вхождений
data[ column_1 ].value_counts()
Пример вывода функции .value_counts()
работать со всеми строками, столбцами или всеми данными
data[ column_1 ].map(len)
Функция len() применяется к каждому элементу в столбце «column_1».
Операция .map() применяет функцию к каждому элементу в столбце.
data[ column_1 ].map(len).map(lambda x: x/100).plot()
Приятной особенностью pandas является цепочка методов (Том Ауг spur personal.GitHub.IO/method-demolition…и .plot()).
data.apply(sum)
.apply() применит функцию к столбцу.
.applymap() применит функцию ко всем ячейкам в таблице (DataFrame).
tqdm, уникальный
При работе с большими наборами данных pandas тратит некоторое время на выполнение .map(), .apply(), .applymap() и т. д. tqdm — это пакет, который можно использовать для прогнозирования завершения выполнения этих операций (да, я солгал, я сказал, что мы будем использовать только pandas).
from tqdm import tqdm_notebook
tqdm_notebook().pandas()
Настройка tqdm с пандами
data[ column_1 ].progress_map(lambda x: x.count( e ))
Замена .map(), .apply() и .applymap() на .progress_map() аналогична.
Индикатор выполнения с использованием tqdm и pandas в Jupyter
Матрицы корреляции и рассеяния
data.corr()
data.corr().applymap(lambda x: int(x*100)/100)
.corr() даст матрицу корреляции
pd.plotting.scatter_matrix(data, figsize=(12,8))
Пример матрицы рассеяния. Он отображает все комбинации двух столбцов на одном графике.
Расширенные операции в пандах
Ассоциация SQL
Реализация ассоциаций в pandas очень и очень проста
data.merge(other_data, on=[ column_1 , column_2 , column_3 ])
Для сопоставления трех столбцов требуется всего одна строка кода
группировка
Сначала это не так просто, вам сначала нужно освоить синтаксис, а потом вы обнаружите, что используете эту функцию постоянно.
data.groupby( column_1 )[ column_2 ].apply(sum).reset_index()
Сгруппируйте по одному столбцу, выберите другой столбец для выполнения функции. .reset_index() восстановит данные в таблицу.
Как объяснялось ранее, чтобы оптимизировать код, объедините функции в одну строку.
итерация строки
dictionary = {}
for i,row in data.iterrows():
dictionary[row[ column_1 ]] = row[ column_2 ]
.iterrows() выполняет цикл вместе, используя две переменные: индекс строки и данные строки (я и строка выше)
В общем, pandas — одна из причин, почему Python — такой замечательный язык программирования.
Я мог бы показать более интересные возможности панд, но этого достаточно, чтобы понять, почему специалисты по данным не могут жить без панд. Подводя итог, панды имеют следующие преимущества:
-
Прост в использовании, все сложные и абстрактные расчеты скрыты за кулисами;
-
интуитивно понятный;
-
Быстрый, очень быстрый, если не самый быстрый.
Это помогает специалистам по данным быстро читать и понимать данные, повышая их производительность.