CoderCastrov logo
CoderCastrov
Питон

Как читать и парсить данные из PDF-файла с помощью Python

Как читать и парсить данные из PDF-файла с помощью Python
просмотров
2 мин чтение
#Питон

В этом посте я покажу вам, как читать и парсить данные из PDF-файла с помощью Python.

Read and Scrape Data From PDF File Using Python

Шаги

Убедитесь, что у вас установлены библиотеки NumPy, pandas и tabula-py,

pip install tabula-py
pip install pandas
pip install numpy

Если они установлены, вам просто нужно сначала их импортировать,

import tabula as tb
import pandas as pd
import numpy as np

В этом случае я буду использовать данные, которые были подведены итоги Организацией Объединенных Наций относительно Прогнозов населения мира на 2019 год, вы можете посмотреть, нажав здесь.

В файле есть таблица, из которой я хочу использовать данные для определенной цели, а именно на странице 12: таблица о населении мира, регионах ЦУР и выбранных группах стран, 2019, 2030, 2050 и 2100 годов, в соответствии с прогнозом среднего варианта.

Read and Scrape Data From PDF File Using Python
  • Используйте tabula для чтения pdf-файла, который будет использоваться
file='https://population.un.org/wpp/Publications/Files/WPP2019_Highlights.pdf'data = tb.read_pdf(file, pages = '12')

результат будет выглядеть так,

Read and Scrape Data From PDF File Using Python

как видно, результат хранится в виде списка, вы можете проверить это самостоятельно, чтобы убедиться

type(data)
# вернет list
  • преобразуйте список в dataframe

вы можете использовать вспомогательные функции numpy для этого, потому что если вы преобразуете список напрямую в dataframe таким образом

df = pd.DataFrame(data)

это никогда не получится! вы получите ошибку: ValueError: Must pass 2-d input. shape=(1, 14, 5)

вам нужно сделать это так,

df = pd.DataFrame(np.concatenate(data))

результат будет выглядеть так,

Read and Scrape Data From PDF File Using Python
  • Удалите значения NaN
df.dropna(inplace=True)

результат будет выглядеть так,

Read and Scrape Data From PDF File Using Python

Полученные результаты могут быть достаточными, но, к сожалению, это не то, что мы ожидали, так как мы знаем, что эта таблица хранит все в строках без заголовка для каждого столбца.

В этом случае, согласно таблице в файле, мы будем использовать Регион и Годы в качестве ссылок на заголовки для каждого столбца.

  • преобразуйте строку в заголовок столбца
df.columns = df.iloc[0]
df = df.drop(0)
df = df.reset_index(drop=True)

результат будет выглядеть так,

Read and Scrape Data From PDF File Using Python

До этого момента мы справились хорошо, удачи и спасибо!

Увидимся в следующих постах.