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

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

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, в зависимости от установленных пользователем флагов.

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

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

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)

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

0 голосов
/ 01 сентября 2018

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

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

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

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

...