Обработка данных Python (2): обработка данных Excel

Python

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

Обработка Excel намного сложнее, чем обработка файлов CSV, JSON и XML, как описано в предыдущей главе.Давайте возьмем отчет ЮНИСЕФ (Детский фонд Организации Объединенных Наций) за 2014 год в качестве примера, чтобы объяснить, как обрабатывать данные Excel.

Статьи по Теме:

Десять минут быстрого запуска Python

Обработка данных Python (1): обработка данных в трех форматах: JSON, XML и CSV.

1. Установите пакет Python

Для разбора файлов Excel требуется сторонний пакетxlrd. мы используемpipЧтобы установить сторонний пакет, введите в командной строке следующую команду установки:

pip install xlrd

Если будет предложеноcommand not found, вам нужно установитьpip. Способ установки смотрите на официальном сайте pip:Критика Друзья боятся IO/en/stable/i….

2. Разборка файла Excel

Хотите извлечь данные из рабочего листа Excel, иногда самый простой способ — найти лучший способ получить данные. Прямой разбор иногда не решает проблему. Поэтому сначала посмотрите на данные, которые могут найти другие форматы, прежде чем анализировать, например CSV, JSON, XML и т. д. Если вы не можете найти разрешение Excel.

Существует три основных библиотеки для работы с файлами Excel.

  • XLRD Чтение файлов Excel.

  • xlwt Запишите в файл Excel и отформатируйте его.

  • xlutils Набор расширенных инструментов для работы с Excel (сначала необходимо установить xlrd и xlwt).

При использовании этих трех библиотек их необходимо устанавливать отдельно. Но в этой главе будет использоваться только xlrd.

Следующие шаги объясняют, как анализировать файл Excel.

сначала импортироватьxlrdбиблиотеку, затем откройте книгу и сохраните ее вbookв переменной.

import xlrd
book = xlrd.open_workbook('./resource/data.xlsx')

В отличие от CSV, рабочие тетради Excel могут иметь несколько вкладок или листов. Чтобы получить данные, нам нужно найти лист, который содержит целевые данные.

Если рабочих листов несколько, вы можете угадать порядковый номер, но не в том случае, если листов много. Итак, вы должны знать book.sheet_by_name(somename) команда, гдеsomename— это имя рабочего листа, к которому вы хотите получить доступ.

Давайте посмотрим на названия рабочих листов:

import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

for sheet in book.sheets():
    print(sheet.name)

book.sheets()перечислить все листы,sheet.nameРаспечатайте название листа. вывод:

Data Notes
Table 9

Нам нужна таблица 9. Итак, мы добавляем это имя в скрипт:

import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')
print(sheet)

Запустив его, вы получите следующее значение:

<xlrd.sheet.Sheet object at 0x106af8898>

Чтобы увидеть, какие методы есть лист, вы можете использоватьprint(dir(sheet)). найти один из распечатанных результатовnrowsметод,sheet.nrows返回这个 sheet 一共有多少行。 мы будем использоватьnrowsдля перебора содержимого каждой строки.

import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

for i in range(sheet.nrows):
    print(sheet.row_values(i))

Запуск программы дает следующий результат:

После получения данных в таблице следующим шагом будет подумать о том, как отформатировать данные и извлечь полезную информацию. Существует много форматов для извлечения информации, здесь мы используем один из них:

{
  u'Afghanistan': {
		'child_labor': {
			'female': [9.6, ''],
			'male': [11.0, ''], 
			'total': [10.3, '']
		},
		'child_marriage': {
	     'married_by_15': [15.0, ''],
	     'married_by_18': [40.4, '']
		} 
	}, 
  u'Albania': {
   	'child_labor': {
     	'female': [9.4, u'  '],
    	'male': [14.4, u'  '],
      'total': [12.0, u'  ']
  	},
    'child_marriage': {
    	'married_by_15': [0.2, ''],
    	'married_by_18': [9.6, '']
		} 
	},
	...
}

Как определить, с какой строки начинаются полезные данные

Как только вы научитесь читать данные Excel и извлекать из них полезную информацию, важно понять, как извлекать ключевые данные из сложных данных.

Способ 1. Откройте Excel с помощью программного обеспечения, чтобы сделать интуитивное суждение.

Во-первых, самый простой способ — открыть файл Excel в интуитивно понятном виде, как показано ниже:

Формат, который мы определили выше, использует страну в качестве ключа, поэтому страна должна быть найдена первой. Посмотрите на таблицу Excel, начиная со строки 15, показывающей данные по стране. Данные о детском труде и детских браках переходят из столбца E в столбец N.

Способ 2. Используйте программу для проверки несколько раз.

Если вы не хотите использовать первый метод или на вашем компьютере нет программного обеспечения, которое может открыть файл, вы можете попробовать второй метод: написать код для нескольких испытаний.

Этот метод использует принцип счетчика. Сначала выведите первые 10 строк, чтобы посмотреть, есть ли нужные данные, если нет, то выведите 11-20 строк, и проверяйте этот интервал за интервалом, пока не будет определено точное количество строк.

код показывает, как показано ниже:

import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

count = 0
for i in range(sheet.nrows):
    if count < 10:
        row = sheet.row_values(i)
        print(i, row)
    count += 1

Сначала распечатайте и проверьте первые 10 строк, проверьте вывод консоли и не найдите данные нужной страны, продолжайте настраивать тест:

import xlrd

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

count = 0
for i in range(10, sheet.nrows):
    if count < 10:
        row = sheet.row_values(i)
        print(i, row)
    count += 1

Мы уже знаем, что первые 10 строк не содержат нужных данных, поэтому диапазон напрямую меняется наrange(10, sheet.nrows)Печать начинается с 10 строки, остальные коды остаются без изменений. Запустите программу еще раз и получите следующий вывод:

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

3. Данные сборки

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

import xlrd
import pprint

book = xlrd.open_workbook('./resource/data.xlsx')

sheet = book.sheet_by_name('Table 9')

# 定义存放数据的字典
data = {}
for i in range(14, sheet.nrows):
    row = sheet.row_values(i)
    # 取出国家名字
    country = row[1]
    # 按照给定的格式组装数据
    data[country] = {
        'child_labor': {
            'total': [row[4], row[5]],
            'male': [row[6], row[7]],
            'female': [row[8], row[9]],
        },
        'child_marriage': {
            'married_by_15': [row[10], row[11]],
            'married_by_18': [row[12], row[13]],
        }
    }
    # 最后一个国家是 Zimbabwe,判断到 Zimbabwe 之后就 break 跳出循环
    if country == 'Zimbabwe':
        break

# 打印数据
pprint.pprint(data)

Более эстетично использовать формат pprint при печати сложных объектов.

4. Резюме

  1. Три библиотеки с Excel: xlrd, xlwt, xlutils. В зависимости от того, какие библиотеки использовать.
  2. После разбора Excel требуемые данные о местоположении определяются двумя способами: открытый графический интерфейс с непосредственным наблюдением программой и шаг скрининга. Если вы не знаете, какая у объекта есть команда, вы можете вывестиdir(obj)для просмотра, где объект — это объект, который вы хотите просмотреть, связанная с ним команда.
  3. Заранее подумайте о формате, который вы хотите вывести, и вам будет легче собрать данные после того, как вы определитесь с форматом.
  4. Более эстетично использовать формат pprint при печати сложных объектов.

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