Only Analyst
2.55K subscribers
140 photos
20 videos
157 links
Канал для всех, кто интересуется аналитикой данных и хочет изучить данную профессию
@onlyanalyst
Download Telegram
😀 Всем привет!

📹 Вчера в видео мы затронули такую сущность как массивы numpy. Разберем в чем их отличия от списка в Python.

📊 Списки - это встроенная структура данных в Python, которая может содержать разнородные элементы любого типа. Давайте рассмотрим пример создания списка:

my_list = [1, 2, 3, 'a', 'b', 'c']

🔢 Массивы numpy являются фундаментальной структурой данных в научных вычислениях и специально разработаны для числовых операций. Они однородны по своей природе, что означает, они могут содержать только элементы одного и того же типа данных. Вот пример создания массива numpy:

import numpy as np

my_array = np.array([1, 2.5, 3])

array([1., 2.5, 3.])

my_array.dtype

dtype('float64')


🧮 Как мы видим, numpy автоматически переводит из формата int64 в float64 целиком весь массив, даже если хотя бы один элемент является float64 - однородность это цена, которую приходится заплатить за скорость.

🎯 Еще одно ключевое отличие заключается в том, что массивы допускают поэлементные операции:

import numpy as np

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

result = arr1 * arr2

print(result)

# Output: [4, 10, 18]

🤔
Напротив, выполнение поэлементных операций со списками потребовало бы перебора каждого элемента, что медленнее и не так лаконично.

🔭 Еще одной полезной функцией массивов numpy является broadcasting, которая позволяет выполнять операции между массивами различной формы:

import numpy as np

arr = np.array([1, 2, 3])

result = arr * 2

print(result)


# Output: [2, 4, 6]

📝 Таким образом, в то время как списки являются структурой данных общего назначения в Python, массивы numpy специально разработаны для вычислений и обеспечивают лучшую производительность и функциональность. Однако, если вам нужно хранить элементы разных типов, то придется использовать списки.

🏠 Попробуйте повторить поэлементные операции и broadcasting с помощью списка Python и присылайте резудьтаты в комментарии.

🏎️ В следующих постах отдельно разберем индексацию и сравним скорость работы разных методов.

💬 Есть хотите обсудить аналитику данных, попросить совета по резюме, поделиться тестовыми или просто задать интересующие вопросы, то присоединяйтесь к нашему чату.

#numpy #python
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍5
👋 Всем привет!

🔢 Сегодня сравним все возможные способы возведения списка в квадрат в Python 🐍

🦄 Во-первых, создадим список:

my_list = [1, 2, 3, 4, 5]

🌈 Теперь рассмотрим различные способы возведения списка в квадрат:

1️⃣ Цикл for и метод append():

squared_list = []
for num in my_list:
squared_list.append(num ** 2)


2️⃣ Списковое включение:

squared_list = [num ** 2 for num in my_list]

3️⃣ Функция map():

squared_list = list(map(lambda num: num ** 2, my_list))

4️⃣ Массив numpy:

import numpy as np
my_array = np.array(my_list)
squared_array = np.square(my_array)
squared_list = squared_array.tolist()

🔬
Теперь проверим какой способ самый быстрый в зависимости от количества элементов в списке! Для этого воспользуемся библиотекой timeit. Диапазон значений для списка будет от 0 до 500 000 элементов.

🏁 Массив Numpy неоспоримый чемпион по скорости! Практически в 5 раз превышающий цикл и функцию map(), которая я думал будет быстрее. Списковое включение не только лаконичный, но и самый быстр способ возведения списка в квадрата без использовался дополнительных библиотек.

✒️ Как Вам такие питоновские гонки? Что еще было бы интересно Вам сравнить? Какие способы возведения списка в квадрат Вы еще знаете?

🏠 В качестве задания попробуйте использовать не метод np.square(), а broadcasting.

#numpy #python
👍12🔥72
😀 Всем привет!

🎥 В сегодняшнем выпуске разберем заграничный IT рынок без привязки к конкретной локации (на сколько это возможно)

🧐 Видео проводит параллели между разными IT рынками, чтобы зритель смог самостоятельно сделать выводы.

