包含全部示例的代码仓库见GIthub
1 导入库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
2 数据导入
data_list = []
for i in range(1,8):
try:
data = pd.read_csv('./dataset/lianjia{}.csv'.format(i), encoding='gbk')
except:
data = pd.read_csv('./dataset/lianjia{}.csv'.format(i))
finally:
data_list.append(data)
len(data_list)
# output
7
data = pd.concat(data_list)
data.head()
# output
cjtaoshu mendian cjzongjia zhiwei haoping cjdanjia cjxiaoqu xingming cjzhouqi biaoqian cjlouceng cjshijian congyenianxian bankuai
0 37 红莲北里店 251.0 店经理 97% 141 43997元/平 红莲北里 3室1厅 57平 郭海龙 36 房东信赖;销售达人;带看活跃 南 北/高楼层/6层 签约时间:2015-05-24 4-5年 马连道
1 37 红莲北里店 159.0 店经理 97% 141 36969元/平 红莲南里 1室1厅 43平 郭海龙 36 房东信赖;销售达人;带看活跃 南/高楼层/7层 签约时间:2015-05-10 4-5年 马连道
2 37 红莲北里店 257.0 店经理 97% 141 39046元/平 常青藤嘉园 1室1厅 65平 郭海龙 36 房东信赖;销售达人;带看活跃 北/低楼层/16层 签约时间:2015-04-26 4-5年 马连道
3 37 红莲北里店 243.0 店经理 97% 141 41313元/平 红莲北里 2室1厅 58平 郭海龙 36 房东信赖;销售达人;带看活跃 南 北/高楼层/6层 签约时间:2015-04-04 4-5年 马连道
4 37 红莲北里店 372.5 店经理 97% 141 42053元/平 广安门外大街 3室1厅 88平 郭海龙 36 房东信赖;销售达人;带看活跃 东 南 西 北/中楼层/18层 签约时间:2015-04-01 4-5年 马连道
data.info()
# output
<class 'pandas.core.frame.DataFrame'>
Int64Index: 162227 entries, 0 to 6680
Data columns (total 14 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 cjtaoshu 162227 non-null int64
1 mendian 162214 non-null object
2 cjzongjia 162226 non-null float64
3 zhiwei 162226 non-null object
4 haoping 162226 non-null object
5 cjdanjia 162226 non-null object
6 cjxiaoqu 162226 non-null object
7 xingming 162226 non-null object
8 cjzhouqi 162226 non-null object
9 biaoqian 145553 non-null object
10 cjlouceng 162226 non-null object
11 cjshijian 162226 non-null object
12 congyenianxian 162226 non-null object
13 bankuai 160906 non-null object
dtypes: float64(1), int64(1), object(12)
memory usage: 18.6+ MB
3 成交单价分析
对单价进行处理
# 提取单价
dj = data.cjdanjia.dropna().map(lambda x:round(float(x.replace('元/平',''))/10000, 1))
dj.max()
# output
15.0
dj.min()
# output
0.0
# 除去小于等于0的单价
dj = dj[dj>0]
dj.min()
# output
0.1
dj.mean()
# output
3.889871966485709
分桶绘图
bins = [0,1,2,3,4,5,8,10,16]
pd.cut(dj, bins).value_counts().plot.barh()
data.head()
# output
cjtaoshu mendian cjzongjia zhiwei haoping cjdanjia cjxiaoqu xingming cjzhouqi biaoqian cjlouceng cjshijian congyenianxian bankuai
0 37 红莲北里店 251.0 店经理 97% 141 43997元/平 红莲北里 3室1厅 57平 郭海龙 36 房东信赖;销售达人;带看活跃 南 北/高楼层/6层 签约时间:2015-05-24 4-5年 马连道
1 37 红莲北里店 159.0 店经理 97% 141 36969元/平 红莲南里 1室1厅 43平 郭海龙 36 房东信赖;销售达人;带看活跃 南/高楼层/7层 签约时间:2015-05-10 4-5年 马连道
2 37 红莲北里店 257.0 店经理 97% 141 39046元/平 常青藤嘉园 1室1厅 65平 郭海龙 36 房东信赖;销售达人;带看活跃 北/低楼层/16层 签约时间:2015-04-26 4-5年 马连道
3 37 红莲北里店 243.0 店经理 97% 141 41313元/平 红莲北里 2室1厅 58平 郭海龙 36 房东信赖;销售达人;带看活跃 南 北/高楼层/6层 签约时间:2015-04-04 4-5年 马连道
4 37 红莲北里店 372.5 店经理 97% 141 42053元/平 广安门外大街 3室1厅 88平 郭海龙 36 房东信赖;销售达人;带看活跃 东 南 西 北/中楼层/18层 签约时间:2015-04-01 4-5年 马连道
4 销售分析
jjr_zongjia = data.groupby('xingming')['cjzongjia'].sum()
jjr_zongjia[jjr_zongjia>10000]
# output
xingming
丁林冲 23269.80
丁海军 18387.80
丛艳菊 25195.50
丛龙均 12055.58
乔俊萍 16466.40
...
齐树奎 11509.70
齐浩 12488.00
齐红卫 15641.80
龙天吉 13063.80
龙运江 11291.05
Name: cjzongjia, Length: 1524, dtype: float64
不同板块销售分析
bk_jjr_zongjia = data.groupby(['bankuai','xingming'])['cjzongjia'].sum()
bk_jjr_zongjia[bk_jjr_zongjia>10000]
# output
bankuai xingming
CBD 李铁岗 14532.08
王东学 10232.70
王辰 12742.00
七里庄 乔俊萍 16466.40
刘淼 11794.60
...
黄村北 陆新田 16453.98
陈盼 10758.20
黄村火车站 王增强 17893.80
龙泽 宋瑶 18462.00
王明旭 13067.00
Name: cjzongjia, Length: 1448, dtype: float64
销售的成交总价和从业年限分布
data_nx = data.pivot_table('cjzongjia', index='xingming', columns='congyenianxian', aggfunc='sum')
plt.rcParams['font.sans-serif']=['SimHei']
(data_nx>10000).sum().plot.pie() # 布尔值也可以用来计数
5 成交板块分析
成交板块统计
data.bankuai.value_counts()
# output
回龙观 6023
望京 4122
北苑 3254
天通苑 3083
顺义城 2873
...
三河 11
建国门外 10
百善镇 9
海淀其它 8
农展馆 6
Name: bankuai, Length: 220, dtype: int64
len(data)
# output
162227
单价处理
data = data.dropna()
data['cjdanjia'] = data.cjdanjia.str.replace('元/平','').astype(np.float32).map(lambda x: round(x/10000, 2))
data.groupby('bankuai')['cjdanjia'].mean()
# output
pandas.core.series.Series
按板块分组成交单价 [[]] 返回dataframe [] 返回series
data_1 = data.groupby('bankuai')[['cjdanjia']].mean() # [[]] 返回dataframe [] 返回series
data_1.sort_values(by='cjdanjia', ascending=False)
# output
cjdanjia
bankuai
西四 11.226667
金融街 8.019610
西单 7.344132
东四 7.110909
金宝街 7.016438
... ...
良乡 2.055625
观音寺 2.050459
阎村 2.039714
马驹桥 1.977965
三河 1.726364
data_1.columns
# output
Index(['cjdanjia'], dtype='object')
取每个销售成交单价最高的5单
def top(group, n=5):
return group.sort_values('cjdanjia', ascending=False)[:n]
data.groupby('xingming').apply(top)
# output
cjtaoshu mendian cjzongjia zhiwei haoping cjdanjia cjxiaoqu xingming cjzhouqi biaoqian cjlouceng cjshijian congyenianxian bankuai
xingming
丁丽 26358 11 西潞苑北店 150.0 高级经纪人 100% 58 4.56 西潞苑小区 1室--厅 32平 丁丽 40 客户热评 西/中楼层/4层 签约时间:2016-07-04 5年以上 北关
26353 11 西潞苑北店 300.0 高级经纪人 100% 58 4.08 西潞苑小区 2室1厅 73平 丁丽 40 客户热评 南 北/中楼层/6层 签约时间:2016-09-27 5年以上 北关
26354 11 西潞苑北店 295.0 高级经纪人 100% 58 3.64 翠福园 1室1厅 81平 丁丽 40 客户热评 南 北/高楼层/6层 签约时间:2016-09-19 5年以上 北关
26357 11 西潞苑北店 460.0 高级经纪人 100% 58 3.23 京贸国际公寓 3室2厅 142平 丁丽 40 客户热评 东 南/中楼层/28层 签约时间:2016-08-08 5年以上 北关
26356 11 西潞苑北店 307.0 高级经纪人 100% 58 3.17 西潞苑小区 2室1厅 96平 丁丽 40 客户热评 南 北/低楼层/6层 签约时间:2016-08-08 5年以上 北关
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
龚振武 27769 28 仓上南门店 344.0 店经理 97% 138 3.70 西辛南区 3室1厅 93平 龚振武 34 房东信赖;销售达人 南 北/中楼层/6层 签约时间:2016-09-18 3-4年 顺义城
27770 28 仓上南门店 259.0 店经理 97% 138 3.57 裕龙四区 2室1厅 72平 龚振武 34 房东信赖;销售达人 南 北/中楼层/6层 签约时间:2016-09-02 3-4年 顺义城
27771 28 仓上南门店 242.0 店经理 97% 138 2.91 石园北区 2室1厅 83平 龚振武 34 房东信赖;销售达人 南 北/高楼层/6层 签约时间:2016-08-20 3-4年 顺义城
27772 28 仓上南门店 188.0 店经理 97% 138 2.90 仓上小区 2室1厅 64平 龚振武 34 房东信赖;销售达人 南 北/中楼层/6层 签约时间:2016-07-24 3-4年 顺义城
27776 28 仓上南门店 174.0 店经理 97% 138 2.87 仓上小区 1室1厅 60平 龚振武 34 房东信赖;销售达人 南 北/高楼层/6层 签约时间:2016-03-12 3-4年 顺义城