import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib. pyplot as plt
import warnings
warnings. filterwarnings( 'ignore' )
mpl. rcParams[ "font.family" ] = "SimHei"
mpl. rcParams[ "axes.unicode_minus" ] = False
plt. rcParams[ 'font.sans-serif' ] = [ 'SimHei' ]
% matplotlib inline
读取数据并查看数据基本情况
df = pd. read_csv( '链家分区汇总.csv' , engine= 'python' , encoding= 'utf-8' , sep= '\t' )
df. head( 2 )
成交价(万)
成交时间
所在小区
户型
建筑面积
挂牌价格(万)
成交周期(天)
调价(次)
带看(次)
关注(人)
...
房屋朝向
建成年代
装修情况
建筑结构
供暖方式
梯户比例
产权年限
配备电梯
xx1
xx2
0
大兴
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
...
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
NaN
1
297
2019-10-29 成交
格林云墅
3室1厅
89.95
300
608
1.0
4.0
43.0
...
南 北
2014
精装
钢混结构
集中供暖
一梯两户
70
有
NaN
NaN
2 rows × 32 columns
df. describe( )
调价(次)
带看(次)
关注(人)
count
38379.000000
38379.000000
38379.000000
mean
0.655202
25.251544
35.793976
std
0.475309
33.931704
73.704051
min
0.000000
0.000000
0.000000
25%
0.000000
4.000000
4.000000
50%
1.000000
13.000000
19.000000
75%
1.000000
33.000000
45.000000
max
1.000000
534.000000
6522.000000
数据清洗
将地区信息单独成列
df[ '地区' ] = df[ '成交价(万)' ]
df[ '地区' ] . unique( )
df[ '地区' ] = df[ '地区' ] . str . replace( '-' , '' ) . replace( '\d+' , np. nan, regex= True )
df[ '地区' ] . fillna( inplace= True , method= 'ffill' )
lianjiadaqu = df[ '地区' ]
df. drop( '地区' , axis= 1 , inplace= True )
df. insert( 0 , '大区' , lianjiadaqu)
df. dropna( axis= 0 , thresh= 20 , inplace= True )
删除 xx1 xx2
df. drop( 'xx1' , axis= 1 , inplace= True )
df. drop( 'xx2' , axis= 1 , inplace= True )
df. sample( 5 )
df. columns
Index(['大区', '成交价(万)', '成交时间', '所在小区', '户型', '建筑面积', '挂牌价格(万)', '成交周期(天)',
'调价(次)', '带看(次)', '关注(人)', '浏览(次', '链家编号', '交易权属', '挂牌时间', '房屋用途',
'房屋年限', '房权所属', '房屋户型', '所在楼层', '户型结构', '套内面积(㎡)', '建筑类型', '房屋朝向',
'建成年代', '装修情况', '建筑结构', '供暖方式', '梯户比例', '产权年限', '配备电梯'],
dtype='object')
先把涉及时间的统一处理
df[ [ '成交时间' , '成交周期(天)' , '挂牌时间' ] ] . head( 5 )
成交时间
成交周期(天)
挂牌时间
1
2019-10-29 成交
608
2018/3/1
2
2019-10-29 成交
31
2019/9/29
3
2019-10-29 成交
364
2018/10/31
4
2019-10-29 成交
39
2019/9/21
5
2019-10-29 成交
114
2019/7/7
成交时间规范
df[ '成交时间' ] . unique( )
df[ '成交时间' ] = df[ '成交时间' ] . str . replace( '成交' , '' )
df[ '成交时间' ] = pd. to_datetime( df[ '成交时间' ] )
a = df[ df[ '成交时间' ] . dt. year == 1905 ] . index. tolist( )
display( len ( a) )