Как использовать DataFrame в pandas на Python для анализа и обработки данных

Как использовать 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 стал настолько популярным среди статистиков, специалистов по данным и всех, кому нужно анализировать данные.

Комментарии

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *