Нужна помощь Python. Как лучше всего собрать данные из электронной таблицы в массив, который может содержать строки и числа?

Хотел бы импортировать данные из электронной таблицы, в настоящее время использующей pyxl. Как лучше всего прочитать данные Excel и вставить их в 2D-массив. Это Numpy? Панды? Списки? Я новичок, и я изо всех сил пытаюсь вставить в такую ​​переменную:

MaterialData [y, x] = данные из электронной таблицы, где y - строка, а x - столбец. Я использую цикл for для просмотра ячеек, но не могу найти способ поместить данные в массив.

for i in range(1, rows+1):
    for j in range(1, 6):
        col = sh.cell(i, j)
        col1 = col.value
        materialsList[i,j] = col1

Последняя строка явно ошибочна, но я хочу это сделать, если это имеет смысл! Файл Excel представляет собой список материалов, в каждом столбце которого указаны разные цены, и эта цена отображается в зависимости от того, что пользователь выбирает в программе. (ну, это очень упрощенная версия того, чего я хочу достичь). Часть данных в этом массиве будет отображаться в списке с помощью tkinter, в зависимости от флагов, установленных пользователем.

Любые советы приветствуются !!

Почему в 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 может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
72
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Для работы с электронными таблицами использование pandas - лучший вариант, чем использование массива numpy. Pandas DataFrame - это двумерный массив numpy под капотом. Но хорошо иметь заголовки столбцов, индекс и т. д., Чтобы мы могли изменять эти параметры на лету. Pandas очень хорошо обрабатывает разнородные данные, с множеством встроенных функций, которые упростят работу.

способы преобразования фрейма данных pandas в его представление Numpy-array.

 spreadsheet_np_array = df.as_matrix(columns=None)
 OR
 spreadsheet_np_array = df.values
 OR
 spreadsheet_np_array=np.asarray(your_data_frame_here).

ссылка на панд

Кажется, это хорошо работает в том смысле, что массив IS создан, немного поработает с ним и вернется к вам. Благодарю за помощь, спасибо!

Glenn Cano 01.09.2018 20:23

pandas - очень хорошая библиотека, позволяющая разработчикам работать с файлами Excel. попробуйте следующий код в том же месте, что и файл Excel.

    import pandas as pd
    file_x = 'Scores.xlsx'
    scores = pd.read_excel(file_x)
    scores_dict = scores.to_dict()
    rows = []
    for row in scores_dict.values():
        cols = []
        for col in row.values():
            cols.append(col)
        rows.append(cols)
    print(rows)

Это должно решить проблему

Спасибо за этот фрагмент кода. Я запустил его, но он дал мне длинный единый список всех элементов на листе Excel, а не массив. Что мне нужно, так это возможность просмотреть значение с помощью функции типа массива. Мне нужно знать, какое значение (столбец) содержит конкретная строка.

Glenn Cano 01.09.2018 19:20

Конечным результатом будет список списков, эквивалентный двумерному массиву. каждый внутренний список представляет строки, и к любой из них можно получить доступ, используя его индекс. например, rows [1] даст вам вторую строку, а rows [1] [0] вернет первый столбец во второй строке. надеюсь, это поможет

D.akinbami 02.09.2018 16:50

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