Отримання даних з кількох аркушів

Оптимізоване завантаження даних із pandas

Amany Mahfouz

Instructor

Вибір аркушів для завантаження

  • read_excel() типово завантажує перший аркуш файлу Excel
  • Щоб завантажити інші аркуші, використайте аргумент sheet_name
  • Задавайте аркуші за назвою та/або номером позиції (з нуля)
  • Передайте список назв/номерів, щоб завантажити кілька аркушів одночасно
  • Усі аргументи для read_excel() застосовуються до всіх зчитаних аркушів
Оптимізоване завантаження даних із pandas

Вибір аркушів для завантаження

Знімок екрана табличного редактора з вкладками двох аркушів

Оптимізоване завантаження даних із pandas

Завантаження вибраних аркушів

# Отримати другий аркуш за індексом позиції
survey_data_sheet2 = pd.read_excel('fcc_survey.xlsx',
                                   sheet_name=1)

# Отримати другий аркуш за назвою survey_data_2017 = pd.read_excel('fcc_survey.xlsx', sheet_name='2017')
print(survey_data_sheet2.equals(survey_data_2017))
True
Оптимізоване завантаження даних із pandas

Завантаження всіх аркушів

  • Передача sheet_name=None у read_excel() зчитує всі аркуші у книзі
survey_responses = pd.read_excel("fcc_survey.xlsx", sheet_name=None)

print(type(survey_responses))
<class 'collections.OrderedDict'>
for key, value in survey_responses.items():
    print(key, type(value))
2016 <class 'pandas.core.frame.DataFrame'>
2017 <class 'pandas.core.frame.DataFrame'>
Оптимізоване завантаження даних із pandas

Обʼєднаймо все разом

# Створити порожній датафрейм для всіх завантажених аркушів
all_responses = pd.DataFrame()

# Ітеруватися по датафреймах у словнику for sheet_name, frame in survey_responses.items(): # Додати стовпець, щоб знати, за який це рік frame["Year"] = sheet_name
# Додати датафрейм до all_responses all_responses = pd.concat([all_responses, frame])
# Переглянути роки в даних print(all_responses.Year.unique())
['2016' '2017']
Оптимізоване завантаження даних із pandas

Давайте потренуємось!

Оптимізоване завантаження даних із pandas

Preparing Video For Download...