- 1
df[df['reason']=='in-in error sequence']['spider'].value_counts().to_csv('spiders_out-out-seq.csv')
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−116
df[df['reason']=='in-in error sequence']['spider'].value_counts().to_csv('spiders_out-out-seq.csv')
Страшно?
kyzi007 30.03.2015 12:24 # 0
Vindicar 30.03.2015 12:31 # 0
guest 30.03.2015 12:55 # 0
Что за формат такой?
orion 30.03.2015 17:52 # 0
Vindicar 30.03.2015 18:52 # 0
Похожий подход используется в numpy, там можно написать что-то вроде
a[a < 0] = 0
чтобы обнулить все отрицательные элементы.
guest 30.03.2015 19:03 # 0
roman-kashitsyn 30.03.2015 19:09 # 0
guest 30.03.2015 19:52 # 0
a.__lt__(0) возвращает объект, хранящий условие, которой потом передается как индекс?
roman-kashitsyn 30.03.2015 20:41 # 0
guest 30.03.2015 21:50 # 0
wvxvw 30.03.2015 22:21 # 0
guest 30.03.2015 23:25 # −4
wvxvw 30.03.2015 23:44 # 0
guest 31.03.2015 11:03 # 0
wvxvw 31.03.2015 15:17 # +1
Почему мнение нубов должно кого-то волновать?
Почему, например, вклад в развитие языка и инфраструктуры не является параметром для вычисления востребованости?
guest 31.03.2015 17:43 # −1
>Почему мнение нубов должно кого-то волновать?
Пардон, но хелловердщики / быдлокодеры на numpy и есть нубы по сравенению с веб-девелами, которые используют гораздо большую часть языка, а не пишут си на питоне. Или есть пруфы на противное?
Abbath 31.03.2015 02:17 # 0
kegdan 31.03.2015 11:07 # 0
roman-kashitsyn 31.03.2015 10:36 # 0
Ну и мне интересно, насколько часто люди пишут 0 < X вместо X > 0.
Это, безусловно, недостаток. В основном убогой ООП-говноконцепции "только объекты, только вызовы методов" и питушиной динамизации.
В крестах, например, можно без проблем написать перегрузку оператора для полной симметрии.
MyExpression operator<(int value, MyField field);
MyExpression operator>(MyField field, int value);
bormand 31.03.2015 10:45 # 0
guest 31.03.2015 11:02 # 0
roman-kashitsyn 31.03.2015 11:46 # 0
думаю, перегрузка - не совсем правильное слово в контексте пистона.
guest 31.03.2015 12:08 # 0
roman-kashitsyn 31.03.2015 12:13 # 0
как перегрузка связана с ООП?
guest 31.03.2015 12:18 # 0
roman-kashitsyn 31.03.2015 12:20 # +1
guest 31.03.2015 13:15 # −1
roman-kashitsyn 31.03.2015 13:56 # 0
guest 31.03.2015 14:01 # −1
Xom94ok 30.03.2015 22:34 # 0
Это такая штука, из-за которой появилось boost::lambda? Ну и забористое же курево было у разрабов, тоже хочу.
> Кругом и рядом такое используется для построения DSL.
Ото всей души надеюсь, что никогда такого не встречу :)
roman-kashitsyn 31.03.2015 10:38 # 0
Vindicar 30.03.2015 23:14 # 0
Любой массив можно проиндексировать булевым массивом такой же размерности, получив view (одномерный массив) элементов для которых индекс истинен. Если над этим view производить операции, будет затронут исходный массив.
guest 30.03.2015 23:27 # 0
Массив - это list или хрень из numpy? В питоне можно как-то так:
lst[1,3..5,9]
Vindicar 31.03.2015 15:34 # 0
guest 30.03.2015 19:55 # 0
Vindicar 31.03.2015 15:33 # 0
>>> a = numpy.array([1,2,3,4])
>>> a<3
array([ True, True, False, False], dtype=bool)
>>> 3>a
array([ True, True, False, False], dtype=bool)
guest 31.03.2015 17:44 # 0
Vindicar 31.03.2015 22:21 # 0
А вот сравнение считается симметричным, так что если 3.__gt__(a) возвращает NotImplemented, то интерпретатор пробует зайти с другого фланга и вызывает a.__lt__(3), что уже срабатывает нормально.
Во всяком случае, я так понял доки.
guest 31.03.2015 22:33 # 0
Vindicar 31.03.2015 22:38 # 0
guest 31.03.2015 22:39 # 0
Vindicar 31.03.2015 22:48 # 0
<method-wrapper '__gt__' of type object at 0x1E1DB538>
Тут я и сам не очень понял, но вблизи корня дерева объектов всегда творится какая-то чертовщина. В какой-то момент им же надо перейти к нативному коду.
guest 01.04.2015 15:43 # 0
AttributeError: 'int' object has no attribute '__gt__'
Да, различия между сишным апи и питоновским заябывают.
guest 31.03.2015 22:48 # 0
Vindicar 31.03.2015 23:01 # 0
Type "help", "copyright", "credits" or "license" for more information.
>>> issubclass(int, object)
True
>>> isinstance(3, object)
True
guest 31.03.2015 23:03 # 0
In [29]: class A: pass
In [30]: isinstance(A(), object)
Out[30]: True
Стоп, а нахуя тогда явно наследоваться от объекта?
Vindicar 31.03.2015 23:05 # 0
guest 31.03.2015 23:14 # 0
Vindicar 31.03.2015 23:17 # 0
Up to Python 2.1, old-style classes were the only flavour available to the user. The concept of (old-style) class is unrelated to the concept of type: if x is an instance of an old-style class, then x.__class__ designates the class of x, but type(x) is always <type 'instance'>. This reflects the fact that all old-style instances, independently of their class, are implemented with a single built-in type, called instance.
New-style classes were introduced in Python 2.2 to unify classes and types. A new-style class is neither more nor less than a user-defined type. If x is an instance of a new-style class, then type(x) is typically the same as x.__class__ (although this is not guaranteed - a new-style class instance is permitted to override the value returned for x.__class__).
Ряд фишек типа property доступен только новым классам.
guest 31.03.2015 23:19 # 0
Vindicar 31.03.2015 23:23 # 0
guest 31.03.2015 23:31 # 0
Vasiliy 30.03.2015 22:38 # +1
У меня в проекте вот такое есть
if (isset($suppliers_makes_data[$list_office_logo[$j]][$list_supplier_logo[$j]][$list_direction[$j]][$make_logo]['max_price']) && $suppliers_makes_data[$list_office_logo[$j]][$list_supplier_logo[$j]][$list_direction[$j]][$make_logo]['max_price']>0)
и ничего жив здоров. Переписываю потихоньку
guest 31.03.2015 04:19 # 0
df - от DataFrame.
А фишка с индексацией называется "fancy indexing"
kyzi007 31.03.2015 17:37 # 0
Собственно я недоосилила мерж датафреймов и сделала наполовину руками.
guest 31.03.2015 17:47 # 0
kyzi007 31.03.2015 18:21 # 0
И да, пандас далеко не везде удобность потому что оно должно работать быстро.
guest 31.03.2015 18:24 # 0
kyzi007 31.03.2015 19:43 # 0
guest 31.03.2015 19:47 # 0
kyzi007 31.03.2015 19:48 # 0
guest 31.03.2015 19:57 # 0
guest 31.03.2015 18:25 # 0
Э-э. Это заглушка?
kyzi007 31.03.2015 19:42 # 0
guest 31.03.2015 19:48 # +1
Бля, ну это же на отдельный гк тянет :) или report.values(), или list()
Давно на питоне?
kyzi007 31.03.2015 19:51 # 0
kyzi007 31.03.2015 19:59 # 0
guest 31.03.2015 22:48 # 0
kyzi007 01.04.2015 08:26 # 0
guest 01.04.2015 13:46 # 0
kyzi007 01.04.2015 14:04 # 0
wvxvw 01.04.2015 15:09 # +1
Я так предполагаю, что все эти map(lambda ...) можно было короче и компактнее переписать циклами.
Т.е. map(lambda x: x[0], x[1], something.to_dict().items()) явно же лучше было записать:
[for key, value in something.to_dict().items()], а может и to_dict() не нужно было...
guest 01.04.2015 15:15 # 0
В одну строчку тип. Если серьезно, что плохого в таком коде? Говорят, что удаление ссылок не гарантирует удаление объекта гц, но обычно почему-то он удаляется, это явно не мегапроект, где это было бы важно.
>переписать циклами
Списковыми выражениями?
guest 01.04.2015 15:38 # 0
guest 01.04.2015 15:13 # 0
continue
Тот самый код?
guest 01.04.2015 15:34 # 0
kyzi007 01.04.2015 16:00 # 0
guest 01.04.2015 16:15 # 0
kyzi007 01.04.2015 16:34 # 0
guest 01.04.2015 16:36 # 0
kyzi007 01.04.2015 17:43 # 0
kyzi007 01.04.2015 17:49 # 0
guest 01.04.2015 15:36 # 0
Вот тут мне аж похорошело :) Обход циклом словаря
kyzi007 01.04.2015 16:01 # 0
roman-kashitsyn 01.04.2015 16:02 # 0
guest 01.04.2015 16:11 # 0
r же у нас dict?
roman-kashitsyn 01.04.2015 16:12 # 0
guest 01.04.2015 16:13 # 0
roman-kashitsyn 01.04.2015 16:15 # 0
Не думал, что нужно тебе это объяснять, но этот код Преобразует в int значения для всех ключей, кроме ключа 'spider'. Как твой код решает эту же задачу, я не понял.
guest 01.04.2015 16:24 # 0
kegdan 01.04.2015 16:33 # +1
guest 01.04.2015 16:34 # +1
kegdan 01.04.2015 16:17 # 0
А во втором - проверяется есть ли такой ключ.
Мне кажется или это немного не то?
wvxvw 01.04.2015 17:21 # 0
guest 01.04.2015 17:54 # 0
wvxvw 01.04.2015 18:12 # 0
Ну и еще вот это можно было короче записать.
kyzi007 01.04.2015 18:39 # 0
Я расскажу что происходит
Берется баальшой пак данных состоящий из записей типа id | spider | error type | url | time, смотрятся какие есть ошибки, смотрятся какие есть спайдеры.
Берется каждая ошибка, по ней смотрится количество ошибок для каждого спайдера. Потом это количество приводится к тому инту которое жрет json + спайдеры по которым в данной категории нету ошибок ставится ключ и значение 0.
То есть получается таблица типа
спайдер | количество ошибок а | количество ошибок б
От этого и все пляски.
Я позже буду строить другие фасеты по конкретным потокам данных которые светятся чаще всего и по времени когда это происходит)
wvxvw 01.04.2015 19:35 # 0