2020-02-08 14:28:37
项目地址:https://www.kesci.com/home/project/5d03909fe727f8002c54f1ff
1 #调整展示列顺序 2 columns = ['区域', '小区', '面积', '户型', '总价/万元', '单价', '产权', '年限', '关注', '挂牌时间', '朝向', '楼层', '装修情况', '房屋编码'] 3 4 df2 = df[columns]
#修改列名, inplace=True: 在原数据集上修改
df2.rename(columns={'单价': '元/平米'}, inplace=True)
df2.rename(columns={'面积': '面积/平米'}, inplace=True)
pandas中series的字符串属性的方法
#数据清洗 #将具有数值属性的列的值转成数值类型 df2['单价'] = df2['单价'].str.extract(r'(d+)', expand=False).astype(float) df2['面积'] = df2['面积'].str.extract(r'(d+.?d+)', expand=False).astype(float) df2.head(10)
pandas中str列内置方法:https://blog.csdn.net/yueyao121107/article/details/79730934
1、常用的contains()
是否包含表达式,contains()
series=data['列名'].str.contains('we')
返回的是布尔值series
2、
1 #切分字符串 split() 2 series=data['列名'].str.split(',') 3 #把DataFrame列中字符串以','分隔开,每个元素分开后存入一个列表里 4 series=data['列名'].str.split(',',expand=True) 5 #参数expand,这个参数取True时,会把切割出来的内容当做一列,产生多列。 6 series=data['列名'].str.split(',',expand=True)[0] 7 #可以只要第一列
numpy 的astype()函数
contains()对包含部分串的处理
1 #查看二手房最多的小区 2 # df2[].sort_values(['元/平米']).head(10) 3 # df2.isnull() 4 df2[df2['小区'].str.contains('越秀星汇城').astype(bool)].sort_values('元/平米').head(10)
apply() 参照(https://www.cnblogs.com/xiaodongsuibi/p/8927688.html)
函数格式为:apply(func,*args,**kwargs)
用途:当一个函数的参数存在于一个元组或者一个字典中时,用来间接的调用这个函数,并肩元组或者字典中的参数按照顺序传递给参数
解析:args是一个包含按照函数所需参数传递的位置参数的一个元组,是不是很拗口,意思就是,假如A函数的函数位置为 A(a=1,b=2),那么这个元组中就必须严格按照这个参数的位置顺序进行传递(a=3,b=4),而不能是(b=4,a=3)这样的顺序
kwargs是一个包含关键字参数的字典,而其中args如果不传递,kwargs需要传递,则必须在args的位置留空
apply的返回值就是函数func函数的返回值
#保留两位小数
formater="{0:.02f}".format
df2['元/平米'] = df2['元/平米'].apply(lambda x:formater(x))
df2.head(2)