🐍 Самоучитель по Python для начинающих. Часть 25: Основы анализа данных с Pandas

Покажем основные приемы работы с DataFrame и Series, которые нужно знать начинающему дата-аналитику. В конце статьи – 10 мини-проектов по анализу и визуализации многомерных данных.
🐍 Самоучитель по Python для начинающих. Часть 25: Основы анализа данных с Pandas

Библиотека Pandas – мощный инструмент для анализа и обработки табличных данных. Pandas используется в инженерных, научных и финансовых вычислениях – словом, везде, где нужны:

  • Анализ, исследование, сегментация, очистка, преобразование данных. Библиотека предоставляет множество функций для загрузки и обработки данных из различных источников. С помощью Pandas можно анализировать любую информацию, исследовать ее характеристики и особенности, а также преобразовывать данные в нужный формат для дальнейшего использования – в бизнес-аналитике, машинном обучении и т.п.
  • Сортировка, группировка и агрегация данных. В Pandas есть удобные функции для сортировки данных по различным критериям, группировки по определенным признакам и выполнения агрегации (суммирование, подсчет среднего значения, максимума и минимума и т.д.)
  • Индексация, фильтрация и выборка многомерных данных. Pandas позволяет использовать различные типы индексов и создавать многомерные индексы с помощью MultiIndex. Это помогает легко находить, фильтровать и выбирать нужные данные по различным критериям.
  • Определение эффективности и рисков, прогнозирование событий, оптимизация. Библиотеку можно использовать для прогнозирования спроса на основе исторических данных, анализа трендов и паттернов, а также для определения факторов, влияющих на эффективность бизнеса, результативность кампаний и прибыльность инвестиций.
  • Работа с временными рядами. Pandas обладает мощными возможностями для работы с временными рядами – позволяет выполнять индексацию по времени, агрегацию и ресемплирование временных данных, проводит анализ и визуализацию временных рядов. Это делает Pandas идеальным инструментом для работы с IoT, финансовыми и климатическими данными и другими областями, где временные ряды играют важную роль.
  • Формирование отчетов и визуализация данных. Pandas используют (совместно с Matplotlib и Seaborn) для создания отчетов и визуализации многомерных данных в виде наглядных таблиц, графиков и диаграмм.
🐍 Библиотека питониста
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека питониста»
🐍🎓 Библиотека собеса по Python
Подтянуть свои знания по Python вы можете на нашем телеграм-канале «Библиотека собеса по Python»
🐍🧩 Библиотека задач по Python
Интересные задачи по Python для практики можно найти на нашем телеграм-канале «Библиотека задач по Python»

В Pandas есть две основные высокоуровневые структуры данных – DataFrame и Series.

DataFrame – это двумерная табличная структура данных. Каждый столбец в таблице может содержать данные различного типа (числа, строки, булевы значения и т.д.). DataFrame располагает удобными методами для индексации, фильтрации, сортировки, группировки, агрегирования, слияния, объединения и преобразования данных. DataFrame можно сравнить с таблицей в реляционной базе данных или листом в Excel:

        import pandas as pd

# создаем DataFrame из словаря
data = {'Имя': ['Егор', 'Анна', 'Никита', 'Марина'],
        'Возраст': [25, 30, 28, 35],
        'Город': ['Москва', 'Самара', 'Ростов', 'Нижний Новгород']}

df = pd.DataFrame(data)

# выводим DataFrame на экран 
print(df)


    

Результат:

              Имя  Возраст            Город
0    Егор       25           Москва
1    Анна       30           Самара
2  Никита       28           Ростов
3  Марина       35  Нижний Новгород
    

Series – это одномерная маркированная структура данных, состоящая из индексов и соответствующих значений. В качестве меток могут выступать числа, даты, временные интервалы и строки. Метки позволяют получать доступ к элементам данных по определенным уникальным именам, а не только по индексам. Это особенно удобно в тех случаях, когда нужно обращаться к конкретным значениям по определенным меткам или условиям. Series можно рассматривать как упорядоченный словарь:

        import pandas as pd

data = [35000, 6000, 3000, 2000]
labels = ['Ноутбуки', 'Мониторы', 'Принтеры', 'Клавиатуры']

series = pd.Series(data, index=labels)

print(series['Принтеры'])  # выводим значение 3000, обращаясь к элементу с меткой 'Принтеры'

    

Результат:

        3000

    