✒️ Поделитесь своим опытом или задавайте интересующие вопросы в комментариях.

#видео #интервью #поискработы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104
😀 Всем привет!

📕Сегодня продолжим тему курсов, обсудив такое явление как проект, который по уверению создателей курсов, станет жемчужиной Вашего резюме и дополнит портфолио.

🦄 Изначальный смысл портфолио - это отражение навыков, а также «уникального» почерка владельца, путем демонстрации своих лучших работ.

🎭 Портфолио сыграет свою роль, только в первый раз, когда HR или кто-либо другой его увидит, но в реальности подборку работ уже знают все наизусть, а удивить они могут только лишь своим отсутствием.

🏅 В плане навыков тут еще сложнее, так как зачастую проекты и правда довольно сложные в реализации, но заботливое руководство курсов осмотрительно снабдит ученика несколькими готовыми функциями, которые по своему размеру больше напоминают полноценный модуль. И вместо подробного разбора работы, заставит бездумно применить функции в нужных местах.

🧪 Задания на АБ тесты сконцентрированы всегда на финальной части, а именно расчете, где необходимо понять: прокрасились метрики или нет? Совершенно упуская из вида важнейшую часть - дизайн эксперимента, которая остается за кулисами в качестве сухой теории.

🧑‍🏫 Код-ревьюеры заслуживают отдельного внимания. От тренажера, который мы обсудили в прошлых частях, их отличает не столько человеческий подход, сколько большая склонность к ошибкам. Однобокость оценки сродни их автоматизированного коллеги.

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

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

✒️ Было бы интересно послушать мнение студентов, нанимающих и ревьюеров, всех приглашаю в комментарии.

#курсы #часть_3
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍5
🧑‍💻 Аналитики, привет!

🚯 Можете смело бросать изучение Python, SQL и статистики, потому что вышел временно бесплатный курс по ChatGTP от DeepLearning.AI в партнерстве с OpenAI.

🧑‍🏫 Небольшой ликбез:

👅 Большая языковая модель (LLM) - это тип искусственного интеллекта (AI), которая может понимать и генерировать человеческий язык. Она создается путем обучения нейронной сети на огромном наборе данных текста, что позволяет ей изучать закономерности и взаимосвязи языка.

🧑‍🏫 После обучения LLM может выполнять различные задачи по обработке естественного языка (NLP), такие как перевод, обобщение и генерация текста. Одним из примеров LLM является модель GPT-3 (Generative Pre-trained Transformer 3).

🤖 ChatGPT - это компьютерная программа, предназначенная для общения с людьми. Она использует искусственный интеллект, чтобы понимать, что пишут люди, и генерировать соответствующие ответы.

📕 Promt - это набор команд для ChatGTP.

📚 У меня прохождение курса заняло один вечер, хотя в описании написано, что он рассчитан на 1 час.

🏆 Вы научитесь лучшим практикам по написанию «промтов», создадите чат бота и узнаете как использовать OpenAI API.

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

🐡 DeepLearning.AI, во главе с Andrew Ng, на протяжении 6 лет создают потрясающие курсы на тему AI. Их профессиональный сертификат по TensorFlow стал одним из первых, который я полностью прошел.

🍾 OpenAI в рекламе не нуждаются, собственно они эту LLM и разработали.

✒️ А вы уже используете ChatGTP или другие ИИ в своей работе?

#chatgtp #курсы
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥9👎3👍1
🧜‍♂️ Всем привет!

🤯 Сейчас в процессе подготовки с @dianakoloda, Head of HR DataGo, два проекта: ответы на вопросы и «Прожарка» 🔥 резюме.

🧖 Если кто-то хотел задать вопрос или поделиться своим резюме, то у Вас еще есть время!

🙋‍♀️ Вопросы могут касаться любого этапа трудоустройства: поиск и смена работы, прохождение HR и технической части, выбор профессионального пути.

🚒 «Прожарка» заключается в разборе вашего резюме с точки зрения HR и технической. По итогу получите достаточно подробную обратную связь, которую сразу же сможете применить. Зрителям будет тоже интересно, так как проблемы обычно +- похожи.

