Импорт Dataframe из одной записной книжки Jupyter в другую записную книжку Jupyter - PullRequest
0 голосов
/ 10 марта 2020

Я написал python скрипт для получения данных из моей учетной записи Gmail, которые я импортировал как pandas фрейм данных в блокнот Jupyter. Записная книжка называется «Автоматизация через Gmail API», а фрейм данных просто называется «df». Теперь я хочу использовать этот df для обновления Google Sheet через API Google Sheets. Для этого я создал еще одну записную книжку - «Автоматизация через Sheets API». Но как я могу получить доступ к df в записной книжке «Автоматизация через Sheets API»? Очевидно, Jupyter предоставляет некоторые функции для загрузки ноутбука в другой ноутбук . Я просто скопировал и вставил код «Notebook Loader» в мою тетрадь Sheets и изменил только «путь» и «полное имя», но он не работает, и я не понимаю, почему:

#Load df from the "Automation via Gmail API" notebook.

fullname = "Automation via Gmail API.ipynb"

class NotebookLoader(object):
    """Module Loader for Jupyter Notebooks"""
    def __init__(self, path="C:\\Users\\Moritz Wolff\\Desktop\\gmail automatisierung\\Gmail API"):
        self.shell = InteractiveShell.instance()
        self.path = path

    def load_module(self, fullname="Automation via Gmail API.ipynb"):
        """import a notebook as a module"""
        path = find_notebook(fullname, self.path)

[...]

Нет сообщения об ошибке. Моя стратегия ошибочна с самого начала или я просто упускаю мелкие детали? Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 10 марта 2020

Прямой вариант - сохранить фрейм данных в виде текстовой таблицы в исходной записной книжке и прочитать ее в другой. Вместо обычного текста вы можете также сохранить сам фрейм данных как сериализованный Python для большей эффективности / удобства.

Параметры из исходного блокнота:

df.to_csv('example.tsv', sep='\t') # add `, index = False` to leave off index
# -OR-
df.to_pickle("file_name.pkl")

Параметры при чтении блокнота:

import pandas as pd
df = pd.read_csv('example.tsv', sep='\t')
#-OR-
df = pd.read_pickle("file_name.pkl")

Я использовал табличную текстовую структуру с разделителями табуляции, но вы можете использовать запятую.

1 голос
/ 10 марта 2020

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

Вы всегда можете экспортировать ваш фрейм данных в csv, используя pandas.DataFrame.to_csv(), а затем загрузить его в Ваш другой ноутбук с pandas.read_csv()

import pandas as pd

df = ['test','data']
df.to_csv('data1.csv')

Затем в другом ноутбуке:

df = pd.read_csv('data1.csv', index_col = 0)

В качестве альтернативы вы можете попробовать использовать функцию %store magi c:

df = ['test','data']

%store df

Затем, чтобы вызвать его в другой записной книжке, чтобы извлечь его:

%store -r df

Одно из ограничений этого метода заключается в том, что вам необходимо %store ваши данные каждый раз, когда переменная обновляется.

Документация: https://ipython.readthedocs.io/en/stable/config/extensions/storemagic.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...