Для операций с трехмерными данными в Pandas раньше использовалась структура Panel. Теперь вместо Panel используется MultiIndex в сочетании с DataFrame. MultiIndex позволяет создавать иерархические индексы для многомерных массивов данных:

        import pandas as pd

# создаем MultiIndex с двумя уровнями
index = pd.MultiIndex.from_tuples([('Москва', 'Ноутбуки'), ('Москва', 'Настольные ПК'),
                                   ('Санкт-Петербург', 'Ноутбуки'), ('Санкт-Петербург', 'Настольные ПК')])

# создаем DataFrame с MultiIndex
data = [[1000, 200000], [3000, 400000], [5000, 600000], [7000, 800000]]
df = pd.DataFrame(data, index=index, columns=['Продажи', 'Прибыль'])

print(df) 

    

Результат:

                                       Продажи  Прибыль
Москва          Ноутбуки          1000   200000
                Настольные ПК     3000   400000
Санкт-Петербург Ноутбуки          5000   600000
                Настольные ПК     7000   800000

    

Способы создания Series

Метод pd.Series() создает одномерный массив Series из почти любых исходных данных. Так можно создать Series из списка и словаря:

        import pandas as pd

# создаем Series из списка
data1 = [10, 20, 30, 40, 50]
series1 = pd.Series(data1)

# создаем Series из словаря
data2 = {'А': 10, 'Б': 20, 'В': 30, 'Г': 40, 'Д': 50}
series2 = pd.Series(data2)

print(series1)
print(series2)

    

Результат:

        0    10
1    20
2    30
3    40
4    50
dtype: int64
А    10
Б    20
В    30
Г    40
Д    50
dtype: int64

    

Так при создании Series можно задать нужные метки:

        import pandas as pd

data = [10, 20, 30, 40, 50]
index = ['2019', '2020', '2021', '2022', '2023']
series = pd.Series(data, index=index)
print(series)
print(series['2021'])  # вывод: 30
print(series['2023'])  # вывод: 50 

    

Результат:

        2019    10
2020    20
2021    30
2022    40
2023    50
dtype: int64
30
50

    

Так можно создать Series из массива NumPy:

        import pandas as pd
import numpy as np

data = np.array([10, 20, 30, 40, 50])
series = pd.Series(data)
print(series)

    

Результат:

        0    10
1    20
2    30
3    40
4    50
dtype: int32

    

А еще Series можно создать с помощью функции range():

        import pandas as pd

series = pd.Series(range(1, 6), index=['a', 'b', 'c', 'd', 'e'], name='числа')
print(series)

    

Результат:

        a    1
b    2
c    3
d    4
e    5
Name: числа, dtype: int64

    

На практике очень часто SeriesDataFrame, как мы увидим позже) создают из данных, представленных в csv файлах. К примеру, есть файл data.csv с таким содержимым:

        column_name_1,column_name_2,column_name_3
1,100,Яблоки
2,110,Апельсины
3,130,Мандарины
4,95,Бананы
5,450,Виноград

    

Из столбцов этого файла можно сформировать Series:

        import pandas as pd

dataframe = pd.read_csv('data.csv')
series_1 = dataframe['column_name_1']
series_2 = dataframe['column_name_2']
series_3 = dataframe['column_name_3']

print(series_1)
print(series_2)
print(series_3)

    

Результат:

        0    1
1    2
2    3
3    4
4    5
Name: column_name_1, dtype: int64
0    100
1    110
2    130
3     95
4    450
Name: column_name_2, dtype: int64
0       Яблоки
1    Апельсины
2    Мандарины
3       Бананы
4     Виноград
Name: column_name_3, dtype: object

    
Начните карьеру в IT с Python: практический онлайн-курс для новичков
Онлайн-курс «Основы программирования на Python» от Proglib academy предлагает 32 практических урока с персональной обратной связью от экспертов, где вы создадите 4 реальных проекта для портфолио и получите все необходимые навыки для старта карьеры в IT.

Способы создания DataFrame

DataFrame можно создавать из одномерных и двумерных списков:

        import pandas as pd

data = [['Анна', 25, 'дизайнер'],
        ['Никита', 30, 'тимлид'],
        ['Полина', 32, 'бэкендер']]
df = pd.DataFrame(data)
print(df)

    

Результат:

                0   1         2
0    Анна  25  дизайнер
1  Никита  30    тимлид
2  Полина  32  бэкендер

    

Создание DataFrame из словаря тоже выглядит просто:

        import pandas as pd

