碧桂园公园上城楼盘-酒店安保领班工作总结范文

2023年9月22日发(作者:窦章)
综合案例--北京租房数据统计分析
Table of Contents
前⾔
原始数据请点击
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#
设置中⽂字体
from pylab import mpl
mpl.rcParams["-serif"] = ["SimHei"]
获取数据
file_data = pd.read_csv("./data/链家北京租房数据.csv")
file_data
区域⼩区名称户型⾯积(㎡)价格(元/⽉)
0东城万国城MOMA1室0厅59.11平⽶10000
1东城北官厅胡同2号院3室0厅56.92平⽶6000
2东城和平⾥三区1室1厅40.57平⽶6900
3东城菊⼉胡同2室1厅57.09平⽶8000
4东城交道⼝北⼆条35号院1室1厅42.67平⽶5500
..................
8218顺义怡馨家园3室1厅114.03平⽶5500
8219顺义旭辉26街区4房间2卫59平⽶5000
8220顺义前进花园⽟兰苑3室1厅92.41平⽶5800
8221顺义双裕⼩区2室1厅71.81平⽶4200
8222顺义樱花园⼆区1室1厅35.43平⽶2700
8223 rows × 5 columns
#
看⼀看数据的⼤概情况
file_data.describe()
价格(元/⽉)
count8223.000000
mean9512.297823
std9186.752612
min566.000000
25%4800.000000
50%6800.000000
50%6800.000000
75%10000.000000
max150000.000000
价格(元/⽉)
数据基本处理
重复值和空值处理
#
重复值
# file_ated()
#dataframeshape
通过观察的来观测结果
file_data = file_data.drop_duplicates()
file_data.shape
(5773, 5)
#
空值处理
file_data = file_data.dropna()
file_data.shape
(5773, 5)
数据转换类型
⾯积数据类型转换
file_data.head()
区域⼩区名称户型⾯积(㎡)价格(元/⽉)
0东城万国城MOMA1室0厅59.11平⽶10000
1东城北官厅胡同2号院3室0厅56.92平⽶6000
2东城和平⾥三区1室1厅40.57平⽶6900
3东城菊⼉胡同2室1厅57.09平⽶8000
4东城交道⼝北⼆条35号院1室1厅42.67平⽶5500
#
单个值实现
# ,
切⽚取值去掉字符串后两位
file_data["⾯积(㎡)"].values[0][:-2]
'59.11'
#
创建⼀个空的数组
data_new = np.array([])
data_area = file_data["⾯积(㎡)"].values
for i in data_area:
data_new = np.append(data_new, np.array(i[:-2]))
# data_new
转换中的数据类型
data_new = data_new.astype(np.float64)
#
替换
file_data.loc[:, "⾯积(㎡)"] = data_new
file_data.head()
区域⼩区名称户型⾯积(㎡)价格(元/⽉)
0东城万国城MOMA1室0厅59.1110000
1东城北官厅胡同2号院3室0厅56.926000
2东城和平⾥三区1室1厅40.576900
3东城菊⼉胡同2室1厅57.098000
4东城交道⼝北⼆条35号院1室1厅42.675500
户型表达⽅式转换
#
取出需要修改的列
house_data = file_data["户型"]
#
创建⼀个新数组
temp_list = []
# repalce,
⽤⽅法更改并放⼊新的数组中
for i in house_data:
# print(i)
new_info = i.replace("房间", "室")
temp_list.append(new_info)
#
替换数据表中原来的数据
file_data.loc[:, "户型"] = temp_list
file_data
区域⼩区名称户型⾯积(㎡)价格(元/⽉)
0东城万国城MOMA1室0厅59.1110000
1东城北官厅胡同2号院3室0厅56.926000
2东城和平⾥三区1室1厅40.576900
3东城菊⼉胡同2室1厅57.098000
4东城交道⼝北⼆条35号院1室1厅42.675500
..................
8218顺义怡馨家园3室1厅114.035500
8219顺义旭辉26街区4室2卫59.005000
8220顺义前进花园⽟兰苑3室1厅92.415800
8221顺义双裕⼩区2室1厅71.814200
8222顺义樱花园⼆区1室1厅35.432700
区域⼩区名称户型⾯积(㎡)价格(元/⽉)
5773 rows × 5 columns
图标分析
房源数量、 位置分布分析
# unique()
⽅法去重
file_data["区域"].unique()
array(['东城', '丰台', '亦庄开发区', '⼤兴', '房⼭', '昌平', '朝阳', '海淀', '⽯景⼭', '西城',
'通州', '门头沟', '顺义'], dtype=object)
new_df = pd.DataFrame({"区域":file_data["区域"].unique(),
"数量":[0]*13})
new_df
区域数量
0东城0
1丰台0
2亦庄开发区0
3⼤兴0
4房⼭0
5昌平0
6朝阳0
7海淀0
8⽯景⼭0
9西城0
10通州0
11门头沟0
12顺义0
#
获取每个区域房源数量
# :
分组聚合按照区域进⾏分组
# count(),
聚合统计每个区域房源数量
area_count = file_data.groupby(by="区域").count()
# dataframe
将上⾯的的取值赋值数量列
new_df["数量"] = area_count.values
户型数量分析
house_data = file_data["户型"]
house_data.head()
0 1室0厅
1 3室0厅
2 1室1厅
3 2室1厅
4 1室1厅
Name: 户型, dtype: object
def all_house(arr):
"""统计户型的数量"""
# , numpy
去重转化为了字符串数组
key = np.unique(arr)
#
创建新字典储存数据
result = {}
for k in key:
# arr key
判断中的每⼀个值是否与中的第⼀个值相同
# boolseries
并返回类型的
mask = (arr == k)
# true, false
就保留就去除
arr_new = arr[mask]
# masktrue
获取中的个数
v = arr_new.size
# k, arr_newsize
使⽤作为索引的作为值
result[k] = v
return result
house_info = all_house(house_data)
house_info
{'0室0厅': 1,
'1室0卫': 10,
'1室0厅': 244,
'1室1卫': 126,
'1室1厅': 844,
'1室2厅': 13,
'2室0卫': 1,
'2室0厅': 23,
'2室1卫': 120,
'2室1厅': 2249,
'2室2卫': 22,
'2室2厅': 265,
'2室3厅': 1,
'3室0卫': 3,
'3室0厅': 12,
'3室1卫': 92,
'3室1厅': 766,
'3室2卫': 48,
'3室2厅': 489,
'3室3卫': 1,
'3室3厅': 10,
'4室1卫': 15,
'4室1厅': 58,
'4室2卫': 24,
'4室2厅': 191,
'4室3卫': 5,
'4室3厅': 9,
'4室5厅': 2,
'5室0卫': 1,
'5室0厅': 1,
'5室1卫': 3,
'5室1厅': 7,
'5室2卫': 7,
'5室2厅': 49,
'5室3卫': 3,
'5室3厅': 24,
'5室4厅': 1,
'5室5厅': 1,
'6室0厅': 1,
'6室1卫': 1,
'6室1厅': 1,
'6室2厅': 5,
'6室3卫': 2,
'6室3厅': 6,
'6室4卫': 2,
'7室1厅': 1,
'7室2厅': 2,
'7室3厅': 3,
'7室4厅': 1,
'8室4厅': 2,
'9室1厅': 2,
'9室2厅': 1,
'9室5厅': 2}
#
去掉统计数量较少的值
house_data = dict((key, value) for key,
value in house_info.items() if value > 50)
show_houses = pd.DataFrame({"户型": [x for x in house_data.keys()],
"数量": [x for x in house_data.values()]})
show_houses
户型数量
01室0厅244
11室1卫126
21室1厅844
32室1卫120
42室1厅2249
52室2厅265
63室1卫92
73室1厅766
83室2厅489
94室1厅58
104室2厅191
户型数量
#
图形展⽰房屋类型
house_type = show_houses["户型"]
house_type_num = show_houses["数量"]
plt.barh(range(11), house_type_num)
plt.yticks(range(11), house_type)
plt.xlim(0, 2500)
plt.title("北京市各区域租房数量统计")
plt.xlabel("数量")
plt.ylabel("房屋类型")
#
给每个条上⾯添加具体数字
for x, y in enumerate(house_type_num):
# print(x, y)
plt.text(y+0.5, x-0.2, "%s" %y)
plt.show()
平均租⾦分析
df_all = pd.DataFrame({"区域": file_data["区域"].unique(),
"房租总⾦额": [0]*13,
"总⾯积": [0]*13})
df_all.head()
区域房租总⾦额总⾯积
0东城00
1丰台00
2亦庄开发区00
3⼤兴00
4房⼭00
# series,
⽅式按区域分组价格叠加聚合
sum_price = file_data["价格(元/⽉)"].groupby(file_data["区域"]).sum()
# series,
⽅式按区域分组⾯积叠加聚合
sum_area = file_data["⾯积(㎡)"].groupby(file_data["区域"]).sum()
#
赋值
df_all["房租总⾦额"] = sum_price.values
df_all["总⾯积"] = sum_area.values
df_all
区域房租总⾦额总⾯积
0东城394555027353.99
1丰台440489350922.79
2亦庄开发区131840015995.53
3⼤兴228695035884.15
4房⼭72675015275.41
5昌平252151535972.92
6朝阳20281396166921.72
7海淀727935057210.39
8⽯景⼭115650013956.67
9西城563697537141.64
10通州271960046625.23
11门头沟104830020258.20
12顺义219090033668.97
#
计算各个区域每平⽅⽶的房租
# round
四舍五⼊到⼩数后两位
df_all["每平⽶租⾦(元)"] = round(df_all["房租总⾦额"] / df_all["总⾯积"], 2)
df_all
区域房租总⾦额总⾯积每平⽶租⾦(元)
0东城394555027353.99144.24
1丰台440489350922.7986.50
2亦庄开发区131840015995.5382.42
3⼤兴228695035884.1563.73
4房⼭72675015275.4147.58
5昌平252151535972.9270.09
6朝阳20281396166921.72121.50
7海淀727935057210.39127.24
8⽯景⼭115650013956.6782.86
9西城563697537141.64151.77
10通州271960046625.2358.33
11门头沟104830020258.2051.75
12顺义219090033668.9765.07
区域房租总⾦额总⾯积每平⽶租⾦(元)
# ,
合并两个表格默认内拼接模式
df_merge = pd.merge(new_df, df_all)
#
降序排列
df_merge.sort_values(by="每平⽶租⾦(元)", ascending=False)
区域数量房租总⾦额总⾯积每平⽶租⾦(元)
9西城442563697537141.64151.77
0东城282394555027353.99144.24
7海淀605727935057210.39127.24
6朝阳159720281396166921.72121.50
1丰台577440489350922.7986.50
8⽯景⼭175115650013956.6782.86
2亦庄开发区147131840015995.5382.42
5昌平347252151535972.9270.09
12顺义297219090033668.9765.07
3⼤兴362228695035884.1563.73
10通州477271960046625.2358.33
11门头沟285104830020258.2051.75
4房⼭18072675015275.4147.58
#
图形可视化
num = df_merge["数量"]
price = df_merge["每平⽶租⾦(元)"]
lx = df_merge["区域"]
l = [i for i in range(13)]
# ,
创建画布承接对象
fig = plt.figure(figsize=(10, 8), dpi=100)
#
显⽰折线图
ax1 = fig.add_subplot(111) # 1*1,1
把画布分为放在位置
ax1.plot(l, price, "or-", label="价格")
# forenumerate()
在循环⾥函数是⼀个枚举函数,
# ()
可⽤于将⼀个可遍历的数据对象如列表、元组或字符串
#
组合为⼀个索引序列,同时列出数据和数据下标。
# zip()
将可遍历的俩数据结构对应元素打包成⼀个个元组返回
for i, (_x, _y) in enumerate(zip(l, price)):
# x, y(),
传⼊的坐标数据值以及需要标注的值
plt.text(_x+0.2, _y, price[i])
ax1.set_ylim([0, 160])
ax1.set_ylabel("价格")
plt.legend(loc="upper right")
#
显⽰条形图
ax2 = ax1.twinx()
plt.bar(l, num, label="数量", alpha=0.2, color="green")
ax2.set_ylabel("数量")
plt.legend(loc="upper left")
plt.xticks(l, lx)
plt.show()
#
查看房屋的最⼤⾯积和最⼩⾯积
print('房屋最⼤⾯积是%d平⽶'%(file_data['⾯积(㎡)'].max()))
print('房屋最⼩⾯积是%d平⽶'%(file_data['⾯积(㎡)'].min()))
#
查看房租的最⾼值和最⼩值
print('房租最⾼价格为每⽉%d元'%(file_data['价格(元/⽉)'].max()))
print('房屋最低价格为每⽉%d元'%(file_data['价格(元/⽉)'].min()))
房屋最⼤⾯积是1133平⽶
房屋最⼩⾯积是11平⽶
房租最⾼价格为每⽉150000元
房屋最低价格为每⽉566元
#
⾯积划分
area_divide = [1, 30, 50, 70, 90, 120, 140, 160, 1200]
area_cut = pd.cut(list(file_data["⾯积(㎡)"]), area_divide)
area_cut_num = area_cut.describe()
area_cut_num
countsfreqs
categories
(1, 30]410.007102
(30, 50]7100.122986
categories
(50, 70]15660.271263
(70, 90]10940.189503
(90, 120]10820.187424
(120, 140]3810.065997
(140, 160]2740.047462
(160, 1200]6250.108263
countsfreqs
#
图像可视化
area_per = (area_cut_num["freqs"].values)*100
labels = ['30平⽶以下', '30-50平⽶', '50-70平⽶', '70-90平⽶',
'90-120平⽶','120-140平⽶','140-160平⽶','160平⽶以上']
plt.figure(figsize=(15, 8), dpi=100)
plt.pie(x=area_per, labels=labels, autopct="%.2f %%")
plt.legend()
plt.show()
#!/usr/bin/env python
# coding: utf-8
# Table of Contents
#
平均租⾦分析
# In[576]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
#
设置中⽂字体
from pylab import mpl
mpl.rcParams["-serif"] = ["SimHei"]
# #
获取数据
# In[577]:
file_data = pd.read_csv("")
file_data
# In[578]:
#
看⼀看数据的⼤概情况
file_data.describe()
# #
数据基本处理
# ##
重复值和空值处理
# In[579]:
#
重复值
# file_ated()
#dataframeshape
通过观察的来观测结果
file_data = file_data.drop_duplicates()
file_data.shape
# In[580]:
#
空值处理
file_data = file_data.dropna()
file_data.shape
# ##
数据转换类型
# ###
⾯积数据类型转换
# In[581]:
file_data.head()
# In[582]:
#
单个值实现
# ,
切⽚取值去掉字符串后两位
file_data["⾯积(㎡)"].values[0][:-2]
# In[583]:
#
创建⼀个空的数组
data_new = np.array([])
data_area = file_data["⾯积(㎡)"].values
for i in data_area:
data_new = np.append(data_new, np.array(i[:-2]))
# data_new
转换中的数据类型
data_new = data_new.astype(np.float64)
#
替换
file_data.loc[:, "⾯积(㎡)"] = data_new
file_data.head()
# ###
户型表达⽅式转换
# In[584]:
#
取出需要修改的列
house_data = file_data["户型"]
#
创建⼀个新数组
temp_list = []
# repalce,
⽤⽅法更改并放⼊新的数组中
for i in house_data:
# print(i)
new_info = i.replace("房间", "室")
temp_list.append(new_info)
#
替换数据表中原来的数据
file_data.loc[:, "户型"] = temp_list
file_data
# #
图标分析
# ##
房源数量、位置分布分析
# In[585]:
# unique()
⽅法去重
file_data["区域"].unique()
# In[586]:
new_df = pd.DataFrame({"区域":file_data["区域"].unique(),
"数量":[0]*13})
new_df
# In[587]:
#
获取每个区域房源数量
# :
分组聚合按照区域进⾏分组
# count(),
聚合统计每个区域房源数量
area_count = file_data.groupby(by="区域").count()
# dataframe
将上⾯的的取值赋值数量列
new_df["数量"] = area_count.values
# ##
户型数量分析
# In[588]:
house_data = file_data["户型"]
house_data = file_data["户型"]
house_data.head()
# In[589]:
def all_house(arr):
"""统计户型的数量"""
# , numpy
去重转化为了字符串数组
key = np.unique(arr)
#
创建新字典储存数据
result = {}
for k in key:
# arr key
判断中的每⼀个值是否与中的第⼀个值相同
# boolseries
并返回类型的
mask = (arr == k)
# true, false
就保留就去除
arr_new = arr[mask]
# masktrue
获取中的个数
v = arr_new.size
# k, arr_newsize
使⽤作为索引的作为值
result[k] = v
return result
house_info = all_house(house_data)
house_info
# In[590]:
#
去掉统计数量较少的值
house_data = dict((key, value) for key,
value in house_info.items() if value > 50)
# In[591]:
show_houses = pd.DataFrame({"户型": [x for x in house_data.keys()],
"数量": [x for x in house_data.values()]})
show_houses
# In[592]:
#
图形展⽰房屋类型
house_type = show_houses["户型"]
house_type_num = show_houses["数量"]
plt.barh(range(11), house_type_num)
plt.yticks(range(11), house_type)
plt.xlim(0, 2500)
plt.title("北京市各区域租房数量统计")
plt.xlabel("数量")
plt.ylabel("房屋类型")
#
给每个条上⾯添加具体数字
for x, y in enumerate(house_type_num):
# print(x, y)
plt.text(y+0.5, x-0.2, "%s" %y)
plt.show()
# ##
平均租⾦分析
# In[593]:
df_all = pd.DataFrame({"区域": file_data["区域"].unique(),
"房租总⾦额": [0]*13,
"总⾯积": [0]*13})
df_all.head()
# In[594]:
# series,
⽅式按区域分组价格叠加聚合
sum_price = file_data["价格(元/⽉)"].groupby(file_data["区域"]).sum()
# series,
⽅式按区域分组⾯积叠加聚合
sum_area = file_data["⾯积(㎡)"].groupby(file_data["区域"]).sum()
#
赋值
df_all["房租总⾦额"] = sum_price.values
df_all["总⾯积"] = sum_area.values
df_all
# In[595]:
#
计算各个区域每平⽅⽶的房租
# round
四舍五⼊到⼩数后两位
df_all["每平⽶租⾦(元)"] = round(df_all["房租总⾦额"] / df_all["总⾯积"], 2)
df_all
# In[596]:
# ,
合并两个表格默认内拼接模式
df_merge = pd.merge(new_df, df_all)
#
降序排列
df_merge.sort_values(by="每平⽶租⾦(元)", ascending=False)
# In[597]:
#
图形可视化
num = df_merge["数量"]
price = df_merge["每平⽶租⾦(元)"]
lx = df_merge["区域"]
l = [i for i in range(13)]
# ,
创建画布承接对象
fig = plt.figure(figsize=(10, 8), dpi=100)
#
显⽰折线图
ax1 = fig.add_subplot(111) # 1*1,1
把画布分为放在位置
ax1.plot(l, price, "or-", label="价格")
# forenumerate()
在循环⾥函数是⼀个枚举函数,
# ()
可⽤于将⼀个可遍历的数据对象如列表、元组或字符串
#
组合为⼀个索引序列,同时列出数据和数据下标。
# zip()
将可遍历的俩数据结构对应元素打包成⼀个个元组返回
for i, (_x, _y) in enumerate(zip(l, price)):
# x, y(),
传⼊的坐标数据值以及需要标注的值
plt.text(_x+0.2, _y, price[i])
ax1.set_ylim([0, 160])
ax1.set_ylabel("价格")
plt.legend(loc="upper right")
#
显⽰条形图
ax2 = ax1.twinx()
plt.bar(l, num, label="数量", alpha=0.2, color="green")
ax2.set_ylabel("数量")
plt.legend(loc="upper left")
plt.xticks(l, lx)
plt.show()
# In[598]:
#
查看房屋的最⼤⾯积和最⼩⾯积
print('房屋最⼤⾯积是%d平⽶'%(file_data['⾯积(㎡)'].max()))
print('房屋最⼩⾯积是%d平⽶'%(file_data['⾯积(㎡)'].min()))
#
查看房租的最⾼值和最⼩值
print('房租最⾼价格为每⽉%d元'%(file_data['价格(元/⽉)'].max()))
print('房屋最低价格为每⽉%d元'%(file_data['价格(元/⽉)'].min()))
# In[599]:
#
⾯积划分
area_divide = [1, 30, 50, 70, 90, 120, 140, 160, 1200]
area_cut = pd.cut(list(file_data["⾯积(㎡)"]), area_divide)
area_cut_num = area_cut.describe()
area_cut_num
# In[600]:
#
图像可视化
area_per = (area_cut_num["freqs"].values)*100
labels = ['30平⽶以下', '30-50平⽶', '50-70平⽶', '70-90平⽶',
'90-120平⽶','120-140平⽶','140-160平⽶','160平⽶以上']
plt.figure(figsize=(15, 8), dpi=100)
plt.pie(x=area_per, labels=labels, autopct="%.2f %%")
plt.legend()
plt.show()
电焊机多少钱-股票分时图白色成交量

更多推荐
大兴房屋出租
发布评论