[Python, Data Mining] Как я дешево покупаю Apple, используя анализ данных

Автор Сообщение
news_bot ®

Стаж: 6 лет 9 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
26-Авг-2020 16:31

Идея
Для меня техника Apple долгое время была недоступным продуктом. Однако, несколько лет назад, я открыл для себя пару идей которые позволяют мне покупать технику Apple за очень дешево, например новый MacBook для меня стоил всего лишь 20.000 рублей, AirPods вообще 800 рублей, последний iPhone — самый дорогой из списка: 30.000 рублей. Технику я всегда покупаю исключительно новую, но использую несколько правил как для ее покупки, так и для продажи. Продажи очень важная часть процесса, технику необходимо вовремя продавать; раньше я мог пользоваться техникой 4 года и позже просто оставлять свой старый iPhone — это не есть рационально с экономической точки зрения. Идея моего метода проста: минимизировать разницу между ценой покупки и ценой продажи.
В статье я покажу, как я пришел к оптимальной дате для покупки и продажи, используя статистику цен на технику предыдущих лет и парсинга сайтов с Б/У техникой. Отмечу, что этот процесс можно проделать для любой техники, я рассмотрю Apple.
Покупка
Покупка самая несложная часть. У меня очень простой алгоритм: я захожу на Яндекс Маркет и выбираю наименьшую цену, спустя максимум месяц после выхода нового устройства. Все. Конечно, это техника с «Горбушки», которую привезли из Европы или Америки, но единственное, что я теряю по сравнению с РСТ техникой это второй год гарантии, лично для меня -20% гораздо выгоднее, чем год дополнительной гарантии. (Пока писал статью бесплатно заменили один наушник AirPods Pro из-за того, что он трещал). В этом году я купил себе MacBook Pro за 80 тысяч и AirPods Pro за 16 тысяч, (продав предыдущий MacBook за 40 и купив за 60, а AirPods я вообще продал за 8(по отдельности правда)) ), покупая за 8800). Эти цены даже соотносятся с ценами в американском магазине Apple без налогов. Стоит отметить, что необходимо обязательно проверять технику перед покупкой: смотрите на серийный номер, совпадение его на телефоне и на коробке и различные другие элементы предосторожности при покупки техники на подобных рынках.
Продажа
Отмечу, что покупка техники это Импорт и происходит «сохранение» средств в долларах. Идея в том, что покупая MacBook за 80000 рублей, вы на самом деле покупаете его за $1200 и можете продать его на зарубежных площадках за доллары, то есть различные колебания курса рубля для моей модели будут несущественны. Тем не менее, я продавал всю технику на авито, так как валютный курс последние 4-5 лет был стабильный: 1$ = 65рублей.
В продаже самое главное выбрать удачное время: это и есть задача данный статьи, рассчитать наиболее прибыльное время покупки и продажи устройства.
Выбор устройства
Окей, я рассмотрю мою модель на примере iPad, который я планирую приобрести. Кстати, про iPhone — это один из самых невыгодных гаджетов — он стоит как MacBook, при этом не обладает необходимым для рабочей машины функционалом, а его стоимость, например мой XS, упала за год на 50%, резюмируя — iPhone покупать крайне невыгодно.
Парсинг авито
Я не нашел у Авито API, поэтому мне пришлось использовать Python и Selenium. Не самое стабильное решение, но вроде работает. Для начала попытаюсь подгрузить данные по запросу «iPad 11 PRO 64GB» и посмотреть, что там с ценами и проанализировать их. Мой код на Selenium выглядит следующим образом:

Код на Selenium

SPL
import csv
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.options import Options
search = 'iPad Pro 11 64GB'
page = 1
with open('venv/{}data.csv'.format(search), 'w') as new_file:
    # csv
    fieldnames = ['Search key', 'Page', 'Price, RUB', 'Subway nearby']
    csv_writer = csv.DictWriter(new_file, fieldnames=fieldnames, delimiter=',')
    csv_writer.writeheader()
    # prepare for parsing
    chrome_options = Options()
    chrome_options.add_argument("--headless")  # we will not open selenium browser just not to slow your pc =D
    website = 'https://www.avito.ru/moskva?q=' + str(search) + '&p=' + str(page)
    driver = webdriver.Chrome(ChromeDriverManager().install(), options=chrome_options)
    driver.implicitly_wait(10)
    driver.get(website)
    # shit to find
    name = "h3[class='snippet-title']"
    url = "a[class='snippet-link']"
    price = "span[data-marker='item-price']"
    address = "div[class='item-address']"
    # itemlines
    try:
        driver.find_element_by_css_selector("div[class='item__line']")  # check if selector exists
        itemlines = driver.find_elements_by_css_selector("div[class='item__line']")
        # code to execute
        for el in itemlines:
            try:
                el.find_element_by_css_selector(address)
                new_file.write(str(el.find_element_by_css_selector(name).text).replace(',', '') + ',' +
                               el.find_element_by_css_selector(url).get_attribute('href') + ',' +
                               el.find_element_by_css_selector(price).text + ',' +
                               str(el.find_element_by_css_selector(address).text).replace(',', '.'))
                new_file.write('\n')
            except:
                new_file.write(str(el.find_element_by_css_selector(name).text).replace(',', '') + ',' +
                               el.find_element_by_css_selector(url).get_attribute('href') + ',' +
                               el.find_element_by_css_selector(price).text + ',' +
                               'None')
                new_file.write('\n')
        print('Data saved to CSV | {}.csv'.format(search))
    except:
        print('There are no items due to your request')
    # global quit and log
    print('Browser closed')
    driver.quit()

