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:
Какво е серия?
Серията е едномерна структура от данни. Може да има произволна структура от данни като цяло число, плаваща единица и низ. Полезно е, когато искате да извършите изчисление или да върнете едномерен масив. Една серия по дефиниция не може да има няколко колони. За последния случай, моля, използвайте структурата на рамката на данните.
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] |