✒️ Вопросы и резюме присылайте в комментарии под постом. Можете ставить пометку на сколько сильную «Прожарку» 👩‍🚒 хотите.

👯 Если есть друзья, которым это может быть интересно, то зовите - вместе веселее.

#прожарка #резюме #поискработы
👍5🔥5🥰3
🖖 Всем привет!

🧙‍♀️ Хотел поделиться аналитикой с ее главной составляющей - подписчиками. Думаю, что будет интересно рассмотреть группу с точки зрения «продуктовой» аналитики, а она в Telegram есть.

🧑‍💼 Это будет ежемесячной рубрикой, где вместе будем обсуждать результаты работы «продукта», выдвигать гипотезы, следить за динамикой и спорить, все как в жизни.

🏁 Основные достижения за апрель: 425 + подписчиков, три поста набрали более 1000 просмотров, 4 видео, 30 постов. Спасибо Вам огромное!

🎬 Начнем с небольшого ликбеза по разделам.

📈 Статистика начинается с секции «Общая», где отображается количество подписчиков, процент включивших уведомления (спасибо), среднее количество просмотров поста, и количество пересылок. Справа видим процентное изменение за период. Задержка данных - 1 день.

📊 Далее идет линейный график «Рост», где показывается изменение общего количества подписчиков. Следом показывается приток и отток подписчиков, а также изменение по включению уведомлений.

🕰 «Просмотры по часам» демонстрирует количество просмотров в зависимости от времени суток и сравнивает два недельных периода. Помогает выбрать оптимальное время выпуска контента.

🚰 Источники просмотров и подписчиков отображают откуда Вы сюда пришли. Что значит «Другое», не знаю, жду Ваших идей.

👅 «Языки» наименее интересный из всех разделов, так как скорее всего показывает локацию, а не язык пользователя.

🤸‍♀️ «Активность» агрегирует событие просмотр и поделиться по дням. Странно, что находится в самом внизу, хотя для меня один из самых интересных, так как помогает отслеживать пульс группы.

⌛️ В «недавних постах» выведен список постов с количеством просмотров и поделившихся.

🫢 В статистике не хватает общего рейтинга постов, процентов просмотра подписчиков и не подписчиков.

🥳 Подводя итоги месяца, скажу, что это был потрясающий старт, а дальше в планах еще больше постов и видео с интересными гостями.

👯‍♀️ Графики - это хорошо, но Ваша обратная связь намного важнее: жду ваших мнений и предложений!

#аналитика
🔥117👍4
🫡 Всем привет!

🙋 Самый частый вопрос после «Кто сильнее Python или SQL?» - это «Как/какой/когда/зачем пет-проект сделать?». Поэтому будет серия статей, в первой мы разберем мотивацию и определение, а также поделюсь списком возможных источников данных.

🦊 Пет-проект в первую очередь - это личный проект специалиста на тему, которая ему интересна, а уже потом строчка в резюме, на которую обратит внимание HR.

👨‍🏫 Исходя из определения, необходимо решить, что Вам интересно, иначе проект обречен на провал, не успев начаться.

🧑‍💻 Далее выбираем стек технологий, который будет релевантен в вашей области. Это может быть даже Excel, ведь идея намного важнее инструмента реализации.

🧞‍♂️ Например, я начинал digital web аналитиком, поэтому я выбрал пет-проект на тему: повторить Google Analytics дэшборды с использованием Python и BigQuery, в качестве платформы я использовал kaggle, так как там были необходимые датасеты и среда разработки.

🎁 Подготовил для Вас небольшую подборку по платформам с открытыми данными и категоризировал их.

🌍 Общие наборы данных:

Kaggle: много наборов данных по широкому кругу тем.
Репозиторий машинного обучения UCI: коллекция наборов данных для исследований в области машинного обучения, включая данные по финансам, медицине и социальным наукам.
Google Dataset Search: поисковая система для поиска наборов данных, размещенных на различных веб-сайтах.
DataHub: платформа для обнаружения, обмена и публикации открытых данных.
Коллекция общедоступных наборов данных, размещенных на Amazon Web Services.