data = {'Имя': ['Егор', 'Полина', 'Ника'],
        'Возраст': [35, 30, 35],
        'Город': ['Самара', 'Ростов', 'Омск']}

df = pd.DataFrame(data)
print(df)
    

Результат:

              Имя  Возраст   Город
0    Егор       35  Самара
1  Полина       30  Ростов
2    Ника       35    Омск

    

Можно создать DataFrame из NumPy массива:

        import pandas as pd
import numpy as np

data = np.array([[1, 2, 3],
                 [4, 5, 6],
                 [7, 8, 9]])
df = pd.DataFrame(data, columns=['А', 'Б', 'В'])
print(df)

    

Результат:

           А  Б  В
0  1  2  3
1  4  5  6
2  7  8  9

    

Можно создать DataFrame из одной или нескольких Series – каждая серия станет одним из столбцов:

        import pandas as pd

series1 = pd.Series([1, 2, 3], name='XL')
series2 = pd.Series([4, 5, 6], name='M')
df = pd.DataFrame({series1.name: series1, series2.name: series2})
print(df)

    

Результат:

           XL  M
0   1  4
1   2  5
2   3  6

    

Создать DataFrame из csv файла еще проще:

        import pandas as pd
df = pd.read_csv('info.csv')
print(df)

    

Результат:

           column1  column2    column3
0        1    30000   Ноутбуки
1        2     5000   Планшеты
2        3    13000  Смартфоны
3        4     4500   Принтеры
4        5     5500   Мониторы

    

Основные методы Pandas

Библиотека предоставляет множество различных функций для работы с DataFrame и Series – здесь мы рассмотрим только самые основные.

Чтение CSV и XLSX файлов

С помощью методов head() и tail() можно выводить определенное число первых или последних строк файла:

        import pandas as pd

# Чтение данных из файла CSV
dataframe = pd.read_csv('data.csv')

# Вывод первых 2 строк DataFrame
print(dataframe.head(2))

# Вывод последних 2 строк DataFrame
print(dataframe.tail(2))

    

Результат:

        
   столбец_1  столбец_2  столбец_3
0          1        100     Яблоки
1          2        110  Апельсины
   столбец_1  столбец_2 столбец_3
6          7        500   Черешня
7          8        250  Персики

    

Если в head() и tail() не передавать нужное количество строк, по умолчанию будут выведены первые (или последние) 5 строк.

Для чтения Excel файлов используют метод read_excel():

        import pandas as pd

# читаем Excel файл
df = pd.read_excel('data.xlsx')

# выводим DataFrame
print(df)

    

Результат:

               SR.      NAME  GENDER  AGE       DATE         COUNTRY
0        1      Dett    Male   18  21/05/2015  Great Britain
1        2     Nern   Female   19  15/10/2017         France
2        3   Kallsie    Male   20  16/08/2016         France
3        4     Siuau  Female   21  21/05/2015  Great Britain
4        5  Shennice    Male   22  21/05/2016         France
...    ...       ...     ...  ...         ...            ...
2716  2717  Shennice  Female   54  21/05/2024  United States
2717  2718    Chasse  Female   55  15/10/2026  United States
2718  2719    Tommye  Female   56  16/08/2025  Great Britain
2719  2720   Dorcast  Female   57  21/05/2024         France
2720  2721   Angelee  Female   58  21/05/2025  Great Britain

[2721 rows x 6 columns]
    

В read_excel() можно передать дополнительный параметр, чтобы вывести определенный лист по его названию или по индексу:

        df = pd.read_excel('data.xlsx', sheet_name='Лист1') # по названию
df = pd.read_excel('data.xlsx', sheet_name=0) # по индексу

    

Можно прочитать листы выборочно:

        sheets = ['Продажи', 'Затраты', 'Прибыль']
df_dict = pd.read_excel('data.xlsx', sheet_name=sheets)

# доступ к объектам DataFrame по именам 
df1 = df_dict['Продажи']
df2 = df_dict['Затраты']
df3 = df_dict['Прибыль']

    

А так можно пропустить нужное количество строк:

        df = pd.read_excel('data.xlsx', skiprows=2)  # пропускаем первые 2 строки
    

Запись данных в CSV и XLSX файлы

Метод to_csv() сохраняет DataFrame в csv файле, причем индексы можно не записывать:

        import pandas as pd

# создание DataFrame
dataframe = pd.DataFrame({'M': [100, 120, 130], 'L': [140, 150, 165]})

