При преобразовании web-scrapped-данных в dataframe элементы в каждой записи, так сказать, объединяются в одно «слово», что затрудняет анализ - PullRequest
0 голосов
/ 04 мая 2020

Я новичок в кодировании. Я работаю над проектом в области науки о данных. Надеюсь, вы можете помочь мне со следующим.

Мне нужно почистить таблицу на этой веб-странице , преобразовать ее в кадр данных, объединить все в один столбец, а затем проанализировать и разделить каждый из 2 (или иногда 3) элементы в каждой записи в разные столбцы.

Это то, что я получил до сих пор:

# Loading it to my jupyter notebook
source2 = requests.get('https://en.wikipedia.org/wiki/List_of_postal_codes_of_Canada:_H').text
soup2 = BeautifulSoup(source2,'lxml')
print(soup2.title.text)

# Showing the table in html format
print(soup2.title.text)
from IPython.display import display_html
tabl2 = str(soup2.table)
display_html(tabl2,raw=True)

# Reading it as pandas dataframe
mlist = pd.read_html(tabl2)

table_df2=mlist[0]
table_df2.head(10)

# flattening the table
postal_data = pd.Series(table_df2.values.ravel('F'))
postal_data

# Creating the dataframe where Im going to load the flattened data
table_df3 = pd.DataFrame(columns = ['Postal Data'])

# Loading data into new dataframe
table_df3['Postal Data'] = postal_data
table_df3

Теперь мне нужно разобрать его. Проблема заключается в том, что когда очищенные данные преобразуются в кадр данных, каждый из 2 (или иногда 3) элементов в каждой записи объединяется в единый тип слова, без разделителя между ними.

Был ли лучший способ очистить таблицу? Или я должен сосредоточиться сейчас на том, как ее проанализировать?

  • 1-й из 2 (или иногда 3) элементов в каждой записи является фиксированная длина 3 символа.

Я могу извлечь эти 3 символа с помощью строки кода ниже, но это не решает мою проблему с другими моими элементами, так как они не удаляются из источника просто создайте копию этих символов и поместите их в другой столбец.

table_df3['Postal Code'] = table_df3['Postal Data'].str[:3]
table_df3
  • Предполагается, что вторым элементом является название окрестности. нет фиксированного количества символов
  • 3-й элемент может быть одним из следующих: север, юг, запад, восток, северо-восток, северо-запад, юго-восток, юго-запад, центральный, окраина, внешний theast, Внутренний Северо-Восток, Южный Центр

  • Те, у кого есть «Не назначено», будут удалены. Таким образом, нет никакого стресса по поводу этих

  • Есть 2 записи, которые имеют точку с запятой. Эти 2 места будут удалены. Таким образом, нет никакого стресса о них.

Спасибо за помощь!

...