Задать вопрос
  • Почему переменная изменяет значение?

    Maksim_64
    @Maksim_64
    Data Analyst
    Когда вы выбираете подсет фрейма и ИЗМЕНЯЕТЕ этот подсет то может меняться и сам фрейм из которого этот подсет был выбран. Это известная особенность pandas, причина которых лежит в numpy. Как поправить, для этого используют копию и уже от этой копии и берется подсет. В вашем коде comtraders2 = df_segment вот это строчку нужно заменить на comtraders2 = df_segment.copy() И тогда будет работать, как вы ожидаете.

    помните подобные операции, могут приводить к изменению оригинального фрейма.
    df = pd.DataFrame({
        'A':[1,2,3],
        'B':[4,5,6]
    })
    
    subset = df['A'] 
    subset[0] = 100
    print(df)

    И вы увидите ваш оригинальный df изменился. Существует несколько кейсов, при определенных он выдаст предупреждение, при таком как я привел выше и вовсе все произойдет молча.
    поправить также, использовать копию.
    df = pd.DataFrame({
        'A':[1,2,3],
        'B':[4,5,6]
    })
    
    subset = df['A'].copy() 
    subset[0] = 100
    print(df)

    Ну и немножко, не в тематику вашего вопроса, я не знаю какую задачу вы пытаетесь решить, но pandas код так не пишут (колонки со списками внутри это очень плохо), задача должна решаться по другому.
    Ответ написан
  • Как правильно сгенерировать дату в Pandas?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотри, первое ты говоришь количество строк 90, при этом формируешь временную последовательность, на 90 дней при этом у тебя есть желание иметь данные с повторяющемеся днями по количеству артистов их их песен, в примере ты приводишь 3 артиста по 3 песни на каждые то есть 9 ЗАПИСЕЙ на каждый день или 90 * 9 = 810 СТРОК.

    Второе ты показываешь желаемый результат для одно дня только надо так делать для временной последовательности. И в нем собственно ты и подтверждаешь, мою мысль выше. Что строчек, будет больше чем 90.

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

    import pandas as pd
    import numpy as np
    
    songs = {
        'ANNA ASTI': ['Девочка танцуй','Грустный дэнс','Гармония'],
        'Три дня дождя': ['Демоны','Где ты','Перезаряжай'],
        'MACAN': ['Кино','Пополам','Бенз'],
    }
    
    NUMBER_OF_DAYS = 3
    LENGTH_OF_FINAL_FRAME = sum(len(value) for value in (songs.values())) * NUMBER_OF_DAYS
    
    dates = pd.date_range('2023-01-01', periods=NUMBER_OF_DAYS, freq='1D')
    
    artists = []
    for key, value in songs.items():
        artists += [key] * len(value)
    
    dates_and_artists = []
    for date in dates:
        for artist in artists:
            dates_and_artists.append((date,artist))
    
    songs_arr = np.array(list(songs.values()) * NUMBER_OF_DAYS).reshape(-1,1)
    
    
    
    
    data = np.concatenate([np.array(dates_and_artists), 
                           songs_arr, 
                           np.random.randint(3000,1_000_000,LENGTH_OF_FINAL_FRAME).reshape(-1,1)], axis=1)
    
    df = pd.DataFrame(data=data, columns=['Date','Artist','Track','Start'])
    df


    Ну в целом там все понятно, сначала собираем артистов, по количеству песен, затем добавляем дату к каждой такой записи, затем все это дело в массив, плюс выбираем случайно, количество прослушиваний (обрати внимание это для каждой песни выбирается, а не для каждого дня), если надо подправь, я ориентиероваля на твой фрейм который представил как результат.

    Код для любого количества артистов и песен у них ну и количество дней тоже сколько надо задашь. NUMBER_OF_DAYS. Поменяй да и все.

    ДОПОЛНЕНИЕ К ОТВЕТУ
    Как и обещал, подработал я свое решение, так как оно должно быть, меньше кода, быстрее и больше функциональности.

    from itertools import chain
    import pandas as pd
    import numpy as np
    
    
    songs = {
        'ANNA ASTI': ['Девочка танцуй','Грустный дэнс','Гармония'],
        'Три дня дождя': ['Демоны','Где ты','Перезаряжай'],
        'MACAN': ['Кино','Пополам','Бенз'],
    }
    
    NUMBER_OF_DAYS = 3
    NUMBER_OF_SONGS_PER_DAY = sum(len(value) for value in (songs.values()))
    STARTING_DATE = '2023-01-01'
    
    dates = pd.date_range(STARTING_DATE, periods=NUMBER_OF_DAYS, freq='1D')
    artists = list(chain(*[[key] * len(value) for key, value in songs.items()]))
    songs_per_day = list(chain(*songs.values()))
    
    index = pd.MultiIndex.from_product([dates,artists],names=['Date','Artist'])
    
    df = pd.DataFrame({
        'Songs':songs_per_day * NUMBER_OF_DAYS,
        'Start':np.random.randint(3000,1000000,NUMBER_OF_DAYS * NUMBER_OF_SONGS_PER_DAY),
        
    }, index=index).reset_index()
    
    df


    Вот это хороший читабельный pandas код, теперь я спокоен, а то вопрос то решил, но просто в лоб, а не так как следует.

    кстати обрати внимание, если запустишь код без reset_index(), у тебя будет многоуровневый индекс, посмотри как обращаться к любому из уровней индекса в документации. Ну и посмотри все созданные мною списки, что бы посмотреть идею, как я декомпозировал задачу. Потому что задачу ты задал хорошую, по сути дела словарь это неполная запись за день, из которой нужно формировать данные.
    Ответ написан
    2 комментария
  • Как преобразовать массив чисел который возвращается функцией model.predict в нормальный вид?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну надо конечно догадываться что вы имеете ввиду под нормальным видом, данные в массиве представлены в научном виде. Например 1e-02 = 1*10^(-2) = 1/100. Соответственно, например 1.3135763e-05 = 1.3135763 * 10^(-5).

    Можно принудить конечно numpy отображать маленькие числа в "обычном виде" например
    np.set_printoptions(suppress=True)
    особо маленькие числа он будет показывать, как ноль, что бы преодолеть и это у вас -10 самая большая степень, можно добавить форматтер.
    np.set_printoptions(suppress=True, formatter={'float_kind':'{:0.10f}'.format})

    в обоих случаях при печати numpy массива он будет в том что вы называете "нормальным видом".
    Ответ написан
    Комментировать
  • Какой MacBook выбрать для Data Science/Machine Learning/AI?

    Maksim_64
    @Maksim_64
    Data Analyst
    Если речь идет об обучении, так сказать основы первое знакомство, то ты не будешь работать с объемами данных, требующих больших ресурсов. Все обучающие модели, будь то классические алгоритмы или нейронные сети, запускаются на обычных ноутбуках.

    Когда же речь идет о чем то требующем ресурсов (на обучающем этапе), то есть kaggle или colab. Кончено, kaggle получше будет. Тренировка модели будет производится удаленно. Предоставляемых бесплатно ресурсов хватит с головой.

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

    Maksim_64
    @Maksim_64
    Data Analyst
    у тебя у r status_code 403. Добавь хоть какой нибудь header.
    headers = {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0'
    }
    r = requests.get(url,headers=headers)

    Вот так сервер пришлет html.
    Имей также ввиду что парсить интерактивно (в рамках одного соединения) с bs не получится, придется переподключаться часто ну и схватишь блок или ерунду начнет присылать в ответ. Если ты перейдешь на страницу, зайдешь в инспектор, нажмешь на значек настройка в панели инспектора, затем поставишь галочку Disable JavaScript и обновишь страницу, вся инфа на странице перестанет обновляться. По скольку обновление происходит средствами JavaScript a bs не работает с JavaScript.
    Ответ написан
    3 комментария
  • Как нужно собирать датасет для модели бинарной классификации?

    Maksim_64
    @Maksim_64
    Data Analyst
    Бинарная классификация, подразумевает два варианта пост на IT тематику (True) или (False). Соответственно, только первый вариант, если учебный дата сет не будет содержать разных постов, то обучаться будет не на чем.

    Насчет пропорций, здесь интереснее. И так в реальности мы имеем куда более вероятное событие пост не IT чем IT. Но при создании модели нам нужно что бы наши пропорции были примерно равны или около того. Иначе мы будем иметь то что называется bias. У нас например в тренировочном сете значительно больше постов которые не IT и соответственно, мы уже имеем ПРЕДРАСПОЛОЖЕННОСТЬ. Что плохо. По этому изначально, для классификатора, не должно быть такого понятия, как НЕ IT пост более вероятен.

    Это общее правило с которого могут быть ответвления, например, когда есть датасет в котором одного класса сильно больше делают еще одну выборку с весами (resampling), то есть выбирают не с равными вероятностями. И потом получают близкое к равное распределение.

    В каких то случаях (редко) допускается и отклонения от этого правила, на уровне инженерных причин. Но стартовые позиции, как я описал выше.
    Ответ написан
    Комментировать
  • Как отсортировать os.listdir по возрастанию?

    Maksim_64
    @Maksim_64
    Data Analyst
    sorted(mylist, key=lambda x: int(x.split('.')[0]))
    Ответ написан
    Комментировать
  • Изменили выходные параметры в fitted.forecast в Python - как его теперь использовать в моем случае?

    Maksim_64
    @Maksim_64
    Data Analyst
    В общем ради интереса, получил модель как на графике в статье. Из тех данных что у вас есть.
    1. Модель имеет тренировочный сет 130 плюс предполагает предсказание на 39 дней то есть конечное количество это 169. В коде же об этом не слова и он берет его до конца временной последовательности
    2. Задана неправильная вариация параметра order. Что бы его задавать правильно требуется понимание.
    3. По мелочи поправили остальное.
    4. Самое главное, практическая ценность данной модели близка к нулю. Он предсказывает средние значения и как мы видим он "зацепил" ТРЕНД, кстати его параметром конечно же автор статьи тоже не указал, но я поправил.

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

    df = pd.read_csv("https://hands-on.cloud/wp-content/uploads/2022/02/catfish_sales_1986_2001.csv")
    train = df.Total[:130]
    test = df.Total[130:170]
    
    model = ARIMA(train, order=(1, 0, 0),trend='ct').fit()
       
    
    fc = model.get_forecast(39, alpha=0.05) 
    
    fc_series = pd.Series(fc.predicted_mean, index=test.index)
    lower_series = pd.Series(fc.conf_int().iloc[:, 0], index=test.index)
    upper_series = pd.Series(fc.conf_int().iloc[:, 1], index=test.index)
    
    plt.figure(figsize=(12,5), dpi=100)
    plt.plot(train, label='training')
    plt.plot(test, label='actual')
    plt.plot(fc_series, label='forecast')
    plt.fill_between(lower_series.index, lower_series, upper_series, color='k', alpha=.15)
    plt.title('Forecast vs Actuals')
    plt.legend(loc='upper left', fontsize=8)
    plt.show()
    Ответ написан
    Комментировать
  • Почему много кликов по рекламе, но мало установок?

    Maksim_64
    @Maksim_64
    Data Analyst
    1. Надо посмотреть на распределение кликов по дням в теории просмотры, лайки, клики и тому подобное обычно следуют экспонентным распределениям (экспонентное понижение в данном случае). То есть каждый день (единицу времени , так точнее) вы получаете меньше (новых кликов, лайков и т.п ) чем в предыдущий. Нет ли аномалий в этом направлении.

    2. Надо глянуть корреляцию по дням между кликами и установками. То есть ли некая зависимость между количеством кликов в день и количеством установок.

    3. Нормальное ли это число, это бизнес вопрос смотря, какая монетизация, затраты и т.д. Вам виднее никто лучше вас вашего бизнеса не знает.

    4. Собирайте, как можно больше статистики и храните ее 14 дней и одна рекламная компания мобильного приложения совершенно не достаточно, для серьезных статистических выводов, и как следствие решений о том что мало и что много, что хорошо, а что нет, и как все это улучшить.
    Ответ написан
    Комментировать
  • Пожалуйста порекомендуйте с выбором проекта Data science?

    Maksim_64
    @Maksim_64
    Data Analyst
    Почитав, ваш ответ на мой комментарий, вот какие советы вам дать. То что вы ищете по уровню называется EDA (Explanatory Data Analysis). Это начальный поверхностный анализ, так сказать, глянуть что из себя представляет датасет, и в какую сторону двигаться дальше. Вы используете в нем pandas и matplotlib/seaborn. Если вы не проходили seaborn то ничего страшного, он сделан на matplolib и в целом используется совместно (упрощено говоря matplotlib c улучшенными графиками)

    Kaggle это хорошо, там все и возьмете. Например вот https://www.kaggle.com/code/imoore/intro-to-explor... на kaggle то не только датасеты есть но и notebook'и c кодом, что сообственно я и привел вам ссылке.

    Как искать на главной странице сайта есть поиск пишете в нем EDA затем в окошке слева отмечаете галачкой ipynb. И получаете список нотебуков, которые содержат EDA. Большинство нотебуков будут содержать манипуляции с pandas и визуализации matplolib/seaborn и объяснения что все значит. Читайте разбирайтесь, что не понятно и совсем не можете справится спрашивайте.

    Это так сказать гайд для вашего случая (когда плохо понимаете с чего вообще начать). Приготовьтесь серьезно потрудится, просто если на курсах не поняли толком ничего не будет.
    Ответ написан
    2 комментария
  • С помощью какой библиотеки(python) можно конвертировать xml в pdf?

    Maksim_64
    @Maksim_64
    Data Analyst
    Я бы не использовал одну библиотеку здесь. Процесс, вряд ли будет протекать без проблемно.
    Я бы конвертировал xml в pandas фрейм, методом pd.read_xml() глянул бы на него, может чего подкорректировал, из фрейма уже конвертировал (по этапно) в pdf. Вот в этой статье https://www.alixaprodev.com/how-to-convert-pandas-... есть рабочий код три способа (один с использованием matplotlib), второй способ он использует конвертацию фрейма в html таблицу и оттуда уже в pdf, и третий там библиотеку он использует.

    Так вот я бы использовал способом pandas + matplotlib он даст мне больше всего контроля и свободы, как и в каком виде все это запишется в pdf, то есть я смогу кастомизировать + справится с потенциальными ошибками при записи. Рабочий пример (там фрейм создаетс, а не читается из xml это сделаешь сам pd.read_xml()) есть в статье по ссылке от которого уже можно оттолкнуться.
    Ответ написан
    1 комментарий
  • Почему меняется словарь?

    Maksim_64
    @Maksim_64
    Data Analyst
    потому что словарь это мутабельный тип данных. А ваш словарь имеет вложенную структуру, состоящую из мутабельных типов данных. Метод copy который вы используете он касается только копии внешнего словаря, но НЕ затрагивает вложенные мутабельные типы. Как результат data и temp это два разных объекта, а вот их вложенные структуры НЕТ. Что бы создавать копии c учетом вложенных структур нужно использовать deepcopy из модуля copy.
    import copy
    temp = copy.deepcopy(data)


    Ну это что ваш код заработал, как вы ожидаете, а так надо разбираться, то что вы делаете выглядит очень сомнительно.
    Ответ написан
    2 комментария
  • Как узнать планируемый график запуска соревнований на kaggle.com?

    Maksim_64
    @Maksim_64
    Data Analyst
    Такого графика нет. Были дискуссии на эту тему, администрация опасается, отмены соревнования, с их слов бывает что у них все готово к старту и что то срывается, ну и соответственно они опасаются за свою репутацию.

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

    А так ты можешь себе уведомление поставить о новом соревновании. Но графика планируемых соревнований нет.
    Ответ написан
    Комментировать
  • Почему не работает условие?

    Maksim_64
    @Maksim_64
    Data Analyst
    Программа, как я понял должна проверять закрыты ли все скобки в строке. Почему методы класса ты пытаешься вызываешь без скобок например tack.get_elem, где скобки потерял? оператор () где потерял? и так у тебя в трех местах включая if stack.get_stack == []:
    Ответ написан
    Комментировать
  • Почему условие выполняется не корректно?

    Maksim_64
    @Maksim_64
    Data Analyst
    while True:
        password = input('Придумайте пароль: ')
        crit1 = len(password) >= 8
        crit2 = sum(s.isnumeric() for s in password) >=3
        crit3 = sum(s.isupper() for s in password) >=1
    
        if not (crit1 & crit2 & crit3):
            print('Вы ввели не надежный пароль')
        else:
            print('Пароль надежный')
            break
    Ответ написан
  • Как интерпретировать результат теста Шапиро-Уилка и Колмагорова - Смирнова?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну все ли вы делаете правильно это совершенно неизвестно, (Это большой вопрос как сделана выборка, что за данные и т.д. вообщем соблюдены ли все условия) и так сходу не ответишь Это надо сидеть и разбираться (иметь ваши данные и время (сразу скажу делать я этого не буду)). А вот на остальное ответить вполне себе можно.

    1. График о чем говорит? Нормальное распределение подразумевает, крайне маленькие вероятности у "хвостов" распределения, то есть если вы отклонились более 2 стандартных отклонений то там 5 процентов всего по 2.5 с каждого края, на вашем же графике далекие от среднего значения НЕ являются маловероятными событиями. В статистике это называется fat tails. То есть это не НОРМАЛЬНОЕ распределение не будет такого что 95 процентов лежат в пределах двух стандартных отклонений, это значение будет меньше (Экстремальные величины не являются маловероятными).

    2. По поводу теста тут все просто. Что такое p-value? Это вероятность тестовой статистики при условии НУЛЕВАЯ Гипотеза ИСТИННА. Поговорим о логике эксперемента. Допустим мы говорим средний рост прохожего (мужского) пола 175см. Это ПАРАМЕТР популяции который мы хотим затестить посредством СЛУЧАЙНОЙ выборки. Мы выходим на улицу берем 500 (например дизайн эксперемента я опускаю) мужчин измеряем их рост и берем среднее значение это ТЕСТОВАЯ статистика, далее мы нормализуем (трансформируем наши ТЕСТОВУЮ статистику после чего она измерятся не в см а в стандартных отклонениях) ну и находим вероятность ТЕСТОВОЙ статистике из такого распределения где ПАРАМЕТР истинен. Если это вероятность ниже установленного заранее порога, мы отвергаем нулевую гипотезу. Потому что мы говорим это очень маловероятно видеть такую ТЕСТОВУЮ статистику при условии нулевой гипотезы истинной. Это общая направление ИДЕЯ. Частные имплементации могут отличаться в зависимости сколько данных у нас есть что мы знаем о распределении популяции и .т.д. Это была общая логика.

    У теста Колмагорова-Смирнова есть своя формула для ТЕСТОВОЙ Статистики которая показывает своего рода "дистанцию" между распределением выборки и в данном случае нормальным распределением (Упрощенно читайте подробнее) и вычисляет ее вероятность. В вашем случае он вам показал что вероятность равна нулю. (То есть уверенно отвергаем нулевую гипотезу).

    Это что можно понять из предоставленной вами информации, повторюсь ответить правильно ли вы все сделали возможности нет.
    Ответ написан
    Комментировать
  • Как удалить похожие строки из таблицы в Pandas, Python?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну смотрите первое мы имеем str акссесор который позволяет нам осуществить для каждой ячейки как будто она строка в python. Там огромное количество методов и можно даже сложный regex написать если нужно, и на основании его оставить только нужные строки. Второе у pandas есть метод drop_duplicates(), он удаляет все не уникальные строки для одной колонки или даже для комбинации. По желанию можно задать ему параметры и оставить только первое пявление из неуникальных значений или последнее.

    Способов для решение вашей задачи на самом деле много. Ну вот парочку на основании той информации что
    вами представлена. То есть для представленного вами примера они сработают. Если же это не сработает для всех строк я то не знаю их всех и ориентируюсь на то что представленно вами, то суть, как решать на изменится просто возможно нужно будет добавить какое то условие или какой нибудь regex. Но суть решения не изменится.

    df = pd.DataFrame({
        'urls':['123.ru','lalala.ru','lalala.ru/qwe','lalala.ru/12rwse','bebe.ru'],
        'other data':[1,1,1,1,1]
    })
    # Первый способ 
    new_df = df.loc[df['urls'].str.split('/').str[0].drop_duplicates().index]
    print(new_df)
    # Второй способ
    new_df = df[~df['urls'].str.contains('/')].drop_duplicates()
    print(new_df)


    Первый способ более общий мы разделяем по слешу берем первый элемент (домен), и избавляемся от всех повторяющихся строк. (Более надежно)

    Второй способ совсем слабая проверка мы выбираем те строки которые не содержат слеша, предполагая что первый раз (домен) встречается без слеша. (НЕ надежно)

    Если же оба примера не покрывают всех случаев (ЧТО скорее всего) то по этому же принципу нужно писать более сложное условие, и все.

    Ну вот автор уже и вопрос подредактировал что делает второй способ решения не рабочим да и первый надо менять тоже.
    df = pd.DataFrame({
        'urls':['http://123.ru/','http://lalala.ru','http://lalala.ru/qwe',
                'http://lalala.ru/12rwse','http://bebe.ru'],
        'other data':[1,1,1,1,1]
    })
    new_df = df.loc[df['urls'].str.split('//').str[1].str.split('/').str[0].drop_duplicates().index]
    print(new_df)
    Ответ написан
    Комментировать
  • Какие библиотеки для добавления данных в гугл таблицы вы знаете?

    Maksim_64
    @Maksim_64
    Data Analyst
    pandas, гуглите pandas dataframe to google sheets. Открывайте туториалы и вперед. Для уточнения pandas + gspread + gspread-dataframe, полный setup ну например вот этой статье есть. https://codesolid.com/google-sheets-in-python-and-...
    Ответ написан
    2 комментария
  • Как доработать код в matplotlib для рисования фигур над свечным графиком?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну задача ваша довольно простая нужно добавить scatter plot и нарисовать его маркерами для low и high и проверять event я так понял 0 продавать 1 покупать . В общем кода то тут всего ничего вот.
    plt.scatter(up[up.event == 0].index , up[up.event == 0].low, marker='^',color='green')
    plt.scatter(up[up.event == 1].index, up[up.event == 1].high, marker='v',color='red')
    
    plt.scatter(down[down.event == 0].index, down[down.event == 0].low, marker='^',color='green')
    plt.scatter(down[down.event == 1].index, down[down.event == 1].high, marker='v',color='red')


    Кастомизируйте если надо с цветами там размерами, может еще микро отступы сделать можно вычитать от low и прибавлять к high маленькое число. В общем разберетесь и доведете до желаемого результата.
    Ответ написан
    Комментировать
  • Как добавить словарь в существующий датафрейм pandas?

    Maksim_64
    @Maksim_64
    Data Analyst
    Ну во первых append метод запрещен и будет удален, так что его не используем. Если в двух словах то преобразовать во фрейм и конкатенировать, ну а если не в двух то вот.
    Сначала разберем как добавить новую строку. Используем метод concat для этого. Откроете документацию посмотрите все довольно просто. В вашим случае немножечко сложнее потому что ваш словарь простой
    {key1: value, key2:value}, что бы создать фрейм из словаря он должен быть такого вида some_dict = {'key1':[value],'key2':[value]}. Тогда мы можем просто создать фрейм командой pd.DataFrame(some_dict). Ничего особо переделывать не придется, просто использовать дополнительный метод from_records.
    shapka = {'Кадастровый № ОКС':[],'Вид ОКС':[],'Назначение':[],'Адрес ОКС':[],'Площадь':[],'Вид права':[],'ФИО':[],'Номер рег. записи':[]}
    df = pd.DataFrame(shapka)
    
    slovar = {'Кадастровый № ОКС': 'тут текст', 'Вид ОКС': 'тут текст', 'Назначение': 'тут текст', 'Адрес ОКС': 'тут текст', 'Площадь': 'тут текст', 'Вид права': 'тут текст', 'ФИО': 'тут текст', 'Номер рег. записи': 'тут текст'}
    new_df = pd.concat([df, pd.DataFrame.from_records([slovar])] ,ignore_index=True)


    Все вот так все заработает, как вы хотите, добавляйте новую строку к вашему фрейму. Ну а про concat почитаете в документации, что то будет не понятно спросите.

    И еще на что хотел бы обратить внимание это метод from_records.
    d1 = {'A':1,'B':2}
    d2 = {'A':3,'B':4}
    df = pd.DataFrame.from_records([d1,d2])
    print(df)

    То есть нам доступен список словарей, для создания фрейма.
    Ответ написан
    Комментировать