# запись данных в файл CSV
dataframe.to_csv('output.csv', index=False)

    

Содержимое файла output.csv будет выглядеть так:

        M,L
100,140
120,150
130,165

    

Запись данных в файл Excel выполняют с помощью функции to_excel():

        import pandas as pd

# создание DataFrame
dataframe = pd.DataFrame({'Москва': [10000000, 250000, 300], 'Самара': [4000000, 150000, 600]})

# запись данных в файл Excel
dataframe.to_excel('output.xlsx', index=False)

    

Индексация и доступ к данным

Метод loc[] обеспечивает доступ к данным по метке индекса или столбца:

        import pandas as pd

# создаем DataFrame
dataframe = pd.DataFrame({'Велосипеды': [100, 200, 350], 'Самокаты': [240, 500, 650]})

print(dataframe.loc[0, 'Велосипеды'])  # выводим значение в первой строке и столбце 'Велосипеды'
print(dataframe.loc[1])  # выводим вторую строку целиком
print(dataframe.loc[:, 'Самокаты'])  # выводим столбец 'Самокаты' целиком

    

Результат:

        100
Велосипеды    200
Самокаты      500
Name: 1, dtype: int64
0    240
1    500
2    650
Name: Самокаты, dtype: int64

    

Метод iloc[] предоставляет доступ к данным по числовому индексу или позиции:

        import pandas as pd

# создаем DataFrame
dataframe = pd.DataFrame({'Кошки': [400, 500, 600], 'Собаки': [145, 255, 350]})

print(dataframe.iloc[0, 1])  # выводим значение в первой строке и втором столбце
print(dataframe.iloc[1])  # выводим вторую строку целиком
print(dataframe.iloc[:, 1])  # выводим второй столбец целиком

    

Результат:

        145
Кошки     500
Собаки    255
Name: 1, dtype: int64
0    145
1    255
2    350
Name: Собаки, dtype: int64

    

Метод at[] обеспечивает доступ к одному элементу по метке индекса и столбца:

        import pandas as pd

dataframe = pd.DataFrame({'Фрукты': [150, 250, 350], 'Овощи': [420, 520, 625]})
print(dataframe.at[0, 'Фрукты'])  # выводим значение в первой строке и столбце 'Фрукты'

    

Результат:

        150
    

Метод iat[] предоставляет доступ к одному элементу по числовому индексу и позиции:

        import pandas as pd

dataframe = pd.DataFrame({'Возраст': [22, 25, 27], 'Зарплата': [70000, 90000, 12000]})
print(dataframe.iat[0, 1])  # выводим значение в первой строке и втором столбце

    

Результат:

        70000
    

Манипуляции с данными

shape() возвращает размеры DataFrame:

        import pandas as pd

dataframe = pd.DataFrame({'Завтрак': [100, 20, 35], 'Обед': [40, 50, 65], 'Ужин': [20, 150, 75]})

# получаем размеры DataFrame с помощью shape
print(dataframe.shape)  # выводим (3, 3) - 3 строки и 3 столбца


    

Результат:

        (3, 3)

    

drop() позволяет удалять столбцы и строки. Так удаляют столбцы:

        import pandas as pd

# создаем DataFrame
dataframe = pd.DataFrame({'А': [1, 2, 3], 'Б': [4, 5, 6], 'В': [4, 5, 6]})

# удаляем столбцы 'A' и 'B' 
dataframe_dropped = dataframe.drop(['А', 'В'], axis=1)

print(dataframe_dropped)

    

Результат:

           Б
0  4
1  5
2  6

    

А так можно удалить строки:

        import pandas as pd

dataframe = pd.DataFrame({'А': [10, 20, 30], 'Б': [45, 55, 65], 'В': [74, 85, 96], 'Г': [94, 35, 66]})

# удаляем строки 0 и 1
dataframe_dropped = dataframe.drop([0, 1], axis=0)

print(dataframe_dropped)

    

Результат:

            А   Б   В   Г
2  30  65  96  66

    

rename() позволяет переименовать столбцы DataFrame:

        import pandas as pd

dataframe = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})

# переименование столбцов 'A' и 'B' 
dataframe_renamed = dataframe.rename(columns={'A': 'Столбец_1', 'B': 'Столбец_2'})
print(dataframe_renamed)

    

Результат:

           Столбец_1  Столбец_2
0          1          4
1          2          5
2          3          6

    

