#01 | Начало работы с пандами

Четкое введение в Pandas, библиотеку Python для работы с табличными данными, где вы можете открыть для себя ее многочисленные возможности и получить краткий обзор.

Прочитать исходную статью здесьв Хашноде.

Массив — это любой тип объекта, который может хранить более одного объекта. Например, list:

[100, 134, 87, 99]

Допустим, мы говорим о доходах нашей электронной коммерции за последние 4 месяца:

list_revenue = [100, 134, 87, 99]

Мы хотим рассчитать общий доход (т.е. мы суммируем объекты в списке):

list_revenue.sum()
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) Input In [3], in <cell line: 1>()
----> 1 list_revenue.sum() AttributeError: 'list' object has no attribute 'sum'

Список представляет собой бедный объект, который не содержит мощных функций.

Что мы можем сделать тогда?

Мы преобразуем список в мощный объект, такой как Seriesкоторый исходит из pandas библиотека.

import pandas

pandas.Series(list_revenue)
>>>
0 100
1 134
2 87
3 99
dtype: int64
series_revenue = pandas.Series(list_revenue)

Теперь у нас есть мощный объект, который может выполнять .sum():

series_revenue.sum()
>>> 420

Серия.jpg

В серии мы можем найти больше объектов.

series_revenue
>>>
0 100
1 134
2 87
3 99
dtype: int64
series_revenue.index
>>> RangeIndex(start=0, stop=4, step=1)

Изменим элементы индекса:

series_revenue.index = ['1st Month', '2nd Month', '3rd Month', '4th Month']
series_revenue
>>>
1st Month 100
2nd Month 134
3rd Month 87
4th Month 99
dtype: int64
series_revenue.values
>>> array([100, 134, 87, 99])
series_revenue.name

Series не содержит имени. Давайте определим это:

series_revenue.name="Revenue"
series_revenue
>>>
1st Month 100
2nd Month 134
3rd Month 87
4th Month 99
Name: Revenue, dtype: int64

Значения ряда (правая часть) определяются их тип данных (псевдоним dtype):

series_revenue.dtype
>>> dtype('float64')

Давайте изменим dtype значений на float (десятичные числа)

series_revenue.astype(float)
>>>
1st Month 100.0
2nd Month 134.0
3rd Month 87.0
4th Month 99.0
Name: Revenue, dtype: float64
series_revenue = series_revenue.astype(float)

Что еще мы могли бы сделать с объектом Series?

series_revenue.describe()
>>>
count 4.000000
mean 105.000000
std 20.215506
min 87.000000
25% 96.000000
50% 99.500000
75% 108.500000
max 134.000000
Name: Revenue, dtype: float64
series_revenue.plot.bar();

output_39_0.png

series_revenue.plot.barh();

output_40_0.png

series_revenue.plot.pie();

output_41_0.png

DataFrame.jpg

DataFrame представляет собой набор Series.

Мы создадим еще одну серию series_expenses чтобы позже собрать их вместе в DataFrame.

pandas.Series( data=[20, 23, 21, 18], index=['1st Month','2nd Month','3rd Month','4th Month'], name="Expenses"
)
>>>
1st Month 20
2nd Month 23
3rd Month 21
4th Month 18
Name: Expenses, dtype: int64
series_expenses = pandas.Series( data=[20, 23, 21, 18], index=['1st Month','2nd Month','3rd Month','4th Month'], name="Expenses"
)
pandas.DataFrame(data=[series_revenue, series_expenses])

df1.png

df_shop = pandas.DataFrame(data=[series_revenue, series_expenses])

Давайте транспонируем DataFrame, чтобы иметь переменные в столбцах:

df_shop.transpose()

df2.png

df_shop = df_shop.transpose()
df_shop.index
>>> Index(['1st Month', '2nd Month', '3rd Month', '4th Month'], dtype="object")
df_shop.columns
>>> Index(['Revenue', 'Expenses'], dtype="object")
df_shop.values
>>>
array([[100., 20.], [134., 23.], [87., 21.], [99., 18.]])
df_shop.shape
>>> (4, 2)

Что еще мы могли бы сделать с объектом DataFrame?

df_shop.describe()

df3.png

df_shop.plot.bar();

output_63_0.png

df_shop.plot.pie(subplots=True);

output_64_0.png

df_shop.plot.line();

output_65_0.png

df_shop.plot.area();

output_66_0.png

Мы также можем экспортировать DataFrame в отформатированные файлы данных:

df_shop.to_excel('data.xlsx')
df_shop.to_csv('data.csv')
url="
pandas.read_json(url, orient="index")

df4.png

df_football = pandas.read_json(url, orient="index")
df_football.Goals.plot.pie();

output_76_0.png

url="
pandas.read_json(path_or_buf=url, orient="index")

df5.png

df_tennis = pandas.read_json(path_or_buf=url, orient="index")
df_tennis.style.background_gradient()

df6.png

df_tennis.plot.pie(subplots=True, layout=(2,3), figsize=(10,6));

output_82_0.png

HTML веб-страница

pandas.read_html(' index_col="Team")[0]

df7.png

df_laliga = pandas.read_html(' index_col="Team")[0]
df_laliga.Pts.plot.barh();

output_87_0.png

df_laliga.Pts.sort_values().plot.barh();

output_88_0.png

url="
pandas.read_csv(filepath_or_buffer=url)

df8.png

df_internet = pandas.read_csv(filepath_or_buffer=url)
df_internet.hist();

output_93_0.png

df_internet.pivot_table(index='education', columns="internet_usage", aggfunc="size")

df-pivot.png

dfres = df_internet.pivot_table(index='education', columns="internet_usage", aggfunc="size")
dfres.style.background_gradient('Greens', axis=1)

dfpivot-color.png

Лицензия Creative Commons
Эта работа распространяется под лицензией Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 Международная лицензия.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *