Файлы к уроку:
Ссылки:
Описание
Нам нужно импортировать таблицы определенного типа из множества PDF файлов и объединить их в одну таблицу по вертикали.
Дополнительная сложность в том, что PDF файлы содержат таблицы разного вида. Нам нужно отобрать только определенные.
Решение
Для решения нам понадобится 3 модуля: pandas, glob, tabula. Модуль tabula может извлекать таблицы из PDF файлов, glob создаст для нас список PDF файлов в папке, отфильтровав все остальные, а pandas почистит полученные таблицы.
Примененные функции
- glob.glob
- tabula.read_pdf
- display
- pandas.DataFrame
- pandas.concat
- pandas.to_datetime
- pandas.DataFrame.dropna
- pandas.Series.str.replace
- pandas.DataFrame.to_csv
- pandas.Series
- pandas.Series.repeat
- len
- pandas.DataFrame.append
- pandas.DataFrame.reset_index
- pandas.Series.rename
Код
Список всех PDF файлов в рабочей папке
pdf_files = glob.glob('*.pdf')
pdf_files
Прочитать 1 PDF
pdf_tables = tabula.read_pdf(pdf_files[1],
pages='all',
multiple_tables=True,
lattice=True)
Объединить таблицы одного PDF
df_single = pd.DataFrame()
for table in pdf_tables:
if table.columns[0] == 'Дата':
df_single = pd.concat([df_single, table])
elif table.iloc[0,0] == 'Дата':
table.columns = table.iloc[0]
df_single = pd.concat([df_single, table])
else:
continue
Преобразовать тип данных столбца «Дата» в datetime.
df_single['Дата'] =pd.to_datetime(df_single['Дата'],
format='%d.%m.%Y',
errors='coerce')
Удалить строки, где в столбце «Дата» значения null.
df = df.dropna(subset=['Дата'])
Курс Импорт данных в Python
Номер урока | Урок | Описание |
---|---|---|
1 | Python Импорт данных №1. Импорт Excel | Научимся импортировать данные из книг MS Excel в формате xlsx. |
2 | Python Импорт данных №2. Импорт CSV | Научимся импортировать данные из текстовых файлов CSV. |
3 | Python Импорт данных №3. Импорт с веб-сайта (HTML) | Импортируем таблицу с веб-страницы и запишем результат в CSV файл. |
4 | Python Импорт данных №4. Импорт таблиц XML | Научимся импортировать таблицы XML на примере данных с сайта Банка России. |
5 | Python Импорт данных №5. Импорт таблиц из PDF | Научимся импортировать нужные таблицы из PDF файлов, объединять их по вертикали в одну большую таблицу и записывать результат в CSV файл. |
6 | Python Импорт данных №6. Импорт таблиц из Word | Научимся импортировать таблицы из документов MS Word в формате docx. |
7 | Python Импорт данных №7. Импорт таблиц из Word | В этом уроке мы извлечем таблицу из документа Word и запишем ее в файл CSV. Для этого нам понадобится модули python-docx и pandas. |