Учебники

6) Учебник по Python Pandas

Что такое панды?

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

В этом руководстве вы узнаете:

Зачем использовать панды?

Исследователи данных используют Pandas для следующих преимуществ:

  • Легко обрабатывает недостающие данные
  • Он использует Series для одномерной структуры данных и DataFrame для многомерной структуры данных
  • Это обеспечивает эффективный способ нарезки данных
  • Он предоставляет гибкий способ объединения, объединения или изменения формы данных.
  • Он включает в себя мощный инструмент для работы с временными рядами

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

Как установить панды?

Чтобы установить библиотеку Pandas, пожалуйста, обратитесь к нашему руководству Как установить TensorFlow . Панды установлены по умолчанию. В удаленном случае, панды не установлены

Вы можете установить Pandas используя:

  • Анаконда: Конда установить -c Анаконда Панды
  • В ноутбуке Jupyter:
import sys
!conda install --yes --prefix {sys.prefix} pandas			

Что такое фрейм данных?

Фрейм данных — это двумерный массив с помеченными осями (строки и столбцы). Фрейм данных — это стандартный способ хранения данных.

Фрейм данных хорошо известен специалистам по статистике и другим специалистам. Фрейм данных — это табличные данные со строками для хранения информации и столбцами для присвоения информации. Например, цена может быть именем столбца и 2,3,4 значениями цены.

Ниже изображение фрейма данных Pandas:

Что такое серия?

Серия — это одномерная структура данных. Он может иметь любую структуру данных, например, integer, float и string. Это полезно, когда вы хотите выполнить вычисление или вернуть одномерный массив. Ряд по определению не может иметь несколько столбцов. В последнем случае, пожалуйста, используйте структуру фрейма данных.

Серия имеет один параметр:

  • Данные: может быть списком, словарем или скалярным значением
pd.Series([1., 2., 3.])			
0    1.0
1    2.0
2    3.0
dtype: float64			

Вы можете добавить индекс с индексом. Это помогает назвать строки. Длина должна быть равна размеру столбца

pd.Series([1., 2., 3.], index=['a', 'b', 'c'])

Ниже вы создаете серию Pandas с отсутствующим значением для третьих строк. Обратите внимание, что пропущенные значения в Python помечены как «NaN». Вы можете использовать numpy для создания недостающего значения: np.nan искусственно

pd.Series([1,2,np.nan])

Вывод

0    1.0
1    2.0
2    NaN
dtype: float64

Создать фрейм данных

Вы можете преобразовать пустой массив во фрейм данных pandas с помощью pd.Data frame (). Возможно и обратное. Чтобы преобразовать фрейм данных pandas в массив, вы можете использовать np.array ()

## Numpy to pandas
import numpy as np
h = [[1,2],[3,4]] 
df_h = pd.DataFrame(h)
print('Data Frame:', df_h)

## Pandas to numpy
df_h_n = np.array(df_h)
print('Numpy array:', df_h_n)
Data Frame:    0  1
0  1  2
1  3  4
Numpy array: [[1 2]
 [3 4]]

Вы также можете использовать словарь для создания фрейма данных Pandas.

dic = {'Name': ["John", "Smith"], 'Age': [30, 40]}
pd.DataFrame(data=dic)				
Возраст имя
0 30 Джон
1 40 кузнец

Диапазон данных

Панды имеют удобный API для создания диапазона дат

pd.data_range (дата, период, частота):

  • Первый параметр — дата начала
  • Второй параметр — это число периодов (необязательно, если указана дата окончания)
  • Последний параметр — это частота: день: «D», месяц: «M» и год: «Y».
## Create date
# Days
dates_d = pd.date_range('20300101', periods=6, freq='D')
print('Day:', dates_d)

Вывод

Day: DatetimeIndex(['2030-01-01', '2030-01-02', '2030-01-03', '2030-01-04', '2030-01-05', '2030-01-06'], dtype='datetime64[ns]', freq='D')
# Months
dates_m = pd.date_range('20300101', periods=6, freq='M')
print('Month:', dates_m)

Вывод

Month: DatetimeIndex(['2030-01-31', '2030-02-28', '2030-03-31', '2030-04-30','2030-05-31', '2030-06-30'], dtype='datetime64[ns]', freq='M')

Проверка данных

Вы можете проверить заголовок или хвост набора данных с помощью head () или tail (), которому предшествует имя фрейма данных панды

Шаг 1) Создайте случайную последовательность с NumPy. Последовательность имеет 4 столбца и 6 строк

random = np.random.randn(6,4)	

Шаг 2) Затем вы создаете фрейм данных, используя панд.

Используйте date_m в качестве индекса для фрейма данных. Это означает, что каждой строке будет присвоено «имя» или индекс, соответствующий дате.

Наконец, вы даете имя 4 столбцам с аргументами столбцов

# Create data with date
df = pd.DataFrame(random,
                  index=dates_m,
                  columns=list('ABCD'))

Шаг 3) Использование функции головы

df.head(3)
A В С D
2030-01-31 1.139433 1.318510 -0,181334 1.615822
2030-02-28 -0,081995 -0,063582 0.857751 -0,527374
2030-03-31 -0,519179 0.080984 -1,454334 1.314947

Шаг 4) Использование функции хвоста

df.tail(3)
A В С D
2030-04-30 -0,685448 -0,011736 0.622172 0.104993
2030-05-31 -0,935888 -0,731787 -0,558729 0.768774
2030-06-30 1.096981 0.949180 -0,196901 -0,471556