sort_values() выполняет сортировку:

        import pandas as pd

dataframe = pd.DataFrame({'А': [3, 2, 1], 'Б': [6, 5, 4], 'В': [9, 8, 7]})

# сортируем данные по столбцу 'A' 
dataframe_sorted = dataframe.sort_values(by='А')
print(dataframe_sorted)

    

Результат:

           А  Б  В
2  1  4  7
1  2  5  8
0  3  6  9

    

isnull() – возвращает True, если обнаруживает пропуск значения:

        import pandas as pd

dataframe = pd.DataFrame({'Углеводы': [43, 27, None, 49],
                          'Жиры': [50, None, 17, 8],
                          'Белки': [25, 5, 11, None]})

# ищем пропущенные значения 
missing_values = dataframe.isnull()
print(missing_values)

    

Результат:

           Углеводы   Жиры  Белки
0     False  False  False
1     False   True  False
2      True  False  False
3     False  False   True

    

fillna() – заполняет пропущенные значения нужными показателями:

        import pandas as pd

dataframe = pd.DataFrame({'Выручка': [105600, 209800, None, 403450],
                          'Убытки': [5034, None, 17093, 80666],
                          'Накладные расходы': [15000, None, 17000, 18000]})

# заполняем пропущенные значения нулями
filled_dataframe = dataframe.fillna(0)
print(filled_dataframe)

    

Результат:

            Выручка   Убытки  Накладные расходы
0  105600.0   5034.0            15000.0
1  209800.0      0.0                0.0
2       0.0  17093.0            17000.0
3  403450.0  80666.0            18000.0

    

merge() – объединяет DataFrame на основе общих столбцов:

        import pandas as pd

dataframe1 = pd.DataFrame({'A': [10, 20, 30, 40],
                           'B': ['XL', 'L', 'M', 'S']})

dataframe2 = pd.DataFrame({'A': [10, 20, 30, 40],
                           'C': ['52', '48', '46', '42']})

# объединяем 2 объекта DataFrame на основе столбца 'A'
merged_dataframe = pd.merge(dataframe1, dataframe2, on='A')
print(merged_dataframe)

    

Результат:

            A   B   C
0  10  XL  52
1  20   L  48
2  30   M  46
3  40   S  42

    

apply() – применяет функцию к каждому элементу (строке, столбцу):

        import pandas as pd

dataframe = pd.DataFrame({'A': [12, 25, 3],
                          'B': [41, 55, 16]})

# применяем функцию к каждому элементу DataFrame
processed_dataframe = dataframe.apply(lambda x: x ** 2 + 3 * x - 1)
print(processed_dataframe)

# применяем функцию к одному столбцу DataFrame
processed_dataframe['A'] = processed_dataframe['A'].apply(lambda x: x / 5)
print(processed_dataframe)

# применяем функцию ко второй строке
processed_dataframe.loc[1] = processed_dataframe.loc[1].apply(lambda x: x * 10)
print(processed_dataframe)

    

Результат:

             A     B
0  179  1803
1  699  3189
2   17   303
       A     B
0   35.8  1803
1  139.8  3189
2    3.4   303
        A      B
0    35.8   1803
1  1398.0  31890
2     3.4    303

    

Статистические показатели

describe() – выводит основные статистические показатели:

        import pandas as pd

dataframe = pd.DataFrame({'Лейкоциты': [134, 232, 321], 'Эритроциты': [474, 561, 690]})

# вывод основных статистических показателей
print(dataframe.describe())

    

Результат:

                Лейкоциты  Эритроциты
count    3.000000    3.000000
mean   229.000000  575.000000
std     93.536089  108.678425
min    134.000000  474.000000
25%    183.000000  517.500000
50%    232.000000  561.000000
75%    276.500000  625.500000
max    321.000000  690.000000

    

sum() – суммирует значения по столбцам:

        import pandas as pd

dataframe = pd.DataFrame({'Ноутбуки': [341, 267, 382], 'Планшеты': [374, 503, 466]})

# выводим суммы значений по столбцам
print(dataframe.sum())  

    

Результат:

        Ноутбуки     990
Планшеты    1343
dtype: int64

    

mean() – вычисляет средние значения по столбцам:

        import pandas as pd

dataframe = pd.DataFrame({'Выручка': [134500, 200670, 300345], 'Затраты': [40450, 50450, 60450]})

# выводим средние значения для столбцов
print(dataframe.mean())  

    

