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:
Що таке серіал?
Ряд — це одновимірна структура даних. Він може мати будь-яку структуру даних, як-от ціле число, число з плаваючою точкою та рядок. Це корисно, коли потрібно виконати обчислення або повернути одновимірний масив. Серія, за визначенням, не може мати кілька стовпців. Для останнього випадку використовуйте структуру кадру даних.
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] |