Автор: Эрик Марсия
Перевод: Лао Ци
Рекомендация книги, связанной с этой статьей: "Подготовка данных и разработка признаков", эта книга опубликована в [Электронная промышленность Пресс Флагманский магазин Tmall】в продаже
В этой статье мы за несколько шагов продемонстрируем, как использовать Pandas.read_html
Функция захватывает данные со страницы HTML. Сначала, в качестве простого примера, мы будем использовать Pandas для чтения HTML из строки, затем мы будем использовать несколько примеров того, как читать данные со страницы Википедии.
Загрузить данные с помощью Python
Для анализа и визуализации данных нам обычно приходится загружать данные, как правило, из существующих файлов, таких как обычные файлы CSV или файлы Excel. Прочитайте данные из файла CSV, вы можете использовать Pandasread_csv
метод. Например:
import pandas as pd
df = pd.read_csv('CSVFILE.csv')
Описанный выше метод обычно используется для импорта структурированных данных, таких как CSV или JSON.
Обычно мы используем больше информации из Википедии, которая обычно существует в виде таблиц HTML.
Чтобы получить данные из этих таблиц, мы можем скопировать и вставить их в электронную таблицу и использовать Pandas.read_excel
читать. Это, конечно, возможно, но теперь мы используем технологию поискового робота для автоматического завершения чтения данных.
Предварительные знания
Чтобы читать данные таблицы HTML с помощью Pandas, конечно, вы должны сначала установить Pandas. Используйте pip для установки здесь (вы также можете использовать другие методы, такие как Anaconda, ActivePython и т. д.), метод установкиpip install pandas
.
Обратите внимание, что если эта команда будет выполнена, она автоматически проверит, нужно ли обновлять pip, и при необходимости обновит. Кроме того, мы также будем использовать такие пакеты, как lxml или BeautifulSoup4, а способ установки по-прежнему pip:pip install lxml
.
read_html
функция
Использование пандread_html
Чтение данных из таблицы HTML, синтаксис очень прост:
pd.read_html('URL_ADDRESS_or_HTML_FILE')
Вышеупомянутоеread_html
Полное использование функции, следующий пример демонстрирует:
Пример 1
Первый пример, который демонстрирует, как использовать Pandasread_html
мы хотим прочитать данные из HTML-таблицы в виде строки.
import pandas as pd
html = '''<table>
<tr>
<th>a</th>
<th>b</th>
<th>c</th>
<th>d</th>
</tr>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
</table>'''
df = pd.read_html(html)
Теперь мы получаем не объект Pandas DataFrame, а объект списка Python, доступ к которому можно получить с помощьюtupe()
Проверьте функцию:
type(df)
Пример 2
Во втором примере мы хотим извлечь данные из Википедии. Мы собираемся получить табличные данные о питонах.
import pandas as pd
dfs = pd.read_html('https://en.wikipedia.org/wiki/Pythonidae')
Теперь мы получаем список из 7 таблиц (len(df)
), если мы откроем страницу Википедии, то увидим, что первая таблица находится в правой части страницы, в данном случае нас больше интересует вторая таблица:
dfs[1]
Пример 3
В третьем примере мы хотим прочитать данные о новом коронавирусе (covid-19) в Швеции. Здесь необходимоread_html
Добавьте параметр в метод, затем выполните очистку данных и, наконец, визуализируйте данные.
посвятить данные
Откройте веб-страницу, и вы увидите таблицу на странице с надписью «Новые случаи COVID-19 в Швеции по округам», теперь давайте используем параметр соответствия и эту строку:
dfs = pd.read_html('https://en.wikipedia.org/wiki/2020_coronavirus_pandemic_in_Sweden',
match='New COVID-19 cases in Sweden by county')
dfs[0].tail()
Этим методом мы получаем только таблицу на веб-странице, но, как показано на картинке, последние три строки бесполезны и их нужно удалить.
Использование пандiloc
удалить последние несколько строк
Ниже используйте iloc Pandas, чтобы удалить последние три строки. Обратите внимание, что мы используем -3 в качестве второго параметра (если вы этого не понимаете, обратитесь к руководствам, связанным с Pandas, например «Изучение Python с помощью Old Qi: анализ данных»), и, наконец, сделайте копию данных.
df = dfs[0].iloc[:-3, :].copy()
Далее узнайте, как изменить многоуровневый индекс столбца на одноуровневый.
Измените многоуровневый указатель на один уровень и удалите ненужные символы.
Теперь нам нужно разобраться с проблемой многоуровневого индекса столбца, готового к использованию.DataFrame.columns
иDataFrame.columns,get_level_values()
:
df.columns = df.columns.get_level_values(1)
Наконец, как видите, в столбце «Дата» мы используемread_html
Получив данные из таблицы на странице Википедии и некоторые инструкции, далее используйтеstr.replace
функция и регулярное выражение, чтобы пересмотреть его:
df['Date'] = df['Date'].str.replace(r"\[.*?\]","")
использоватьset_index
изменить индекс
Мы продолжаем использовать Пандыset_index
Метод устанавливает столбец даты в качестве индекса, который предоставляет объект Series типа времени для последующего построения графика.
df['Date'] = pd.to_datetime(df['Date'])
df.set_index('Date', inplace=True)
Для последующих нужд построения графика нам нужно заполнить недостающие значения 0, а затем изменить тип данных соответствующего столбца на числовой тип. Для этого используйтеapply
метод. Наконец, используйтеcumsum()
метод для получения суммированного значения по элементам для каждого столбца.
df.fillna(0, inplace=True)
df = df.iloc[:,0:21].apply(pd.to_numeric)
df = df.cumsum()
График с временными рядами
Последняя часть, используйтеread_html
Из полученных данных создайте временной ряд изображений. Во-первых, чтобы импортировать matplotlib, используйте функцию легенды, чтобы определить местоположение легенды.
%matplotlib inline
import matplotlib.pyplot as plt
f = plt.figure()
plt.title('Covid cases Sweden', color='black')
df.iloc[:,0:21].plot(ax=f.gca())
plt.legend(loc='center left', bbox_to_anchor=(1.0, 0.5)))
Вывод: как читать данные из HTML и преобразовывать их в тип DataFrame
В этой статье вы узнаете, как использовать Pandas.read_html
Функция считывает данные из HTML, и мы создаем изображение с временным рядом, используя данные из Википедии. Не только это, но и установите столбец «Дата» в качестве индекса DataFrame в конце.
Оригинальная ссылка:Woohoo.Mars JA.Цвет/как использовать-…
Найдите общедоступный номер технических вопросов и ответов: класс Лао Ци
Ответ в публичном аккаунте:Лао Ципросматривать все статьи, книги, курсы.
Если вы думаете, что это выглядит хорошо, пожалуйста, поставьте лайк и ретвитните