Результат:

        Выручка    211838.333333
Затраты     50450.000000
dtype: float64

    

min() и мах() – выводят минимальные и максимальные значения для каждого столбца:

        import pandas as pd

dataframe = pd.DataFrame({'Apple': [1034, 1245, 3985], 'Nvidia': [4034, 5124, 6723]})
print(dataframe.min())  # минимальные значение в столбцах
print(dataframe.max())  # максимальные значения в столбцах

    

Результат:

        Apple     1034
Nvidia    4034
dtype: int64
Apple     3985
Nvidia    6723
dtype: int64

    

Группировка и агрегация

groupby() – группирует данные по указанному столбцу. Одновременно можно применить к значениям агрегирующую функцию:

        import pandas as pd

dataframe = pd.DataFrame({'Имя': ['Анна', 'Кирилл', 'Марина', 'Павел', 'Егор'],
                          'Возраст': [25, 30, 28, 35, 37],
                          'Зарплата': [150000, 163000, 145000, 172500, 155000]})

# группируем данные по столбцу 'Имя' и вычисляем среднюю зарплату
grouped_data = dataframe.groupby('Имя').agg({'Зарплата': 'mean'})
print(grouped_data)

    

Результат:

                Зарплата
Имя             
Анна    150000.0
Егор    155000.0
Кирилл  163000.0
Марина  145000.0
Павел   172500.0

    

agg() – применяет агрегирующую функцию к группам данных:

        import pandas as pd

dataframe = pd.DataFrame({'Столица': ['Лондон', 'Париж', 'Токио', 'Берлин', 'Рим'],
                          'Население': [8908081, 2140526, 13929286, 3748148, 2870493],
                          'Площадь': [1572, 105.4, 2190.93, 891.68, 1285.31],
                          'Годовая зарплата': [58000, 42000, 72000, 52000, 49000]})

# вычисляем среднее значение и сумму дохода
aggregated_data = dataframe.agg({'Годовая зарплата': ['mean', 'sum']})
print(aggregated_data)

    

Результат:

              Годовая зарплата
mean           54600.0
sum           273000.0

    

pivot_table() – создает сводную таблицу на основе DataFrame:

        import pandas as pd

dataframe = pd.DataFrame({'Производитель': ['Nestle', 'Hershey', 'Mars', 'Ferrero', 'Cadbury'],
                          'Продукт': ['KitKat', 'Hershey Bar', 'Snickers', 'Ferrero Rocher', 'Dairy Milk'],
                          'Цена': [2.99, 1.99, 1.49, 14.99, 13.49]})

# создаем сводную таблицу
pivot_table_data = dataframe.pivot_table(index='Производитель', columns='Продукт', values='Цена', aggfunc='mean')
print(pivot_table_data)

    

Результат:

        Продукт        Dairy Milk  Ferrero Rocher  Hershey Bar  KitKat  Snickers
Производитель                                                           
Cadbury             13.49             NaN          NaN     NaN       NaN
Ferrero               NaN           14.99          NaN     NaN       NaN
Hershey               NaN             NaN         1.99     NaN       NaN
Mars                  NaN             NaN          NaN     NaN      1.49
Nestle                NaN             NaN          NaN    2.99       NaN

    
***

Отлично! Вы освоили весь основной арсенал для обработки данных с помощью Pandas.

Вы умеете создавать и изменять DataFrame, выполнять группировку, агрегацию и применять десятки методов для манипуляции данными. У вас в руках полный набор инструментов для подготовки и очистки данных.

Но обработка данных — это лишь полдела. Настоящий анализ начинается тогда, когда вы находите в данных скрытые закономерности и можете наглядно их представить. В полной версии урока вы:

  • Научитесь визуализировать данные из DataFrame, строя понятные графики и диаграммы.
  • Решите 10 полноценных аналитических мини-проектов: вы будете анализировать финансовые показатели, продажи, климатические данные и многое другое, чтобы ответить на конкретные бизнес-вопросы.
  • Соберёте портфолио реальных кейсов, которые демонстрируют ваш навык не просто обрабатывать, а анализировать данные.

Комментарии

 
 

ВАКАНСИИ

Добавить вакансию
Backend developer (PHP / Go)
Москва, по итогам собеседования
Старший C++ разработчик
Лимасол, по итогам собеседования
Middle/Senior C++ HFT разработчик
Москва, по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

LIVE >

Подпишись

на push-уведомления