Как на Python добавить новые ячейки Jupyter Notebook

У меня есть много разных файлов, которые я пытаюсь загрузить в pandas питоническим способом, а также добавить в разные ячейки, чтобы это выглядело легко. Теперь у меня есть 36 различных переменных, но для простоты я покажу вам пример с тремя разными фреймами данных.

Как на Python добавить новые ячейки Jupyter Notebook

Но скажем, я загружаю CSV-файлы с этим в фреймы данных, но в разные ячейки, автоматически генерируемые.

file_list = ['df1.csv', 'df2.csv', 'df3.csv']
name_list = ['df1', 'df2', 'df3']

Я мог бы легко создать три разные ячейки и ввести:

df1 = pd.read_csv('df1.csv')

Но есть десятки разных CSV, и я хочу делать похожие вещи, такие как удаление столбцов, и должны быть более простые способы.

Я сделал что-то вроде:

var_list = []

for file, name in zip(file_list, name_list):
    var_name = name
    var_file = pd.read_csv(file)
    var_list.append((file, name, var_file))

print(var_list)

Но все это происходит в одной клетке.

Теперь я просмотрел документы ipython, так как я считаю, что это пакет, который имеет к этому отношение, но я ничего не нашел. Я ценю вашу помощь.

Может быть, проверить stackoverflow.com/questions/54987129/…

Clej 19.03.2022 19:03

Что значит добавить новые ячейки?

Psidom 19.03.2022 19:09

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

ddejohn 19.03.2022 19:28

Также ваши кадры данных выглядят неправильно... вы неправильно загружаете данные в конструкторы. Вы должны делать pd.DataFrame({"name": name_list, "age": age_list, "height": height_list}). Прямо сейчас, например, столбец вашего имени в DF3 имеет вид Sarah, 53, 56, что явно неверно....

ddejohn 19.03.2022 19:30

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

ddejohn 19.03.2022 19:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
5
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Насколько я понимаю, вам нужно загрузить содержимое нескольких файлов .csv в несколько фреймов данных pandas, плюс вы хотите выполнить повторяемый процесс для каждого из них. Вы не уверены, что они будут загружены правильно, но вы все равно хотите получить от них максимум, и с этой целью вы хотите запускать каждый процесс в своей собственной ячейке Jupyter.

Как указал ddejohn, я не знаю, лучший ли это вариант, но в любом случае, я думаю, что это классный вопрос. Следующий код генерирует несколько ячеек, каждая из которых имеет общую структуру с разными переменными (в моем примере я просто сортирую загруженный фрейм данных по возрасту, например). Он основан на странице Как программно создать несколько новых ячеек в блокноте Jupyter, которая должна получить признание, если это действительно то, что вы искали:

from IPython.core.getipython import get_ipython
import pandas as pd

def create_new_cell(contents):
    shell = get_ipython()
    payload = dict(
        source='set_next_input',
        text=contents,
        replace=False,
    )
    shell.payload_manager.write_payload(payload, single=False)

def get_df(file_name, df_name):
    content = "{df} = pd.read_csv('{file}', names=['Name', 'Age', 'Height'])\n"\
               "{df}.sort_values(by='Age', inplace=True)\n"\
               "{df}"\
               .format(df=df_name, file=file_name)
    create_new_cell(content)

file_list = ['filename_1.csv', 'filename_2.csv']
name_list = ['df1', 'df2']
for file, name in zip(file_list, name_list):
    get_df(file, name)

Другие вопросы по теме