📈 Экономические и финансовые наборы данных:

Данные Федерального резервного банка Сент-Луиса.
Quandl: финансовые и экономические данные.
Yahoo Finance: данные финансового рынка, включая исторические курсы акций.
Данные Всемирного банка и других международных организаций по ряду тем, включая бедность, гендер и окружающую среду.
Данные Международного валютного фонда по целому ряду тем, включая экономический рост и международную торговлю.

🌡 Наборы климатических и экологических данных:

NASA Earth Observations: данные об окружающей среде и спутниковые изображения.
Данные о погоде и климате от Национального управления океанических и атмосферных исследований (NOAA).
Global Forest Watch: данные о лесах по всему миру.
Данные Организации Объединенных Наций по целому ряду тем, включая окружающую среду и устойчивое развитие.

🏠 Наборы социальных и демографических данных:

Pew Research Center: данные о социальных и демографических тенденциях в США.
Open Data Soft: данные по целому ряду тем, включая здравоохранение, транспорт и общественную безопасность.
Данные UNICEF о здоровье и благополучии детей во всем мире.
Данные о гуманитарных кризисах и мерах реагирования по всему миру.

💊 Понимаю, что не самый удобный формат, поэтому оформил еще и в табличном виде с дополнительными полями: API, регистрация, форматы и прочее!

🖊 А какие еще источники Вы знаете? В ближайшее время планирую список расширять и добавить отечественные платформы.

#петпроект #подборка
🔥21👍75
🚀 Всем привет!

🐼 При работе с данными, используя библиотеку pandas в Python, обычно возникает необходимость применить операцию к каждой строке DataFrame. Один из способов сделать это - использовать итерацию строк. Однако этот подход может быть медленным и неэффективным, особенно для больших наборов данных.

🧭 В этом посте мы рассмотрим, как использовать метод .apply() и векторизацию, которые могут значительно повысить производительность.

👉 Предположим, у нас есть DataFrane с двумя столбцами "x" и "y", и мы хотим создать новый столбец "z", который является суммой "x" и "y" для каждой строки.

import pandas as pd

df = pd.DataFrame({'x': [1, 2, 3], 'y': [4, 5, 6]})

for index, row in df.iterrows():
df.loc[index, 'z'] = row['x'] + row['y']


👷‍♀️ Метод .iterrows() перебирает каждую строку DataFrame, а затем вычисляет сумму "x" и "y" для каждой строки. Метод .loc используется для установки значения нового столбца "z" для каждой строки.

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

df['z'] = df['x'] + df['y']

Создаем новый столбец "z", просто складывая столбцы "x" и "y" вместе с помощью оператора "+". Эта операция применяется сразу ко всему DataFrame, что намного быстрее, чем циклическое прохождение по каждой строке.

🍏 Наконец, давайте используем метод .apply() с лямбда-функцией для достижения того же результата.

df['z'] = df.apply(lambda row: row['x'] + row['y'], axis=1)

🐸 Этот код применяет лямбда-функцию к каждой строке DataFrame, чтобы вычислить сумму "x" и "y" и создать новый столбец "z" для сохранения результата.

⚖️ Чтобы сравнить производительность этих трех методов, давайте создадим больший DataFrane со 100 000 строками.

import numpy as np

df = pd.DataFrame({'x': np.random.randint(0, 10, size=100000), 'y': np.random.randint(0, 10, size=100000)})


🧮 Теперь давайте подсчитаем, сколько времени потребуется, чтобы создать новый столбец "z", используя итерацию строк, векторизацию и .apply()

# Итерация строк
start_time = time.time()
for index, row in df.iterrows():
df.loc[index, 'z'] = row['x'] + row['y']
end_time = time.time()
print(f"Time using row iteration: {end_time - start_time:.4f}s")

# Векторизация
start_time = time.time()
df['z'] = df['x'] + df['y']
end_time = time.time()
print(f"Time using vectorisation: {end_time - start_time:.4f}s")

