Python Урок за Pandas: DataFrame, период от време, използване на Pandas

Какво е Pandas Python?

Пандите е библиотека с отворен код, която ви позволява да извършвате манипулиране и анализ на данни в Python. панди Python библиотеката предлага манипулиране на данни и операции с данни за цифрови таблици и времеви редове. Pandas предоставя лесен начин за създаване, манипулиране и преборване на данните. Той е изграден върху NumPy, което означава, че се нуждае от NumPy, за да работи.

Защо да използвате Pandas?

Учените по данни използват Pandas в Python за следните предимства:

  • Лесно се справя с липсващи данни
  • Той използва Серии за едномерна структура на данни намлява DataFrame за многомерна структура на данни
  • Той осигурява ефективен начин за разделяне на данните
  • Той предоставя гъвкав начин за обединяване, свързване или преоформяне на данните
  • Той включва мощен инструмент за работа с времеви серии

Накратко, Pandas е полезна библиотека в Анализ на данни. Може да се използва за извършване на обработка и анализ на данни. Pandas предоставя мощни и лесни за използване структури от данни, както и средства за бързо извършване на операции върху тези структури.

Как да инсталирате Pandas?

Сега в това Python Урок за Pandas, ще научим как да инсталираме Pandas Python.

За да инсталирате библиотека Pandas, вижте нашия урок Как да инсталирате TensorFlow. 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 Data Frame в масив, можете да използвате 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
станд 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 Paul
3 26 Адам
4 11 Ковач

Drop_duplicates

Ако даден набор от данни може да съдържа дублиране на информация, използване на „drop_duplicates“ е лесен за изключване на дублирани редове. Можете да видите, че `df_concat` има дублиращо се наблюдение, `Smith` се появява два пъти в колоната `name`.

df_concat.drop_duplicates('name')
Възраст име
0 25 клозет
1 30 Ковач
2 50 Paul
3 26 Адам

Сортиране на стойности

Можете да сортирате стойност с sort_values

df_concat.sort_values('Age')
Възраст име
4 11 Ковач
0 25 клозет
3 26 Адам
1 30 Ковач
2 50 Paul

Преименуване: промяна на индекса

Можете да използвате преименуване, за да преименувате колона в Pandas. Първата стойност е името на текущата колона, а втората стойност е името на новата колона.

df_concat.rename(columns={"name": "Surname", "Age": "Age_ppl"})
Възраст_ppl Фамилно име
0 25 клозет
1 30 Ковач
2 50 Paul
3 26 Адам
4 11 Ковач

Oбобщение

По-долу е обобщено най-полезният метод за наука за данни с Pandas

импортиране на данни read_csv
създайте серии Серия
Създайте Dataframe DataFrame
Създайте период от време диапазон_дати
връщане на главата глава
обратна опашка опашка
Описвам описвам
парче с помощта на име име на данни ['име на колона']
Нарежете с помощта на редове име_на_данни[0:5]