Извлечение информации / очистка данных из файла CSV с использованием Python - PullRequest
0 голосов
/ 23 октября 2018

У меня есть набор данных, представленный properties.csv (4000 строк и 6 столбцов).CSV-файл, включающий в себя множество функций, некоторые из этих функций являются числовыми, а некоторые являются номинальными (функции содержат текст).Предположим, что функциями в этом наборе данных являются

id
F1 
F2
F3
F4 
Price 

Примеры содержимого каждой функции:

id (строки 1-3 в файле CSV) ---> 44525 44859 45465

F1 (строки с 1 по 3 в CSV-файле) ---> «Потрясающая вилла с 6 спальнями в самом сердце Золотой Мили, Марбелья» «Вилла на продажу в Росио-де-Нагешелес, Золотая Миля Марбельи» «Одноуровневая 5-комнатнаявилла на продажу в Нагалесе "

F2 (строки с 1 по 3 в файле CSV) --->" Камин, Лифт, Терраса, Вид на горы, Грузовой лифт, Кондиционер, Патио, Гостевой туалет, Сад, Балкон, Вид на море / озеро, встроенная кухня "" Mountain view "" Лифт, терраса, сигнализация, вид на горы, бассейн, кондиционер, подвал, вид на море / озеро "

F3 (ряд 1 до3 в файле CSV) - содержит числовые значения ---> 0 0 0

F4 (строки 1–3 в файле CSV) - содержит числовые значения ---> 393 640 4903 F3 (строки 1–3 вCSV-файл) - содержит числовые значения ---> 4400000 2400000 1900000

В F1 я ищуo следующее:

1- Извлечь тип свойств (квартира, дом или вилла) и поместить его в отдельную функцию (независимую переменную) с вызовом «Тип» в файле CSV.После этого я хочу разделить их на группы (группа квартир, группа домов, группа Вилас) с расчетом средней цены для каждой группы типов.2- Извлеките местоположение каждого свойства (местоположения могут быть: Alenquer, Quinta da Marinha, Golden Mile, Nagüeles) и поместите его в отдельную функцию (независимую переменную) с вызовом «Location» в файле CSV.

Я новичок в НЛП.Я пытался написать этот код для извлечения информации «Квартира» из F1, но, вероятно, она не работает:

import pandas as pd
from pandas import DataFrame
import re

properties = pd.read_csv (r'C:/Users/User/Desktop/properties.csv')
Extract "Apartment" from F1
Title= DataFrame(properties,columns= ['F1'])

for line in F1: 
        #return list of apartments in that line
        x = re.findall("\apartment", line) 
        #if a date is found
         if len(x) != 0:
         print(x)

Мне нужна ваша помощь, чтобы исправить этот код и что я должен сделать, чтобы извлечь другую информацию »Houses 'и' Villa 'из F1.

После этого создайте набор данных свойств в этом формате и сохраните его как файл CSV:

id
Location (Information extracted from F1)
type (information extracted from F1 in groups "apartments’, ‘houses’, ‘Villas’")
F1
F2
F3
F4
Price

В случае, если F1 не содержиттип некоторых свойств «Пустое поле (без текста)», что я должен сделать, чтобы иметь дело с полями пробелов (без текста) в F1 и извлечь тип свойств из других свойств?

1 Ответ

0 голосов
/ 26 октября 2018

Вот решение:

import pandas as pd
import re

df = pd.read_csv('appt_info.csv', delimiter=';')

def extract_housing_type(text):
    # Do a regular expression search for the pattern
    match = re.search('(apartment|house|villa)s?', text, flags=re.I)
    if match is not None:
        return match.group(0)  # return the value of the match
    return 'Unknown'  # return a default value if there is no match


df['Type'] = df.F1.apply(lambda x: extract_housing_type(x))  # assign the output to a new column

Это должно дать вам фрейм данных, который выглядит следующим образом:

      id                                                 F1  \
0  44525  Stunning 6 bedroom villa in the heart of the G...   
1  44859  Villa for sale in Rocio de Nageles, Marbella G...   
2  45465      One level 5 bedroom villa for sale in Nageles   

                                                  F2  F3    F4    Price   Type  
0  Fireplace, Elevator, Terrace, Mountain view, F...   0   393  4400000  villa  
1                                      Mountain view   0   640  2400000  Villa  
2  Elevator, Terrace, Alarm system, Mountain view...   0  4903  1900000  villa  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...