Посмотрю, что в итоге получилось в табличке:

Табличка

SPL

Достаточно много выбросов — очевидно, что iPad Pro с игрой Fortnite без возникшего инфоповода никогда бы не стоил 120000, ровно как и iPad с «заблокированной материнкой» за 4500. Если кратко, надо подчистить дату и убрать все ненужное, чтобы это уже можно было анализировать.
Анализ данных
Теперь предстоит достаточно тривиальный анализ — открываю jupyter notebook и импортирую pandas — начинаю работать с данными. Окей, первое что я хочу сделать убрать значок рубля, который остался в табличке при парсинге.
data['Price, RUB'] = data['Price, RUB'].str.replace("₽", "")

Теперь хотелось бы, чтобы столбик «Price, RUB» был в формате int32.
data['Price, RUB'] = data['Price, RUB'].str.replace(' ', '')
data['Price, RUB'] = data['Price, RUB'].astype('int32')

Оставляю только те позиции, которые дороже 30000 и дешевле 68000. (цена нового iPad Pro).
data = data[data["Price, RUB"] > 30000]
data = data[data["Price, RUB"] < 68000]

Теперь можно просто посчитать среднее.
data["Price, RUB"].mean()

Cредняя цена на б/у iPad Pro 11 64 GB = 48382рублей
В целом достаточно логичное значение, единственное, что меня смутило — большое стандартное отклонение. Теперь посмотрю на iPad Pro 2017 года. (до этого я искал только iPad 2018 год выпуска, указав диагональ — 11).
Мой search это:
search = 'iPad PRO 10.5 2017 64Gb WIFI'

Cредняя цена на iPad Pro 2017 года 10.5 WIFI 64 GB = 25888рублей
Посчитать цены использования очень просто.
2 года использования iPad PRO 2018 = (62000 — 48382) / 2 = 13675рублей (6837.5 в год)
3 года использования iPad PRO 2017 = 36112 рублей (12037 в год)

В начале статьи я написал цену своих устройств, имея ввиду конечно разницу их покупки и продажи, как видно можно купить iPad Pro и пользоваться им два года всего лишь за 13675 рублей. Именно так и стоит покупать технику и держать в голове разницу между ценой покупки и ожидаемой продажи.
Разница на цены различных iPad в год почти в два раза, при том наибольшее снижение стоимости происходит сразу после покупки и в n-ый год, где n цифра, зависящая от выхода нового поколения, времени работы аккумулятора, развития новых технологии, поддержки новой OC и так далее. Какой вывод можно сделать, анализируя данные про iPad? iPad выгодно продавать спустя 2 года и покупать новый, так можно минимизировать траты на его использование.
Почему продавать необходимо спустя 2 года
В каждом из устройств Apple встроен Литий-ионный аккумулятор, срок службы которого и составляет 2-3 года, в зависимости от использования. После истечения времени, устройство начинает работать некорректно: тормозить, быстро разряжаться и т.д. Кcтати, в Америке Apple продает iPhone по контракту ровно на 24 месяца, скорее всего из-за аккумулятора.
Почему Apple стоит продавать до презентации
Здесь все еще логичнее: новая презентация = новые устройства и поэтому старые снижаются в цене. Чтобы было более понятно — график от bankmycell.

Выводы
1. При покупке необходимо учитывать разницу между ценой покупки и ожидаемой ценой продажи.
2. Стоит посмотреть исторические цены продажи устройства.
3. Анализ данных на примере iPad показывает, что его выгоднее продать спустя 2 года.
4. Из-за литий-ионных аккумуляторов продавать устройство лучше всего спустя 2, максимум 3 года.
5. Apple рационально продавать до презентации — так будет наиболее прибыльно.
6. В моей модели не были учтены такие важные факторы как: наличие нового дизайна, поддержка ОС и новых технологий(5G например), и другие факторы.
Источники
[1]. Lithium-Ion Battery Maintenance Guidelines. URL: www.newark.com/pdfs/techarticles/tektronix/LIBMG.pdf. Accessed 26.08.2020
[2]. CELL PHONE DEPRECIATION & PRICE DROPS. URL: www.bankmycell.com/blog/phone-depreciation. Accessed 26.08.2020
===========
Источник:
habr.com
===========

Похожие новости: Теги для поиска: #_python, #_data_mining, #_python3, #_apple, #_ipad, #_ekonomika (экономика), #_deshevo (дешево), #_iphone, #_analiz_dannyh (анализ данных), #_data_science, #_python, #_data_mining
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 22-Ноя 18:21
Часовой пояс: UTC + 5