Python Підручник Pandas: DataFrame, діапазон дат, використання Pandas

Що таке панди Python?

Панди це бібліотека з відкритим вихідним кодом, яка дозволяє виконувати маніпуляції та аналіз даних у Python. панди Python Бібліотека пропонує маніпулювання даними та операції з даними для числових таблиць і часових рядів. Pandas надає простий спосіб створювати, маніпулювати та суперечити даними. Він побудований на основі NumPy, тобто для роботи потрібен NumPy.

Навіщо використовувати Pandas?

Науковці даних використовують Pandas у Python за його наступні переваги:

  • Легко обробляє відсутні дані
  • Він використовує Серії для одновимірної структури даних та DataFrame для багатовимірної структури даних
  • Це забезпечує ефективний спосіб розділення даних
  • Він забезпечує гнучкий спосіб об’єднання, конкатенації або зміни форми даних
  • Він містить потужний інструмент для роботи з часовими рядами

У двох словах, Pandas — це корисна бібліотека в аналіз даних. Його можна використовувати для обробки та аналізу даних. Panda надає потужні та прості у використанні структури даних, а також засоби для швидкого виконання операцій над цими структурами.

Як встановити Pandas?

Тепер у цьому Python Підручник Pandas, ми навчимося встановлювати Pandas Python.

Щоб встановити бібліотеку Pandas, перегляньте наш підручник Як встановити TensorFlow. Pandas встановлено за замовчуванням. У віддаленому випадку pandas не встановлено-

Ви можете встановити Pandas за допомогою:

  • Anaconda: conda install -c anaconda pandas
  • In Jupyter Ноутбук :
import sys
!conda install --yes --prefix {sys.prefix} pandas

Що таке Pandas DataFrame?

Pandas DataFrame це двовимірний масив із позначеною структурою даних, яка має різні типи стовпців. DataFrame — це стандартний спосіб зберігання даних у табличному форматі з рядками для зберігання інформації та стовпцями для імен інформації. Наприклад, ціна може бути назвою стовпця, а 2,3,4 можуть бути значеннями ціни.

Data Frame добре відомий статистикам та іншим спеціалістам із обробки даних.

Нижче зображення кадру даних Pandas:

Pandas DataFrame

Що таке серіал?

Ряд — це одновимірна структура даних. Він може мати будь-яку структуру даних, як-от ціле число, число з плаваючою точкою та рядок. Це корисно, коли потрібно виконати обчислення або повернути одновимірний масив. Серія, за визначенням, не може мати кілька стовпців. Для останнього випадку використовуйте структуру кадру даних.

Python Серія Pandas має такі параметри:

  • Дані: можуть бути списком, словником або скалярним значенням
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 DataFrame

Тепер у цьому підручнику Pandas DataFrame ми навчимося створювати Python Фрейм даних Pandas:

Ви можете перетворити масив numpy на фрейм даних 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 коваль

Дані про діапазон панд

Pandas має зручний API для створення діапазону дат. Вчимося з Python Приклади панд:

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(), яким передує назва фрейму даних панди, як показано в наведеному нижче прикладі Pandas:

Крок 1) Створіть випадкову послідовність за допомогою нумпі. Послідовність складається з 4 стовпців і 6 рядків

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

Крок 2) Потім ви створюєте фрейм даних за допомогою панд.

Використовуйте dates_m як індекс для кадру даних. Це означає, що кожному рядку буде надано «ім’я» або індекс, що відповідає даті.

Нарешті, ви даєте назву 4 стовпцям зі стовпцями аргументів

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

Крок 3) Використання функції голови

df.head(3)
A B C 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 B C 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) Чудовою практикою для отримання підказки про дані є використання describe(). Він надає підрахунки, середнє, стандартне, мінімальне, максимальне та процентиль набору даних.

df.describe()
A B C D
вважати 6.000000 6.000000 6.000000 6.000000
значити 0.002317 0.256928 -0.151896 0.467601
std 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

Дані зрізу

Останній пункт цього Python Підручник Pandas розповідає про те, як розділити фрейм даних Pandas.

Ви можете використовувати ім’я стовпця, щоб отримати дані в певному стовпці, як показано в наведеному нижче прикладі 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 B
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 B C 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 B
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 B
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'])
B 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. Поки все добре, ви вже знайомі зі створенням кадрів даних

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['columnname']
Розріжте за допомогою рядів назва_даних[0:5]