欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

上海连锁店二手房交易数据分析

最编程 2024-06-28 21:32:57
...

【python】上海链家二手房交易数据分析

  • 目的:练习pandas数据处理以及数据可视化
  • 数据采集时间:2017/11/7
  • 数据获取:八爪鱼数据采集工具
  • 数据量:约3w条
  • 字段:行政区、小区名称、房型、楼层、朝向、单价、总价、建造年代等

1.数据预处理
------原始数据

# 定义一个分列数据的函数工具用于将home_info和location_info的信息拆分出来
import pandas as pd 
def data_split(df_data):
	df_data = df_data.map(lambda x:x.replace('\n', ''))
	df_data = df_data.map(lambda x:x.replace(' ',''))
	df_data = df_data.map(lambda x:x+'|')
	df_data_0 = df_data.map(lambda x:x.split('|')[0])
	df_data_1 = df_data.map(lambda x:x.split('|')[1])
	df_data_2 = df_data.map(lambda x:x.split('|')[2])
	df_data_3 = df_data.map(lambda x:x.split('|')[3])
	df_data = pd.concat([df_data_0, df_data_1, df_data_2, df_data_3], axis=1)
	return df_data
	
# 导入数据并预处理	
import pandas as pd 
import matplotlib.pylab as plt
from matplotlib.pylab import style
import datetime
starttime = datetime.datetime.now()
style.use('ggplot')     # 设置图片显示的主题样式
# 解决matplotlib显示中文问题
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
df_2 = pd.read_csv('.\lianjia_ershoufang_new.csv') 
print('数据集基本信息:')
print(df_2.info())
print('数据集共{}行,{}列'.format(df_2.shape[0],df_2.shape[1]))
print('原始数据预览:')
print(df_2.head())

df_2 = pd.concat([df_2.iloc[:,:3],data_clean(df_2['home_info']),data_clean(df_2['location_info'])], axis=1)
df_2.columns =['travel', 'total_price', 'price','room_type', 'area', 'floor', 'orientation', 'area_name', 'district', 'location', 'built_year']

# 为便于数据分析,去除数值中的汉字
df_2['built_year'] = df_2['built_year'].map(lambda x:x.replace('年建',''))
# 这一步是为了后面可以顺利将built_year转成int类型
for i in range(df_2.shape[0]):
    if df_2.loc[i,'built_year'] == '':
        df_2.loc[i,'built_year'] = 0
    else:
        pass
df_2['area'] = df_2['area'].map(lambda x:x.replace('平',''))
df_2.built_year = df_2.built_year.astype('int')
df_2['area'] = df_2['area'].astype('float64')
df_2.to_csv('.\lianjia_clean.csv', sep=',', index=False)   # 数据清洗完毕写入csv保存
endtime = datetime.datetime.now()
time_used = (endtime - starttime).seconds
print('数据预处理完成,共耗时%s秒' % time_used)
print('预处理后数据预览:')
df_2.head()

2.数据可视化

**2.1 总价、单价、面积和建造年代分布直方图**
fig = plt.figure(figsize=(15.0,10.0))
ax1 = fig.add_subplot(2,2,1)
ax2 = fig.add_subplot(2,2,2)
ax3 = fig.add_subplot(2,2,3)
ax4 = fig.add_subplot(2,2,4)

fig.suptitle('链家二手房交易数据总览')

df_totalprice = df_2[df_2['total_price'] < 4000]  # 略去总价4000w以上的数据
ax1.hist(df_totalprice['total_price'], bins=100, color='blue', alpha=0.7)
ax1.set_xlabel('总价')
ax1.set_ylabel('数量')

ax2.hist(df_2['price'] ,

推荐阅读