• Как авторизоваться на сайте с помощью python?

    @lPolar
    data scientist
    Думаю дело в том, что на mail есть AJAX.
    Нужно сделать следующее - через Firebug в Firefox посмотреть, какие конкретно запросы с каким содержанием шлет клиент серверу при логине, и воспроизвести эти запросы через любой удобный инструмент - grab/requests.
    Мне в этом плане нравится grab - он быстрый и легко парсит исходный код страницы.
    Ответ написан
    Комментировать
  • Существуют ли заочные курсы или стажировка по анализу данных на русском языке?

    @lPolar
    data scientist
    ИМХО, тут есть несколько аспектов:
    1. Как написал brainick , математический бэкграунд и английский в data science практически обязателен.
    Причин этому несколько: отсутствие хорошей литературы на русском языке (как по теории, так и по программированию), обилие английских терминов (lift/top/cross-validation и прочие), значение которых в переводной литературе порой объяснятся весьма туманно.
    2. Если говорить о конкретной литературе, которую стоит почитать, я бы выделил несколько уровней:
    Уровень 0
    1. Бизнес-аналитика - Паклин, Орешков (самое базовое и обзорное введение)
    2. Статистика/Тервер ( по мне, хороши книги Айвазяна/Мхитаряна)
    3. SQL - в обязательном порядке. Мне в свое время помогла книга "SQL для простых смертных"
    4. Изучаем Python - М. Лутц (наиболее полная книга по языку, все что нужно для data science здесь точно есть)
    5. Программируем коллективный разум (к слову сказать, вот в этой книге отличный перевод)
    Уровень 1
    1. Математические основы машинного обучения и прогнозирования - Вьюгин (книга сложная, без подготовки по учебникам НМУ на тему анализа и линейной алгебры лучше не подходить)
    2. Python for Data Analysis (pandas во всей красе, тут нечего добавить)
    3. Примеры и статьи по построению моделей в sklearn - на хабре в последнее время часто мелькают статьи на эту тему, там все достаточно хорошо расписано.
    Уровень 2
    1. Hadoop и иже с ним ("Hadoop в действии", "Programming Pig")
    2. Apache Spark - достаточно почитать описание Python API.
    Тут есть еще один момент - не стоит слишком привязываться к одному языку и фреймворку.
    Одна из неприятных проблем python+pandas+sklearn заключается в том, что эта связка слабо масштабируется - при 2-3-4 гб данных становится сложно разместить их в оперативной памяти. Я знаю про chunk-reading+partial_fit, но точность таких моделей оставляет желать лучшего.
    С другой стороны, если обрабатывать эти данные в pyspark, то теряется все удобство pandas.DataFrame и так далее. Отрасль data science быстро развивается и обрастает новыми технологиями, так что нужно все время держать руку на пульсе.
    UPD: в spark 1.3 появились DataFrame.
    Ответ написан
    4 комментария
  • PIP или esay_install: что лучше?

    @lPolar
    data scientist
    кстати как вариант можно попробовать conda. Из плюсов - большую часть пакетов берет уже скомпилированными. Из минусов - не все пакеты в ней есть.
    Ответ написан
    Комментировать
  • Можно ли использовать ассоциативные массивы в качестве альтернативы операторов ветвления?

    @lPolar
    data scientist
    Кстати, Лутц в "Изучаем Python" как раз писал о том, что словари и нужно использовать в качестве операторов ветвления.
    Ответ написан
    1 комментарий
  • Написание бота на Python 3.x?

    @lPolar
    data scientist
    Вопрос по автоматизации действий с сайтами действительно зачастил.
    Если нужно быстро и просто, то webtest,selenium,requests.
    Если нужно чуть медленнее, но с разными фичами, то grab,mechanize,beautifulsoup.
    Лично я использую grab, потому что он достаточно шустрый (pycurl/lxml бэкэнд быстрее python-библиотек) и потому что высокоуровнево (легкая многопоточность, обработка форм, документация на русском).
    Ответ написан
    Комментировать
  • Python. Как реализовать цикл внутри вложенного списка?

    @lPolar
    data scientist
    Первое - называть системными именами (list) переменные не есть комильфо.
    Если Вам необходимо работать со списками списков и индексировать их, доставать различные срезы, то pure python списки являются не самыми удобными структурами данных.
    На мой взгляд, тут есть несколько вариантов.
    1. pyre python через словари:
    tab={'a1':['aa1','aa2'],
         'b1':['bb1','bb2','bb3'],
         'c1':['cc1','cc2','cc3','cc4',]}
    for key in tab:
        row=tab[key]
        for el in row:
            print(el)

    2. Через pandas DataFrame - очень удобные структуры для срезов/операций по колонкам/строкам
    import pandas as pd
    l = [
       ['aa1','aa2'],
       ['bb1','bb2','bb3'],
       ['cc1','cc2','cc3','cc4',],
           ]
    df=pd.DataFrame(l)
    print(df)
    #Выведет
         0    1     2     3
    0  aa1  aa2  None  None
    1  bb1  bb2   bb3  None
    2  cc1  cc2   cc3   cc4

    Тут можно доставать срезы по одной или двум осям:
    print(df[0])
    #Выведет
    0    aa1
    1    bb1
    2    cc1
    Ответ написан
  • В каких библиотеках можно посмотреть пример хорошего кода на python?

    @lPolar
    data scientist
    Если говорить о больших и сложных библиотеках, в которых используется большое количество именно python-специфичного кода (с декораторами и прочими плюшками) , советую обратить внимание на исходный код pandas.
    Ответ написан
    Комментировать
  • Чисто теоретически, можно ли написать субд на python?

    @lPolar
    data scientist
    Можно и вполне практическую.
    labs.codernity.com/codernitydb
    Pure python, NoSQL.
    Ответ написан
    Комментировать
  • Как реализовать имитацию веб пользователя?

    @lPolar
    data scientist
    Если вся логика этих действий обворачивается в get/post запросы, достаточно написать соответствующие запросы и слать их сайту с нужной переодичностью.
    Решение на python - Grab + продебажить запросы через Firebug в Firefox.
    Ответ написан
    Комментировать
  • Почему словарь как аттрибут не уникален?

    @lPolar
    data scientist
    Мне кажется, что в данном случае переменная attr_dic, определенная в классе SomeClass при использовании этого класса остается общей для всех объектов этого класса (коряво написанный, но показательный пример на python 3):
    class SomeClass:
        attr_dic = {'a': 1, 'b': 2}
    class OtherClass:
        def __init__(self):
            self.attr_dic={'a':1,'b':2}
    some_a = SomeClass()
    some_b = SomeClass()
    print('some_a adress %i'%id(some_a)) #выведет 204146672
    print('some_b adress %i'%id(some_b)) # выведет 204148720
    print('some_a dict adress %i'%id(some_a.attr_dic)) # 204166128
    print('some_b dict adress %i'%id(some_b.attr_dic)) # 204166128
    other_a = OtherClass() 
    other_b = OtherClass()
    print('other_a adress %i'%id(other_a)) #204145392
    print('other_b adress %i'%id(other_b)) #204148592
    print('other_a dict adress %i'%id(other_a.attr_dic)) #204165448
    print('other_b dict adress %i'%id(other_b.attr_dic)) #204115000
    Ответ написан
  • Какие вы можете порекомендовать библиотеки Python для многопоточности?

    @lPolar
    data scientist
    Grab и его Spyder - ориентированы на парсинг, там отлично реализована многопоточность, плюс есть доки на русском.
    Пост на хабре от автора модуля - habrahabr.ru/post/134918
    Ответ написан
    Комментировать
  • Что такое ZODB, и зачем оно нужно?

    @lPolar
    data scientist
    Предыдущий оратор не в теме.
    ZODB - это не просто база данных, это база данных для объектов языка Python. Например, в такой базе данных удобно хранить большие объемы сгенерированных через statsmodels математических моделей, и вообще любых специфичные для языка объекты.
    Ответ написан
  • Как прочитать файл csv скриптом Python?

    @lPolar
    data scientist
    Если данные из .csv загружаются в табличном виде, советую попробовать pandas.
    Пример:
    import pandas as pd
    infile='some.csv'
    df=pd.read_csv(infile)
    print(df.head())
    Ответ написан
    Комментировать
  • Какие модули для python - а мне нужны?

    @lPolar
    data scientist
    Простой вариант решения - стандартный питоновый i/o+grab для форм и результатов.
    from grab import Grab
    g=Grab()
    infile=open('test.txt','r')
    inputs=[line for line in infile.readlines().split('\n')]
    for input in inputs:
        try:
            g.go('www.some.site.com')
            g.form_fields('form1',input)
        except:
            print('Ой, все')
        if g.response.code==200:
            body=g.response.body

    Пример навскидку, может не сработать, но общая идея - такая.
    Ответ написан
    3 комментария
  • Как заставить функцию range работать с float в python?

    @lPolar
    data scientist
    Как вариант - модуль numpy.
    import numpy as np
    x=np.arange(0.01,1.00,0.01)
    #x=array([ 0.01,  0.02,  0.03,  0.04,  0.05,  0.06,  0.07,  0.08,  0.09,...,1.00])
    Ответ написан
    Комментировать
  • Как парсить html страницы и его обрабатывать?

    @lPolar
    data scientist
    Самый легкий в этом плане для освоения именно для новичка - grab (https://pypi.python.org/pypi/grab/0.4.13 )
    Берешь firefox+firebug, смотришь исходный код страницы и ищещь нужный кусок. В firebug вытаскиваешь его xpath, потом можно сделать вот так (python 3):
    from grab import Grab
    g = Grab()
    sample_url = 'some_url'
    xpath_part= 'some_xpath'
    resp =  g.go(sample_url).body
    result = resp.xpath(some_xpath).text()
    print(result)
    Ответ написан
  • Python 2 или 3 версия?

    @lPolar
    data scientist
    Тут нужно точнее знать, что ты будешь делать на этом языке.
    Естественно, в долгосрочной перспективе python 3.x >python 2.x
    С другой стороны, некоторые узкоспециализированные модули могут внезапно оказаться не портированными на 3 версию (примеры:
    grab - https://pypi.python.org/pypi/grab/0.4.13,
    pycassa - https://pypi.python.org/pypi/pycassa/1.11.0 )
    В этом случае либо 2to3+ дебаг получившегося порта на 3 версию, либо свои велосипеды.
    А так, большая часть известных модулей имеют либо третью версию изначально, либо имеют рабочий порт.
    Ответ написан
    Комментировать