# Apply
start_time = time.time()
df['z'] = df.apply(lambda row: row['x'] + row['y'], axis=1)
end_time = time.time()
print(f"Time using apply with lambda: {end_time - start_time:.4f}s")


Time using row iteration: 5.4305s
Time using vectorisation: 0.0021s
Time using apply with lambda: 0.7210s


🛬 На моем компьютере запуск этого кода занимает около 5 секунд при использовании итерации строк, метод .apply() выполняется почти секунду, а векториазция заняла всего 2 тысячных секунды.

🙇 Как вы думаете, когда использование итерации или метод .apply() оправдано? Какие результаты будут с 1 000 000 строк? Жду Ваших ответов в комментариях!

#pandas
👍85
👩‍🎨 Всем привет!

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

⚒️ Matplotlib

Matplotlib - библиотека Python для создания статических, интерактивных и анимированных визуализаций на Python. Легко настраиваемая библиотека, и ее API прост в освоении. Отличный выбор как для начинающих, так и для опытных аналитиков данных.

🌊 Seaborn

Seaborn - это библиотека визуализации данных, основанная на Matplotlib. В Seaborn есть множество встроенных тем и цветовых палитр, которые позволяют делать самые красивые графики.

🦫 Plotly

Plotly - это библиотека визуализации данных на Python, которая создает интерактивные визуализации, готовые к публикации, используя Dash. Plotly поддерживает несколько языков, включая Python, R и Julia.

📸 Bokeh

Bokeh - это библиотека визуализации данных на Python, для создания интерактивных визуализаций для веб-браузеров. Она поддерживает инструменты для очистки и соединения данных. Bokeh предназначен для использования с большими наборами данных и может обрабатывать потоковые данные в режиме реального времени. С помощью Bokeh можно создавать визуализации на основе JavaScript, не используя JavaScript.

🦅 Altair

Altair - это декларативная библиотека визуализации для Python, которая предоставляет простой и лаконичный синтаксис для создания визуализаций. Altair построен поверх Vega-Lite. Может использоваться с большими наборами данных.

📊 Ggplot

Ggplot - это библиотека визуализации данных на Python, которая предоставляет API для создания графиков. Она основана на популярном R-пакете ggplot2 и предоставляет аналогичный синтаксис и функционал. Предоставляет широкий спектр возможностей настройки.

🐼 Pandas

Pandas Visualization - это встроенная библиотека визуализации данных, которая предоставляет простой API для создания диаграмм и графиков из DataFrame Pandas.

🌁 HoloViews

HoloViews - это библиотека визуализации данных на Python, которая предоставляет гибкий и мощный API для создания интерактивных визуализаций данных. HoloViews построен поверх Bokeh и поддерживает несколько бэкендов, включая Matplotlib. Богатые возможности для создания аннотаций к графикам.

🙏 Cufflinks

Cufflinks - это библиотека Python для создания интерактивных графиков из DataFrames Pandas с помощью Plotly. Cufflinks также поддерживает несколько стилей построения, включая темы из Matplotlib и Plotly.

🕊️ Pygal

Pygal - это библиотека визуализации данных на Python. Она построена поверх SVG, что позволяет легко встраивать диаграммы в веб-приложения и документы. Pygal поддерживает целый ряд опций настройки, включая темы и цветовые схемы.

🖼️ Vincent

Vincent - это библиотека визуализации данных на Python с использованием Vega и Vega-Lite. Возможно, самое главное, что у Vincent есть Pandas-Fu, и он создан специально для обеспечения быстрого построения графиков DataFrames и Series Pandas.

🔗 Вот данные в табличном виде.

✒️ А какая Ваша любимая библиотека для визуализации?

#подборка #визуализация
11🔥6
🎨 Всем привет!

😀 В субботу обойдемся без Python и SQL, а обсудим тему, которая на прямую не касается аналитики данных, но тем не менее интересна - авторские права.

🙋‍♀️Некоторые заметили (на самом деле никто), что название группы созвучно с сайтом OnlyFans - платформой для поддержки создателей контента 😉

👩‍🎨 С дизайнером @anna_chet_art, когда прорабатывали дизайн, я решил сыграть на этом совпадении, поэтому некоторые элементы стиля были переосмыслены и воплощены с более технической и строгой ноткой. Подробный брендбук можете посмотреть по ссылке.

