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))