Как использовать DataFrame в pandas на Python для анализа и обработки данных
Перейти по ссылкам
- Что такое pandas?
- Что такое DataFrame?
- Как создать DataFrame
- Импортирование DataFrame
- Анализ DataFrame
- Добавление и удаление столбцов
- Выполнение операций с колонками
Если вы хотите анализировать данные в Python, вам стоит познакомиться с библиотекой pandas, так как она значительно упрощает анализ данных. DataFrame — это основной формат данных, с которым вы будете работать. Вот как его использовать.
Что такое pandas?
pandas — это модуль Python, который популярен в области науки о данных и анализа данных. Он предлагает способ организовать данные в DataFrame и предоставляет множество операций, которые можно выполнять с этими данными. Изначально он был разработан компанией AQR Capital Management, но был открыт для общего доступа в конце 2000-х годов.
Чтобы установить pandas с помощью PyPI:
pip install pandas
Лучше всего работать с pandas с помощью Jupyter Notebook или другой интерактивной сессии Python. IPython отлично подходит для случайного изучения данных в терминале, но Jupyter сохраняет запись ваших вычислений, что полезно, когда вы возвращаетесь к набору данных через несколько дней или недель и не можете вспомнить, что вы делали. Я создал свой собственный блокнот с примерами кода, который вы можете изучить на моей странице GitHub. Именно оттуда взяты скриншоты, которые вы увидите.
Что такое DataFrame?
DataFrame — это основная структура данных, с которой вы работаете в pandas. Подобно электронной таблице или реляционной базе данных, он организует данные в строки и столбцы. Столбцы группируются по имени заголовка. Эта концепция схожа с data frame в R, другом языке программирования, популярном в статистике и науке о данных. Столбцы DataFrame могут содержать как текстовые, так и числовые данные, включая целые числа и числа с плавающей запятой. Столбцы также могут содержать данные временных рядов.
Как создать DataFrame
Предполагая, что у вас уже установлен pandas, вы можете создать небольшой DataFrame из других элементов.
Я создам столбцы, представляющие линейную функцию, которые затем могут быть использованы для регрессионного анализа. Сначала я создам ось x, или независимую переменную, из массива NumPy:
import numpy as np x = np.linspace(-10,10)
Далее я создам столбец y или зависимую переменную как простую линейную функцию:
y = 2*x + 5
Теперь я импортирую pandas и создам DataFrame.
import pandas as pd
Как и с NumPy, сокращение имени pandas сделает его ввод проще.
Метод DataFrame библиотеки pandas принимает словарь с именами столбцов и списками фактических данных. Я создам DataFrame с именем «df» с колонками, обозначенными как «x» и «y». Данные будут массивами NumPy, которые я создал ранее.
df = pd.DataFrame({'x':x,'y':y})
Импортирование DataFrame
Хотя возможно создавать DataFrame с нуля, чаще данные импортируются из другого источника. Поскольку содержимое DataFrame табличное, популярным источником являются электронные таблицы. Верхние значения электронной таблицы станут именами столбцов.
Чтобы читать данные в электронной таблице Excel, используйте метод read_excel:
df = pd.read_excel('/path/to/spreadsheet.xls')
Будучи сторонником открытого программного обеспечения, я склонен использовать LibreOffice Calc вместо Excel, но также могу импортировать файлы других форматов. Формат .csv широко используется, и я могу экспортировать свои данные в этом формате.
df = pd.read_csv('/path/to/data.csv')
Удобной функцией является возможность копирования из буфера обмена. Это отлично подходит для небольших наборов данных, чтобы выполнять более сложные вычисления, чем те, которые я могу сделать в электронной таблице:
df = pd.read_clipboard()
Анализ DataFrame
Теперь, когда вы создали DataFrame, следующим шагом является изучение данных в нем.
Один из способов сделать это — получить первые пять строк DataFrame с помощью метода head.
df.head()
Если вы когда-либо использовали команду head в Linux или других системах, подобных Unix, это похоже. Если вы знаете о команде tail, в pandas есть похожий метод, который возвращает последние строки DataFrame
df.tail()
Вы можете использовать методы среза массивов, чтобы просмотреть точное подмножество строк. Чтобы просмотреть строки с 1 по 3:
df[1:3]
С помощью команды head в Linux вы можете просмотреть точное количество строк, указав числовой аргумент. Вы можете сделать то же самое в pandas. Чтобы увидеть первые 10 строк:
df.head(10)
Метод хвоста работает схожим образом.
df.tail(10)
Более интересно изучать существующие наборы данных. Популярный способ продемонстрировать это — использовать набор данных о пассажирах Титаника. Он доступен на Kaggle. Многие другие статистические библиотеки, такие как Seaborn и Pingouin, позволяют загружать примерные наборы данных, чтобы вам не приходилось их скачивать. DataFrame из pandas в основном также используются для подачи данных в эти библиотеки, например, для построения графика или расчета линейной регрессии.
После загрузки данных вам нужно будет импортировать их:
titanic = pd.read_csv('data/Titanic-Dataset.csv')
Давайте снова посмотрим на голову
titanic.head()
Мы также можем видеть все столбцы с помощью метода columns
titanic.columns
Pandas предлагает множество методов для получения информации о наборе данных. Метод describe предоставляет некоторые описательные статистики для всех числовых столбцов в DataFrame.
titanic.describe()
Сначала идет среднее значение, или среднее арифметическое. Затем идет стандартное отклонение, которое показывает, насколько близко или плотно расположены значения вокруг среднего. Далее следуют минимальное значение, нижний квартиль или 25-й процентиль, медиана или 50-й процентиль, верхний квартиль или 75-й процентиль и максимальное значение. Эти значения составляют «пятичисловое резюме» легендарного статистика Джона Тьюки. С помощью этих чисел вы можете быстро увидеть, как распределены ваши данные.
Чтобы получить доступ к отдельному столбцу, вызовите имя DataFrame с именем столбца в квадратных скобках (‘[]’)
Например, чтобы просмотреть столбец с именами пассажиров:
titanic['Name']
Поскольку список такой длинный, по умолчанию он будет усечён. Чтобы увидеть весь список имён, используйте метод to_string.
titanic['Name'].to_string()
Вы также можете отключить усечение. Чтобы отключить его для столбцов с большим количеством строк:
pd.set_option('display.max_rows', None)
Вы также можете использовать другие методы при выборе по строкам. Чтобы увидеть описательную статистику по одному столбцу:
titanic['Age'].describe()
Вы также можете получить доступ к отдельным значениям
titanic['Age'].mean() titanic['Age'].median()
Добавление и удаление столбцов
Вы можете не только просматривать столбцы, но и добавлять новые. Вы можете добавить столбец и заполнить его значениями, как это делается с массивом в Python, а также преобразовывать данные и добавлять их в новые столбцы.
Давайте вернемся к исходному DataFrame, который мы создали, df. Мы можем выполнять операции с каждым элементом в столбце. Например, чтобы возвести в квадрат столбец x:
df['x']**2
Мы можем создать новый столбец с этими значениями:
df['x2'] = df['x']**2
Чтобы удалить столбец, вы можете использовать функцию drop
df.drop('x2',axis=1)
Аргумент axis сообщает pandas выполнять операции по столбцам вместо строк.
Выполнение операций с колонками
Как упоминалось ранее, вы можете выполнять операции с колонками. Вы можете выполнять с ними математические и статистические операции.
Мы можем сложить наши столбцы x и y вместе:
df['x'] + df['y']
Вы можете выбрать несколько столбцов с помощью двойных скобок.
Чтобы увидеть имена и возраст пассажиров Титаника:
titanic[['Name','Age']]
Элементы столбца должны быть разделены запятой (,)
Вы также можете выполнять поиск в DataFrame pandas, аналогично поиску в SQL. Чтобы увидеть строки с пассажирами, которым было больше 30 лет во время посадки на злополучный лайнер, вы можете использовать логический выбор внутри скобок:
titanic[titanic['Age'] > 30]
Это похоже на SQL-запрос:
SELECT * FROM titanic WHERE Age > 30
Вы можете выбрать столбец, используя .loc перед скобками:
titanic.loc [titanic['Age'] > 30]
Давайте построим столбчатую диаграмму, показывающую, где сели на Титаник пассажиры. Мы можем создать собственный поднабор DataFrame с тремя пунктами посадки: Саутгемптон, Англия; Шербур, Франция; и Куинстаун, Ирландия (сейчас Коб).
embarked = titanic['Embarked'].value_counts()
Это создаст новый DataFrame с количеством людей, которые сели на борт в каждом порту. Но у нас есть проблема. Заголовки колонок представляют собой просто буквы, обозначающие название порта. Давайте заменим их на полные названия портов. Метод rename примет словарь со старыми и новыми названиями.
embarked = embarked.rename({'S':'Southhampton','C':'Cherbourg','Q':'Queenstown'})
С переименованными столбцами мы можем создать нашу диаграмму столбчатую. Это легко сделать с помощью pandas:
embarked.plot(kind='bar')
Это должно помочь вам начать изучение наборов данных с помощью pandas. pandas — одна из причин, по которой Python стал настолько популярным среди статистиков, специалистов по данным и всех, кому нужно анализировать данные.


















Добавить комментарий