使用Python

时间:2018-10-23 11:38:49

标签: python csv nlp

我有一个提供了properties.csv的数据集(4000行和6列)。包含许多功能的csv文件,其中某些功能是数字功能,而某些功能是标称功能(功能包含文本)。假设该数据集中的特征是

id
F1 
F2
F3
F4 
Price 

每个功能的内容示例:

id(CSV文件中的第1至3行)---> 44525                                  44859                                  45465

F1(CSV文件中的第1至3行)--->“位于                                   黄金地带,马贝拉”                                  “别墅在马贝拉的罗西奥·纳杰勒斯出售                                   黄金里程”                                  “一间五层卧室的别墅在                                   Nagüeles”

F2(CSV文件中的第1至3行)--->“壁炉,电梯,露台,山景,                                    货运电梯,空调,天井,                                    客房,花园,阳台,海景,湖景                                    内置厨房”                                    “山顶风光”                                    “电梯,露台,警报系统,山区                                     景观,游泳池,空调,                                     地下室,可欣赏海景/湖面”

F3(CSV文件中的第1至3行)-包含数值---> 0                                                               0                                                               0

F4(CSV文件中的第1至3行)-包含数值---> 393                                                              640                                                              4903 F3(CSV文件中的第1至3行)-包含数值---> 4400000                                                              2400000                                                              1900000

在F1中,我希望执行以下操作:

1-提取属性的类型(公寓,房屋或别墅),并将其放在单独的功能(自变量)中,在CSV文件中调用“类型”。之后,我想将它们分成组(公寓组,房屋组,Vilas组),并计算每个类型组的平均价格。 2-提取每个属性的位置(位置可以是:Alenquer,Quinta da Marinha,Golden Mile和Nagüeles),并将其放在单独的功能(自变量)中,在csv文件中调用“ Location”。

我是NLP的初学者。我试图编写这段代码来从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)

我需要您的帮助来修复此代码,以及如何从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 :(得分:1)

这是一个解决方案:

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