💌 После согласования и принятия работы, оставался один небольшой штрих - получить разрешение от OnlyFans на использование графических элементов, отдаленно напоминающих их творение! И кто бы мог подумать, но после короткой переписки и предоставления всех материалов, получили от них разрешение на использование (см. фото к посту) 😅

©️ Так что друзья, никогда не забывайте, что живем во время, когда все уже кому-то принадлежит, даже когда занимаешься анализом данных, надо задаваться вопросом откуда эти данные берутся и есть ли у вас разрешение на их использование или под какой лицензией они распространяются.

💻 Такое направление как парсинг довольно привлекательно звучит для начинающего аналитика, который хочет для своего проекта собрать информацию, но необходимо понимать, что многие сайты не сильно обрадуются такому наплыву GET запросов с Вашей стороны. И очень часто напрямую запрещают подобные действия.

🎳 Так что всегда лучше использовать данные, которые специально собраны для анализа. Множество датасетов можно найти в подборке или вот ссылка на мой давнишний набор данных недвижимости Парижа. Usability максимальная и распространяется по лицензии CC BY-NC-SA 4.0.

✒️ А откуда Вы обычно берете данные для исследований?

#авторскиеправа #истории
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🥰4
👋 Аналитики, привет!

🐼 В технической секции собесеования на аналитика данных, помимо SQL и Python, бывает еще отдельный блок вопросов про Pandas! Собрал некоторые из самых популярных вопросов о Pandas со StackOverflow, чтобы не только подготовиться к собеседованию, но и решать реальные рабочие задачи.

📚 Некоторые темы мы уже разбирали в группе, к ним будет приложена ссылка с соответствующим постом.

1️⃣ "Как выбрать определенные строки из фрейма данных в Pandas?" 🤔

📚 Разбор

🕵️‍♂️ Ответ: Использовать методы .loc или .iloc для выбора строк на основе условий или индекса.

import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'Gender': ['F', 'M', 'M', 'M']})

male_rows = df.loc[df['Gender'] == 'M']
print(male_rows)


2️⃣ "Как сгруппировать данные по столбцам в Pandas и использовать агрегатные функции?" 🤔

🕵️‍♂️ Ответ: Использовать метод .groupby для группировки данных по столбцу, а затем применить к группам агрегатные функции: mean, sum и count.

import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'Gender': ['F', 'M', 'M', 'M'],
'Salary': [50000, 60000, 70000, 80000]})

grouped = df.groupby('Gender')
print(grouped['Salary'].mean())
print(grouped['Salary'].sum())


3️⃣ "Как обработать пропущенные значения во фрейме данных в Pandas?" 🤔

🕵️‍♂️ Ответ: Использовать метод .fillna для заполнения пропущенных значений или используйте метод .dropna для удаления строк или столбцов с пропущенными значениями.

import pandas as pd
import numpy as np

df = pd.DataFrame({'Name': [np.nan, 'Bob', 'Charlie', 'David'],
'Age': [25, 30, np.nan, 40],
'Gender': ['F', 'M', 'M', 'M']})

filled = df.fillna(value={'Age': df['Age'].mean()})
print(filled)


df.dropna()

4️⃣ "Как мне объединить два DataFrames в Pandas?" 🤔

📚 Разбор

🕵️‍♂️ Ответ: Использовать метод .merge для объединения двух DataFrames на основе общего столбца или использовать метод .concat для объединения двух фреймов данных вдоль указанной оси.

import pandas as pd

df1 = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40]})
df2 = pd.DataFrame({'Name': ['Bob', 'Charlie', 'David', 'Eve'],
'Salary': [60000, 70000, 80000, 90000]})

merged = pd.merge(df1, df2, on='Name')
print(merged)


5️⃣ "Как применить функцию к каждому элементу в DataFrame Pandas?" 🤔

📚 Разбор

🕵️‍♂️ Ответ: Использовать метод .apply, чтобы применить функцию к каждому элементу во фрейме данных, как по строкам, так и по столбцам.

