Ответы пользователя по тегу Python
  • Matplotlib как вывести дни и месяцы из даты в файле csv?

    @dmshar
    Я понимаю, что русский - не для всех родной, но и понять, что написано в вопросе - как то очень трудно.
    То-ли "вывести дни и месяцы из даты" то-ли "вывести дни из любого (одного?) месяца"?
    Что такое " выбрал май в графу scatter plot?"
    В общем - как понял:
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    df = pd.read_csv('visits-2.csv',delimiter=';',index_col='Date')
    df.index = pd.to_datetime(df.index)
    df=df[df.index.month==5]
    fig = plt.figure()
    plt.scatter(x = df.index.strftime("%d.%m.%Y"), y = df.Visits)


    Содержимое файла на входе (формат данных - "месяц.день.год":
    Date;Visits
    01.03.2021;26547
    02.03.2021;26493
    03.03.2021;24879
    04.03.2021;27017
    05.03.2021;26654
    05.04.2021;25496
    05.05.2021;26627
    05.06.2021;26179
    05.07.2021;26701
    06.03.2021;25611
    07.03.2021;26223

    Результат на выходе (формат даты -"день.месяц.год"):602d24156392f065032110.png
    Ответ написан
    Комментировать
  • Как увеличить длину в range во время итерации по нему?

    @dmshar
    Вот так вы не будете делать даже лишних проверок, т.е цикл закончится как только свои три единицы вы наберете:

    a=[]
    spisok = [1, 0, 1, 1, 0, 1, 0, 1, 1]
    сnt=0
    for el in spisok:
        if  сnt<3:
            if el == 1:
                a.append(el)
                сnt+=1
        else:
            break


    Результат:
    Out[73]: [1, 1, 1]
    Ответ написан
    Комментировать
  • Функция, которая находит самое короткое слово в тексте. Как исправить, чтобы заработала?

    @dmshar
    Если, как выяснилось из коментариев "нужно, чтобы возвращалось не само слово, а его длина", и "Как можно сделать это все без сплита и min?"
    то тогда вот так:
    def find_short(text):
        num_of_let=0
        min_numb = len(text)
        for elem in text:
            if elem == ' ':
                if num_of_let <  min_numb:
                    min_numb=num_of_let
                num_of_let=0
            else:
                num_of_let+=1
        return min_numb
    
    text = 'bitcoin take over the world maybe who knows'
    find_short(text)


    Результат:
    Out[20]: 3

    Как просили - не само слово, а его длина.
    Если вы все таки передумаете и захотите иметь и самое короткое слово и его длину, но без функций, то сделать это можно вот так:

    def find_short(text):
        num_of_let=0
        word=[]
        min_numb = len(text)
        for elem in text:
            if elem == ' ':            
                if num_of_let <  min_numb:
                    min_numb=num_of_let
                    min_word=''.join(word)
                num_of_let=0
                word=[]
            else:
                word=word+list(elem)
                num_of_let+=1
        return min_numb,min_word


    Только извращение все это. Нет, в целях "познания мира" конечно можно и потренироваться, для развития алгоритмического мышления например.
    Но на то и придуманы функции, что-бы учиться их использовать там, где это целесообразно.
    Ответ написан
    1 комментарий
  • Как сделать, чтобы функция начала работать с итераторами?

    @dmshar
    Ну, например, вот так:
    def all_unique(arg):
        if hasattr(arg, '__iter__'):
            arg=list(arg)
        if arg==[]:
            return True
        elif len(set(arg)) == len(list(arg)):
            return True
        return False


    Корректно (кажется :-) ) проходит тесты:
    all_unique([])
    all_unique("cat")
    all_unique([1, 2, 3])
    all_unique([1, 2, 1])
    all_unique([1])
    all_unique(iter([]))
    all_unique(iter([1]))
    all_unique(iter([1, 2, 3]))
    all_unique(iter([1, 2, 1]))
    Ответ написан
    Комментировать
  • Почему pandas не пропускает строку?

    @dmshar
    Если в первой строке у вас названия колонок, то это надо указывать явно. Для этого используйте параметр header. Неплохо бы еще и index_col указать.
    А для работы с пропущенными данными есть несколько параметров - keep_default_na, na_filter, na_values - соответствующей комбинацией которых можно добиться чего угодно.
    Ответ написан
    Комментировать
  • Как сделать корректную проверку на то, что символ не принадлежит строке?

    @dmshar
    Сама проверка тут ни при чем - она написана правильно.

    Но вот это:

    if text_lowercase[i] not in alphabet:
                continue


    - классический бесконечный цикл.
    Вы взяли первый элемент строки, проверили, он в "alphabet" не присутствует, вы переходите к следующей итерации НЕ ИЗМЕНИВ значения i. По сути - опять проверяете тот-же символ. И так до бесконечности.

    Просто перенесите i += 1 перед if .

    Правда, у вас еще и предел цикла в while задан с ошибкой, и вообще - программа странноватая. Но это уже другой вопрос.
    Ответ написан
    3 комментария
  • Как можно создать графическое окно, помимо tkinter в python?

    @dmshar
    "Как можно создать графическое окно, помимо способа tkinter" - то, что "tkinter" - это не "способ" - оставим в стороне. А окошки можно создавать и Qt, и Kyvi, и PySide, и WxPython, и PyGUI и целый ряд более редких и экзотических библиотек графичческого интерфейса. Выбирайте те, которые лично вам больше нравятся и кажутся более понятными..
    "создать кнопку в виде маленькой картинки. такое возможно" - да, возможно.
    Ответ написан
    Комментировать
  • Есть ли готовое решение для отображения информации о датасете в удобном для чтения виде?

    @dmshar
    Не совсем понятно, что вы хотите.
    " для отображения информации" что-бы "вообще код не писать" - экспортируйте свой датасет в csv-файл и работайте хоть EXCEL, хоть Tableau (для визуализации), хоть в SPSS.
    Если у вас данные - это временные ряды, то можете попробовать Grafana.
    Описательные статистики выводятся в pandas (ага :-) ) одной командой data.describe().
    Только вот я бы не сказал, что построить ту-же гистограмму проще в EXCEL или в Grafana чем в Python. Даже в Tableau что-бы получить то, что вам надо - надо хорошо разобраться в инструменте.
    Ответ написан
    3 комментария
  • Как отобразить за сколько запустился код Python?

    @dmshar
    Код может либо "запуститься" В какое-то время, либо "выполниться" ЗА какое-то время. По крайней мере - это если пользоваться общепринятыми нормами русского языка. Что такое "за сколько запустился" - абсолютно бессвязная фраза. Что такое "код стартанулся ибо там есть база данных" - тоже как-то очень загадочно звучит. Как и фраза "запускается база данных". Куда? На Луну? Может быть все-таки запускается ПОИСК в базе данных?
    Если у вас есть код, в котором есть обращение к базе данных, то вы перед командой обращения получаете одно значения текущего времени, после того, как поиск в базе отработает - второе, и вычтя первое из второе получаете время, которое ушло на работу с базой. Что еще вы собираетесь мерять?
    И кстати, это не зависит от того, у вас 7 строчек кода или 7 тысяч.
    Ответ написан
    Комментировать
  • Как запустить программу?

    @dmshar
    А чем отличается запуск этой программы от запуска любой другой? - Ничем. Значит ответ на ваш вопрос - "Так-же как и любую другую". Если вы и этого на знаете - то вам не на форум, а книжки читать.
    Ответ написан
    1 комментарий
  • Взял готовый код бота из интернета пытаюсь запустить выходит ошибка что делать?

    @dmshar
    Слава богу, что вы "готовый код бота вязали", а не папину машину из гаража. ВЫ представляете себе, что-бы было, если бы вы сели в машину и попытались поехать не умея ни водить и не зная правил движения. Почему никому не приходит в голову, что "готовый код бота", это не веник, которым можно махать как придется. И не детская игрушка, которая создана для особей с еще ограниченным интеллектом. И что использованию сложных вещей надо учиться.
    Вот и займитесь учебой - программирование, Python и пр. А уж потом "берите готовый код".
    Ответ написан
    Комментировать
  • Какой способ чтения и записи в файл, а также сам тип файлов, наилучший в плане быстродействия при использовании Python для обработки больших данных?

    @dmshar
    Есть такое понятие "бинарный файл". Грубо говоря - в некоторый момент времени делается "снимок" оперативной памяти, и все что там (точнее говоря, в тех объектах, которые вы решили записать в файл) есть переписывается во внешнюю память. Потом точно так можно вернуть назад. Разумеется, это работает, если вы точно понимаете, из какой структуры вы выгружаете данные в файл и абсолютно уверены, что назад вы их будете принимать в абсолютно такую-же структуру. Никаких преобразований, разбивок по строкам/записям, проверок типов - ничего. Искать что-то в этих данных вы будете не тогда, когда они находятся на внешнем носителе, а тогда, когда они уже в ОП. И еще - разумеется, это будет стандартный файл с точки зрения Windows (или другой ОС), вы его будете видеть в проводнике, но если попробуете открыть - например - текстовым редактором, то увидите нечитаемое множество каких-то значков. Все это - расплата за скорость обработки, которая достигается при чтении-записи этих файлов.
    По сути, именно так работают, например, все стандартные приложения, которыми пользуемся, EXCEL, Word и пр.
    Ответ написан
    Комментировать
  • Python сортировка списка?

    @dmshar
    Количество перестановок зависит от метода сортировки, который вы будете использовать. А их есть много. Если допускается переставлять только соседей - то это метод пузырька. А он бывает еще оптимизированный или нет. Все это влияет на количество перестановок. А могут быть перестановки произвольных элементов - там другие алгоритмы работают.
    Примеров реализаций на Python (и на других языках, кстати тоже )- в сети предостаточно.
    Ответ написан
    1 комментарий
  • Есть ли альтернативы JupyterLab?

    @dmshar
    Чем не нравиться Jupyter - могу понять.
    Не понимаю, почему на "зашли" PyCharm и VSCode .
    Но IDE для Python навалом.
    Лично я уже давно использую Spyder и меня вполне устраивает.
    А есть еще Thonny, а есть еще Wing, а есть еще Cloud9 IDE, PyDev, Atom.
    Пробуйте, если не лень.
    Ответ написан
    1 комментарий
  • Как среди строк найти те, что содержат указанную подстроку?

    @dmshar
    Так а в чем ошибка? У меня никакой ошибки не выдает. Ну кроме того, что идентификаторы с1 и с2 в одном месте написаны на кириллической раскладке клавиатуры, а в другом - на латинской.
    Ответ написан
    4 комментария
  • Как список преобразовать в DataFrame?

    @dmshar
    Cоздание датафрейм из списков:
    import pandas as pd
    list_a = [[1,2,3,4,5],
              [6,7,8,9,10]]
    columns = ['a','b','c','d','e']
    df_a = pd.DataFrame(list_a, columns=columns)
    print (df_a)


    Результат


    . a b c d e
    0 1 2 3 4 5
    1 6 7 8 9 10
    Ответ написан
    Комментировать
  • Как вырезать часть строки?

    @dmshar
    Можно, конечно и срезами и регулярными выражениями и вообще перебирать циклом посимвольно. Но как мне кажется- всегда надо искать простейший путь решения - в данном случае в один вызов функции:
    inpt='background-image: url("/upload/resize_cache/iblock/377/825_475_2/koe.jpeg");'
    outpt=inpt.split('"')[1]
    outpt

    Результат:
    '/upload/resize_cache/iblock/377/825_475_2/koe.jpeg'
    Ответ написан
    Комментировать
  • Как получить индекс элемента numpy в python?

    @dmshar
    Раз уж вы задействовали numpy, то вот так:

    t1=np.random.randint(-1000, 1000,size=n1*n2*n3).reshape(n1,n2,n3)
    x,y,z = np.unravel_index(t1.argmax(), t1.shape)
    t1[x,y,z]
    Ответ написан
  • Как в DataFrame задать нужное имя вычисляемой колонки count()?

    @dmshar
    По-моему, все должно быть предельно просто:
    df.groupby('client_id')[['client_id']].count().rename(columns= 
    {'client_id':'Ид_Клиента'})
    Ответ написан
    Комментировать
  • Пожалуйста исправьте ошибку: local variable 'bot_on' referenced before assignment?

    @dmshar
    Так написано, черным по белому - "local variable 'bot_on' referenced before assignment".
    Вы английский, надеюсь, знаете?
    Предполагаю, что ошибка выскакивает при попытке выполнения ф-ции response.
    Она мало того, что написана скорее всего с ошибкой, так еще выложена на сайт в полном неуважении к тем, кто захочет вам помочь. О том, что код надо оборачивать в соответствующие теги, вы прежде чем что-то писать на сайт в его правилах, надеюсь, прочитали?
    Ну и наконец, третье "надеюсь" - надеюсь, что такое локальные и глобальные переменные в Python - вы тоже знаете?
    Ответ написан
    Комментировать