Шаг 5) Отличная практика, чтобы получить представление о данных, — это использовать description (). Он обеспечивает количество, среднее, стандартное, минимальное, максимальное и процентиль набора данных.

df.describe()
A В С D
подсчитывать 6.000000 6.000000 6.000000 6.000000
жадный 0.002317 0.256928 -0,151896 0.467601
станд 0.908145 0.746939 0.834664 0.908910
мин -0,935888 -0,731787 -1,454334 -0,527374
25% -0,643880 -0,050621 -0,468272 -0,327419
50% -0,300587 0.034624 -0,189118 0.436883
75% 0.802237 0.732131 0.421296 1.178404
Максимум 1.139433 1.318510 0.857751 1.615822

Данные среза

Последний пункт этого урока о том, как нарезать фрейм данных Pandas.

Вы можете использовать имя столбца для извлечения данных в определенном столбце.

## Slice
### Using name
df['A']

2030-01-31   -0.168655
2030-02-28    0.689585
2030-03-31    0.767534
2030-04-30    0.557299
2030-05-31   -1.547836
2030-06-30    0.511551
Freq: M, Name: A, dtype: float64

Чтобы выбрать несколько столбцов, вам нужно использовать двойную скобку, [[.., ..]]

Первая пара скобок означает, что вы хотите выбрать столбцы, вторая пара скобок указывает, какие столбцы вы хотите вернуть.

df[['A', 'B']]. 				
A В
2030-01-31 -0,168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0,940617
2030-04-30 0.557299 0.507350
2030-05-31 -1,547836 1.276558
2030-06-30 0.511551 1.572085

Вы можете нарезать строки с помощью:

Код ниже возвращает первые три строки

### using a slice for row
df[0:3]	
A В С D
2030-01-31 -0,168655 0.587590 0.572301 -0,031827
2030-02-28 0.689585 0.998266 1.164690 0.475975
2030-03-31 0.767534 -0,940617 0.227255 -0,341532

Функция loc используется для выбора столбцов по именам. Как обычно, значения до комы обозначают строки, а после относятся к столбцу. Вам нужно использовать скобки, чтобы выбрать более одного столбца.

## Multi col
df.loc[:,['A','B']]	
A В
2030-01-31 -0,168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0,940617
2030-04-30 0.557299 0.507350
2030-05-31 -1,547836 1.276558
2030-06-30 0.511551 1.572085

Есть еще один способ выбрать несколько строк и столбцов в Pandas. Вы можете использовать iloc []. Этот метод использует индекс вместо имени столбца. Код ниже возвращает тот же кадр данных, что и выше

df.iloc[:, :2]
A В
2030-01-31 -0,168655 0.587590
2030-02-28 0.689585 0.998266
2030-03-31 0.767534 -0,940617
2030-04-30 0.557299 0.507350
2030-05-31 -1,547836 1.276558
2030-06-30 0.511551 1.572085

Оставить столбец

Вы можете удалить столбцы, используя pd.drop ()

df.drop(columns=['A', 'C'])								
В D
2030-01-31 0.587590 -0,031827
2030-02-28 0.998266 0.475975
2030-03-31 -0,940617 -0,341532
2030-04-30 0.507350 -0,296035
2030-05-31 1.276558 0.523017
2030-06-30 1.572085 -0,594772

конкатенация

Вы можете объединить два DataFrame в Pandas. Вы можете использовать pd.concat ()

Прежде всего, вам нужно создать два DataFrames. Пока все хорошо, вы уже знакомы с созданием dataframe

import numpy as np
df1 = pd.DataFrame({'name': ['John', 'Smith','Paul'],
                     'Age': ['25', '30', '50']},
                    index=[0, 1, 2])
df2 = pd.DataFrame({'name': ['Adam', 'Smith' ],
                     'Age': ['26', '11']},
                    index=[3, 4])  

Наконец, вы объединяете два DataFrame

df_concat = pd.concat([df1,df2]) 
df_concat
Возраст имя
0 25 Джон
1 30 кузнец
2 50 Павел
3 26 Адам
4 11 кузнец

Drop_duplicates

Если набор данных может содержать дубликаты информации, `drop_duplicates` легко исключить дубликаты строк. Вы можете видеть, что `df_concat` имеет дублирующее наблюдение,` Smith` дважды появляется в столбце `name`.

df_concat.drop_duplicates('name')
Возраст имя
0 25 Джон
1 30 кузнец
2 50 Павел
3 26 Адам

Сортировать значения

Вы можете отсортировать значение с помощью sort_values

df_concat.sort_values('Age')
Возраст имя
4 11 кузнец
0 25 Джон
3 26 Адам
1 30 кузнец
2 50 Павел

Переименовать: изменение индекса

Вы можете использовать переименование, чтобы переименовать столбец в Pandas. Первое значение — это имя текущего столбца, а второе — имя нового столбца.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Age_ppl Фамилия
0 25 Джон
1 30 кузнец
2 50 Павел
3 26 Адам
4 11 кузнец

Резюме

Ниже приводится краткое изложение наиболее полезного метода для науки о данных с Pandas

импортировать данные read_csv
создать серию Серии
Создать Dataframe DataFrame
Создать диапазон дат диапазон дат
вернуть голову глава
возвратный хвост хвост
описывать описывать
срез, используя имя dataname [ ‘имя_столбец’]
Срез с использованием строк имя_данный [0: 5]