import pandas as pd

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

def add_one(x):
return x + 1

result = df.apply(add_one)
print(result)


6️⃣ "Как отсортировать DataFrame Pandas по столбцу?" 🤔

🕵️‍♂️ Ответ: Использовать метод .sort_values для сортировки фрейма данных по одному или нескольким столбцам.

import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40]})

sorted_df = df.sort_values(by='Age')
print(sorted_df)


7️⃣ "Как создать новый столбец в DataFrame Pandas на основе существующих столбцов?" 🤔

🕵️‍♂️ Ответ: Использовать оператор присваивания для создания нового столбца на основе существующих столбцов в DataFrame.

import pandas as pd

df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 35, 40],
'Gender': ['F', 'M', 'M', 'M']})

df['IsFemale'] = df['Gender'].apply(lambda x: x == 'F')
print(df)


8️⃣ "Как читать и записывать CSV-файлы с помощью Pandas?" 🤔

🕵️‍♂️ Ответ: Использовать метод .read_csv для чтения данных из CSV-файла в DataFrame Pandas и использовать метод .to_csv для записи DataFrame в CSV-файл.

import pandas as pd

# Reading data from a CSV file
df = pd.read_csv('data.csv')

# Writing data to a CSV file
df.to_csv('output.csv', index=False)


✒️ Какую из тем хотелось бы подробней обсудить?

#pandas
16🔥8
😀 Всем привет!

🧭 В предыдущем посте обсуждали различные источники открытых данных для pet-проектов, но иногда запросы бывают довольно специфические и доступных наборов может не хватить, в таком случае на помощь приходят синтетические данные.

⛩️ В таком случаю помогут как специализированные библиотеки для создания «фэйковых» данных, так и более распространенные в узких кругах решения.

🎰 Библиотека Faker широко используется для создания реалистичных поддельных данных, таких как имена, адреса, номера телефонов и многое другое. Обеспечивает простой способ создания больших наборов данных с различными значениями.

from faker import Faker
import pandas as pd

fake = Faker()

# Generate fake names and addresses
data = {'Name': [fake.name() for _ in range(100)],
'Address': [fake.address() for _ in range(100)]}

df = pd.DataFrame(data)

df.head()

🧮
NumPy - это мощная библиотека для научных вычислений на Python. Он предоставляет функции для генерации массивов случайных чисел в соответствии с различными распределениями.

import numpy as np
import pandas as pd

random_integers = np.random.randint(low=1, high=100, size=1000)

random_normal = np.random.normal(loc=0, scale=1, size=1000)

data = {'Random_Integers': random_integers,
'Random_Normal': random_normal}

df = pd.DataFrame(data)

🐼
Pandas - популярная библиотека для обработки и анализа данных. Она включает в себя функции для создания синтетических данных с определенной структурой, таких как временные ряды или категориальные переменные.

import pandas as pd

dates = pd.date_range(start='2022-01-01', periods=365)

data = pd.DataFrame({'Date': dates, 'Value': np.random.rand(len(dates))})


🙇‍♂️ Scikit-Learn - это широко используемая библиотека машинного обучения, которая также предлагает инструменты для генерации данных. Функция make_classification() может создавать синтетические наборы данных.

from sklearn.datasets import make_classification
import pandas as pd

X, y = make_classification(n_samples=1000, n_features=5, n_informative=3, n_classes=2)

df = pd.DataFrame(X, columns=[f"Feature_{i+1}" for i in range(X.shape[1])])
df['Label'] = y

📚
Это всего лишь несколько примеров библиотек Python, доступных для генерации синтетических данных. В зависимости от ваших конкретных потребностей вы можете изучить эти библиотеки более подробно и найти ту, которая наилучшим образом соответствует вашим требованиям.

🥋 Теперь Вы знаете как создавать синтетические данные для тестирования, прототипирования или заполнения пробелов в ваших наборах данных!

✒️ Какие еще данные хотелось бы Вам создать? Приглашаю в комментарии для обсуждения.

#петпроект
Please open Telegram to view this post
VIEW IN TELEGRAM
13🥰5👍3🔥1