首页 > 编程语言 >python爬虫——深圳市租房信息数据分析

python爬虫——深圳市租房信息数据分析

时间:2023-06-10 22:26:48浏览次数:41  
标签:数据分析 plt area python 户型 爬虫 房源 小区 print

一、选题背景

因为深圳经济非常不错,想必想要去深圳工作的人也不少。衣食住行是生活的基本需求。衣和食好解决,不喜欢的衣服可以买新的,不好吃的食物可以换一家吃。可是在住宿上,买房和租房的置换成本都相对较高,因此房源选择尤为慎重。作为目前买不起房的人自然是以租房为主,但是租房我们一般是通过中介或者是网站来实现租房的需求。以我通过python以行政区为单位,对比分析各行政区房源数量分布情况的爬起,就可以可视化的去比较多个房源对于租房也更有利,可以说是更快更方便的找到各个方面都符合自己心意房子。

二、主题式网络爬虫设计方案

1.主题式网络爬虫名称

深圳各个区域租房信息爬取

2.主题式网络爬虫爬取的内容与数据特征分析

D盘中有一文件“house_info.csv”保存了租房信息数据按以下要求进行分析:

导入数据并对数据进行预处理;
分析各行政区的房源分布情况;
以小区为单位,分析各小区的房源数量;
对整个租房数据的户型进行分析;
分析租房数据的租金分布情况;

3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)

思路:查看网页的结构,定位目标数据的位置,爬取数据,将数据进行清洗,最后将清洗后的数据进行可视化。

难点:如何解决数据分析缺少模块,如何爬取多个页面的数据,请求异常的处理

三、主题页面的结构特征分析

1.主题页面的结构与特征分析

目标内容界面:

 

 2.Htmls 页面解析

 

3.节点(标签)查找方法与遍历方法

 打开网页的源码,然后用鼠标检查工具找打对应大概位置进行查找,先找大标签,再找其中的小标签。
我们这里把要获取的数据找着之后,然后在元素中对应位置分析。

 

四、网络爬虫程序设计

1.数据爬取与采集

 以下为爬取过程代码

 1)导入数据

 house_info.csv的部分如下

 将 house_info.csv文件导入

 1 import pandas as pd
 2 import numpy as np
 3 detail = pd.read_csv(r"D:\house_info.csv", encoding="utf-8")
 4 
 5 # print(detail.head())
 6 
 7 print("清洗前缺失值的数目:\n",detail.isnull().sum())
 8 
 9 # 删除detail的缺失值
10 
11 d1 = detail.dropna(axis=0, how="any")
12 # 以d1 为数据源
13 
14 # print(d1)
15 
16 print("清洗后缺失值的数目:\n",d1.isnull().sum())
17 
18 # 从前向后查找和判断是否有重复值
19 
20 print("重复值:",d1.duplicated().sum())

 

 

2)以下是各行政区房源分布

 1 area = set(d1["位置1"])
 2 
 3 # 统计多少个行政区
 4 
 5 print(area)
 6 
 7 # 创建一个DataFrame 对象,筛选需要数据{行政区,房源数量}
 8 
 9 d2 = pd.DataFrame({'行政区':d1["位置1"].unique(),'房源数量':[0]*len(area)})
10 print(d2)
11 print('-'*20)
12 
13 # groupby统计房源数量,并从小到大排序
14 
15 groupby_area = d1.groupby(by="位置1").count()  
16 print(groupby_area)
17 d2["房源数量"] = groupby_area.values
18 d2 = d2.sort_values(by=["房源数量"],ascending=True)
19 print(d2)

 

 3).以下为小区房源数量TOP10代码以及运行结果

 
 1 area_small = set(d1["小区"]) 
 2 
 3 # 统计多少个小区
 4 # print(area_small)
 5 
 6 
 7 # 创建一个DataFrame 对象,筛选需要数据{小区,小区房源数量}
 8 
 9 d_samll = pd.DataFrame({"小区":d1["小区"].unique(),"小区房源数量":[0]*len(area_small) })
10 print(d_samll)
11 print('-'*40)
12 
13 # groupby统计小区房源数量,并从大到小排序
14 
15 groupby_area = d1.groupby(by="小区").count()  
16 
17 # print(groupby_area)
18 
19 d_samll["小区房源数量"] = groupby_area.values
20 d_samll = d_samll.sort_values(by=["小区房源数量"],ascending=False)
21 print(d_samll)
22 d_top10 =  d_samll.head(10)
23 
24 # 取前十
25 
26 print("小区房源数量TOP10是:\n",d_top10)

 

 

4).以下是户型TOP10分布代码以及运行结果

 1 house_type = set(d1["户型"])
 2 # 统计多少个户型
 3 
 4 print(house_type)
 5 
 6 
 7 # 创建一个DataFrame 对象,筛选需要数据{户型,户型数量}
 8 
 9 d_house = pd.DataFrame({"户型":d1["户型"].unique(),"户型数量":[0]*len(house_type) })
10 print(d_house)
11 print('-'*40)
12 
13 # groupby统计户型数量,并从大到小排序
14 
15 groupby_area = d1.groupby(by="户型").count()  
16 print(groupby_area)
17 d_house["户型数量"] = groupby_area.values
18 d_house = d_house.sort_values(by=["户型数量"],ascending=False)
19 print(d_house)
20 d_top10 =  d_house.head(10)
21 # 取前十
22 print("户型数量TOP10是:\n",d_top10)

 

 

5)以下是租金分布代码以及运行结果

 1 # 对每个行政区,进行租金价格平均分析
 2 # 新建一个DataFrame对象,设置房租总金额和总面积初始值为0
 3 
 4 
 5 print(area)
 6 avg_rent = pd.DataFrame({'行政区':d1["位置1"].unique(),'房租总金额':[0]*len(area),'总面积':[0]*len(area) })
 7 print(avg_rent)
 8 print('-'*40)
 9 
10 
11 # 求总金额和总面积
12 
13 sum_price = d1["价格"].groupby(d1["位置1"]).sum()
14 sum_area = d1["面积"].groupby(d1["位置1"]).sum()
15 avg_rent["房租总金额"] = sum_price.values
16 avg_rent["总面积"] = sum_area.values
17 print(avg_rent) 
18 
19 
20 # 计算各区域每平方米房租价格,并保留2位小数
21 avg_rent['每平方米租金(元)'] = round(avg_rent['房租总金额']/avg_rent['总面积'],2)
22 print(avg_rent)
23 print("*-"*25)
24 
25 
26 # 合并需要的数据
27 rent_merge = pd.merge(d2,avg_rent)
28 rent_merge
29 
30 # print(rent_merge)

 

 

 

  

4.数据分析与可视化

1)各行政区房源分布柱形图

 1 # 绘图
 2 
 3 import matplotlib.pyplot as plt
 4 import matplotlib
 5 matplotlib.rcParams['font.sans-serif']=['SimHei']
 6 matplotlib.rcParams['axes.unicode_minus']=False
 7 
 8 X = d_top10["小区"]
 9 print(X)
10 Y = d_top10["小区房源数量"]
11 print(Y)
12 plt.figure(figsize=(8,6),dpi=300)
13 plt.bar(X, Y, width=0.5, linewidth=2)
14 for i,j in zip(X, Y):
15     
16     plt.text(i, j, "%d" % j, fontsize=12)
17 plt.xlabel("小区")
18 plt.ylabel("小区房源数量")
19 plt.title("小区房源数量TOP10")
20 plt.xticks(rotation=335)
21 plt.savefig(r"C:\Users\烤小鹅\Desktop\小区房源数量TOP10.png",dpi=400)
22 plt.show()

运行后得出以下

 从数据可以看出:从行政区的福田区到龙岗区,房源的数量是逐渐增加的。

2)小区房源数量TOP10

 1 # 绘图
 2 
 3 import matplotlib.pyplot as plt
 4 import matplotlib
 5 matplotlib.rcParams['font.sans-serif']=['SimHei']
 6 matplotlib.rcParams['axes.unicode_minus']=False
 7 
 8 X = d_top10["小区"]
 9 print(X)
10 Y = d_top10["小区房源数量"]
11 print(Y)
12 plt.figure(figsize=(8,6),dpi=300)
13 plt.bar(X, Y, width=0.5, linewidth=2)
14 
15 
16 for i,j in zip(X, Y):
17     plt.text(i, j, "%d" % j, fontsize=12)
18 plt.xlabel("小区")
19 plt.ylabel("小区房源数量")
20 plt.title("小区房源数量TOP10")
21 plt.xticks(rotation=335)
22 plt.savefig(r"C:\Users\烤小鹅\Desktop\小区房源数量TOP10.png",dpi=400)
23 plt.show()

 

运行后得出

 从图可知,小区的房源数量从 丰湖花园到 名仕阁逐渐递减,而且丰湖花园小区房源是其他小区的两倍左右,丰湖花园的房源很多,在该竞争领域很大优势。

3).小区户型TOP10分布

代码如下

 1 # 绘图
 2 
 3 
 4 import matplotlib.pyplot as plt
 5 import matplotlib
 6 matplotlib.rcParams['font.sans-serif']=['SimHei']
 7 matplotlib.rcParams['axes.unicode_minus']=False
 8 
 9 X = d_top10["户型"]
10 # print(X)
11 Y = d_top10["户型数量"]
12 # print(Y)
13 plt.figure(figsize=(12,8),dpi=300)
14 # plt.bar(X, Y, width=0.5, linewidth=2)
15 b = plt.barh(X, Y, height=0.6, linewidth=1)
16 
17 
18 for i in b:
19     plt.text(i.get_width(),i.get_y()+0.2,i.get_width() )
20 plt.ylabel("户型")
21 plt.xlabel("户型数量")
22 plt.title("户型数量TOP10")
23 plt.savefig(r"C:\Users\烤小鹅\Desktop\户型数量TOP10.png",dpi=400)
24 plt.show()

运行后得出以下

 从图可知,众多户型中 5室1卫户型数量远远超过其他户型,可以看出这个户型是很多购买者喜欢的。

 

(4)租金分布图

 1 #绘图
 2 
 3 
 4 import matplotlib
 5 import matplotlib.pyplot as plt
 6 import matplotlib.ticker as mtick
 7 from matplotlib.font_manager import FontProperties
 8 matplotlib.rcParams['font.sans-serif']=['SimHei']
 9 matplotlib.rcParams['axes.unicode_minus']=False
10 num = rent_merge['房源数量']                  
11 # 数量
12 
13 price = rent_merge['每平方米租金(元)']   
14 # 价格
15 
16 
17 X = rent_merge["行政区"]
18 print(X)
19 
20 
21 # Y = rent_merge["房源数量"]
22 # print(Y)
23 fig = plt.figure(figsize=(8,6))
24 axl = fig.add_subplot(111)
25 axl.plot(X, price,'or-',label = '价格')
26 axl.set_ylim([0,210])
27 axl.set_ylabel('价格')
28 for i,j in zip(X, price):
29     plt.text(i, j, "%d" % j, fontsize=16)
30 plt.title("租金分布情况")
31 ax2 = axl.twinx()
32 plt.bar(X,num,width=0.4,color = 'green',label = '数量', linewidth=2)
33 ax2.set_ylabel('数量')
34 ax2.set_ylim([0,2000])
35 
36 
37 for i,j in zip(X, num):
38     plt.text(i, j, "%d" % j, fontsize=16)
39 plt.title("租金分布情况")
40 plt.savefig(r"C:\Users\烤小鹅\Desktop\租金分布情况图.png",dpi=400)
41 plt.show()

得出以下结果

从折线图可以看出,罗湖区与南山区 房源数量比较多,但是租金价格平均是高的,龙岗区的房源数量多而且租金相比其他行政区是价廉的,适合毕业生、求职者去租房。

5.数据持久化

以下为数据持久化代码

 1 import requests
 2   from bs4 import BeautifulSoup
 3   import sqlite3
 4   import pandas as pd
 5   
 6   
 7   response = requests.get(url)
 8  if response.status_code == 200:
 9      print("请求成功")
10  
11      soup = BeautifulSoup(response.content, 'html.parser')
12      table = soup.find('div', attrs={"class": 'chart'})
13      rows = table.find_all('tr')
14  
15      data = []
16    for row in rows:
17          cells = row.find_all('td')
18          if len(cells) == 15:
19              date = cells[0].text
20             Front_Area_1 = cells[1].text
21             # ... 继续提取其他数据
22 
23          
24             data.append([date, Front_Area_1, ...])
25 
26     df = pd.DataFrame(data, columns=['期号', '前区号码1', ...])
27 
28      
29      # 连接到SQLite数据库
30      conn = sqlite3.connect('lottery_data.db')
31      cursor = conn.cursor()
32  
33     
34     # 创建表
35     create_table_query = '''
36      CREATE TABLE IF NOT EXISTS lottery (
37          id INTEGER PRIMARY KEY AUTOINCREMENT,
38          价格 TEXT,
39         面积 TEXT,
40          编号 TEXT,
41          户型 TEXT,
42         楼层 TEXT,
43          位置1 TEXT,
44         位置2 TEXT,
45         小区 TEXT,
46          地铁 TEXT,
47       
48        
49    );
50     '''
51     cursor.execute(create_table_query)
52  
53     
54     # 插入数据
55      insert_query = 'INSERT INTO lottery (期号, 前区号码1, 前区号码2, ..., 开奖日期) VALUES (?, ?, ?, ..., ?);'
56      cursor.executemany(insert_query, df.values.tolist())
57  
58      
59     # 提交事务并关闭连接
60      conn.commit()
61     conn.close()
62  
63     print("数据已保存到数据库")
64  else:
65  print("请求失败")

6.将以上各部分的代码汇总,附上完整程序代码

 (1)爬虫代码部分

 
  1 import pandas as pd
  2 import numpy as np
  3 detail = pd.read_csv(r"D:\house_info.csv", encoding="utf-8")
  4 
  5 
  6 # print(detail.head())
  7 
  8 
  9 print("清洗前缺失值的数目:\n",detail.isnull().sum())
 10 
 11 
 12 # 删除detail的缺失值
 13 
 14 
 15 d1 = detail.dropna(axis=0, how="any")
 16 
 17 
 18 # 以d1 为数据源
 19 
 20 # print(d1)
 21 
 22 print("清洗后缺失值的数目:\n",d1.isnull().sum())
 23 
 24 # 从前向后查找和判断是否有重复值
 25 
 26 print("重复值:",d1.duplicated().sum())
 27 area = set(d1["位置1"])
 28 
 29 
 30 # 统计多少个行政区
 31 
 32 
 33 print(area)
 34 
 35 
 36 # 创建一个DataFrame 对象,筛选需要数据{行政区,房源数量}
 37 
 38 
 39 d2 = pd.DataFrame({'行政区':d1["位置1"].unique(),'房源数量':[0]*len(area)})
 40 print(d2)
 41 print('-'*20)
 42 
 43 
 44 # groupby统计房源数量,并从小到大排序
 45 
 46 
 47 groupby_area = d1.groupby(by="位置1").count()  
 48 print(groupby_area)
 49 d2["房源数量"] = groupby_area.values
 50 d2 = d2.sort_values(by=["房源数量"],ascending=True)
 51 print(d2)
 52 area_small = set(d1["小区"]) 
 53 
 54 
 55 
 56 # 统计多少个小区
 57 # print(area_small)
 58 
 59 
 60 # 创建一个DataFrame 对象,筛选需要数据{小区,小区房源数量}
 61 
 62 
 63 d_samll = pd.DataFrame({"小区":d1["小区"].unique(),"小区房源数量":[0]*len(area_small) })
 64 print(d_samll)
 65 print('-'*40)
 66 
 67 
 68 # groupby统计小区房源数量,并从大到小排序
 69 
 70 
 71 groupby_area = d1.groupby(by="小区").count()  
 72 
 73 # print(groupby_area)
 74 
 75 d_samll["小区房源数量"] = groupby_area.values
 76 d_samll = d_samll.sort_values(by=["小区房源数量"],ascending=False)
 77 print(d_samll)
 78 d_top10 =  d_samll.head(10)
 79 
 80 
 81 # 取前十
 82 
 83 
 84 print("小区房源数量TOP10是:\n",d_top10)
 85 
 86 house_type = set(d1["户型"])
 87 # 统计多少个户型
 88 
 89 
 90 print(house_type)
 91 
 92 
 93 # 创建一个DataFrame 对象,筛选需要数据{户型,户型数量}
 94 
 95 d_house = pd.DataFrame({"户型":d1["户型"].unique(),"户型数量":[0]*len(house_type) })
 96 print(d_house)
 97 print('-'*40)
 98 
 99 # groupby统计户型数量,并从大到小排序
100 
101 groupby_area = d1.groupby(by="户型").count()  
102 print(groupby_area)
103 d_house["户型数量"] = groupby_area.values
104 d_house = d_house.sort_values(by=["户型数量"],ascending=False)
105 print(d_house)
106 d_top10 =  d_house.head(10)
107 # 取前十
108 print("户型数量TOP10是:\n",d_top10)
109 # 对每个行政区,进行租金价格平均分析
110 # 新建一个DataFrame对象,设置房租总金额和总面积初始值为0
111 
112 
113 
114 print(area)
115 avg_rent = pd.DataFrame({'行政区':d1["位置1"].unique(),'房租总金额':[0]*len(area),'总面积':[0]*len(area) })
116 print(avg_rent)
117 print('-'*40)
118 
119 
120 
121 # 求总金额和总面积
122 
123 sum_price = d1["价格"].groupby(d1["位置1"]).sum()
124 sum_area = d1["面积"].groupby(d1["位置1"]).sum()
125 avg_rent["房租总金额"] = sum_price.values
126 avg_rent["总面积"] = sum_area.values
127 print(avg_rent) 
128 
129 
130 
131 # 计算各区域每平方米房租价格,并保留2位小数
132 avg_rent['每平方米租金(元)'] = round(avg_rent['房租总金额']/avg_rent['总面积'],2)
133 print(avg_rent)
134 print("*-"*25)
135 
136 
137 # 合并需要的数据
138 rent_merge = pd.merge(d2,avg_rent)
139 rent_merge
140 
141 
142 # print(rent_merge)

(2)数据可视化部分代码

  1 # 绘图
  2 
  3 
  4 import matplotlib.pyplot as plt
  5 import matplotlib
  6 matplotlib.rcParams['font.sans-serif']=['SimHei']
  7 matplotlib.rcParams['axes.unicode_minus']=False
  8 
  9 X = d_top10["小区"]
 10 print(X)
 11 Y = d_top10["小区房源数量"]
 12 print(Y)
 13 plt.figure(figsize=(8,6),dpi=300)
 14 plt.bar(X, Y, width=0.5, linewidth=2)
 15 for i,j in zip(X, Y):
 16     
 17     plt.text(i, j, "%d" % j, fontsize=12)
 18 plt.xlabel("小区")
 19 plt.ylabel("小区房源数量")
 20 plt.title("小区房源数量TOP10")
 21 plt.xticks(rotation=335)
 22 plt.savefig(r"C:\Users\烤小鹅\Desktop\小区房源数量TOP10.png",dpi=400)
 23 plt.show()
 24 
 25 
 26 # 绘图
 27 
 28 import matplotlib.pyplot as plt
 29 import matplotlib
 30 matplotlib.rcParams['font.sans-serif']=['SimHei']
 31 matplotlib.rcParams['axes.unicode_minus']=False
 32 
 33 X = d_top10["小区"]
 34 print(X)
 35 Y = d_top10["小区房源数量"]
 36 print(Y)
 37 plt.figure(figsize=(8,6),dpi=300)
 38 plt.bar(X, Y, width=0.5, linewidth=2)
 39 
 40 
 41 for i,j in zip(X, Y):
 42     plt.text(i, j, "%d" % j, fontsize=12)
 43 plt.xlabel("小区")
 44 plt.ylabel("小区房源数量")
 45 plt.title("小区房源数量TOP10")
 46 plt.xticks(rotation=335)
 47 plt.savefig(r"C:\Users\烤小鹅\Desktop\小区房源数量TOP10.png",dpi=400)
 48 plt.show()
 49 
 50 # 绘图
 51 
 52 
 53 import matplotlib.pyplot as plt
 54 import matplotlib
 55 matplotlib.rcParams['font.sans-serif']=['SimHei']
 56 matplotlib.rcParams['axes.unicode_minus']=False
 57 
 58 X = d_top10["户型"]
 59 # print(X)
 60 Y = d_top10["户型数量"]
 61 # print(Y)
 62 plt.figure(figsize=(12,8),dpi=300)
 63 # plt.bar(X, Y, width=0.5, linewidth=2)
 64 b = plt.barh(X, Y, height=0.6, linewidth=1)
 65 
 66 
 67 for i in b:
 68     plt.text(i.get_width(),i.get_y()+0.2,i.get_width() )
 69 plt.ylabel("户型")
 70 plt.xlabel("户型数量")
 71 plt.title("户型数量TOP10")
 72 plt.savefig(r"C:\Users\烤小鹅\Desktop\户型数量TOP10.png",dpi=400)
 73 plt.show()
 74 
 75 
 76 #绘图
 77 
 78 import matplotlib
 79 import matplotlib.pyplot as plt
 80 import matplotlib.ticker as mtick
 81 from matplotlib.font_manager import FontProperties
 82 matplotlib.rcParams['font.sans-serif']=['SimHei']
 83 matplotlib.rcParams['axes.unicode_minus']=False
 84 num = rent_merge['房源数量']                 
 85 # 数量
 86 
 87 
 88 price = rent_merge['每平方米租金(元)'] 
 89 # 价格
 90 
 91 
 92 
 93 X = rent_merge["行政区"]
 94 print(X)
 95 # Y = rent_merge["房源数量"]
 96 # print(Y)
 97 fig = plt.figure(figsize=(8,6))
 98 axl = fig.add_subplot(111)
 99 axl.plot(X, price,'or-',label = '价格')
100 axl.set_ylim([0,210])
101 axl.set_ylabel('价格')
102 
103 
104 for i,j in zip(X, price):
105     plt.text(i, j, "%d" % j, fontsize=16)
106 plt.title("租金分布情况")
107 ax2 = axl.twinx()
108 plt.bar(X,num,width=0.4,color = 'green',label = '数量', linewidth=2)
109 ax2.set_ylabel('数量')
110 ax2.set_ylim([0,2000])
111 
112 
113 for i,j in zip(X, num):
114     plt.text(i, j, "%d" % j, fontsize=16)
115 plt.title("租金分布情况")
116 plt.savefig(r"C:\Users\锦樽\Desktop\租金分布情况图.png",dpi=400)
117 plt.show()

(3)数据持久化代码

 1 import requests
 2   from bs4 import BeautifulSoup
 3   import sqlite3
 4   import pandas as pd
 5   
 6   
 7   response = requests.get(url)
 8  if response.status_code == 200:
 9      print("请求成功")
10  
11      soup = BeautifulSoup(response.content, 'html.parser')
12      table = soup.find('div', attrs={"class": 'chart'})
13      rows = table.find_all('tr')
14  
15      data = []
16    for row in rows:
17          cells = row.find_all('td')
18          if len(cells) == 15:
19              date = cells[0].text
20             Front_Area_1 = cells[1].text
21             # ... 继续提取其他数据
22 
23          
24             data.append([date, Front_Area_1, ...])
25 
26     df = pd.DataFrame(data, columns=['期号', '前区号码1', ...])
27 
28      
29      # 连接到SQLite数据库
30      conn = sqlite3.connect('lottery_data.db')
31      cursor = conn.cursor()
32  
33     
34     # 创建表
35     create_table_query = '''
36      CREATE TABLE IF NOT EXISTS lottery (
37          id INTEGER PRIMARY KEY AUTOINCREMENT,
38          价格 TEXT,
39         面积 TEXT,
40          编号 TEXT,
41          户型 TEXT,
42         楼层 TEXT,
43          位置1 TEXT,
44         位置2 TEXT,
45         小区 TEXT,
46          地铁 TEXT,
47       
48        
49    );
50     '''
51     cursor.execute(create_table_query)
52  
53     
54     # 插入数据
55      insert_query = 'INSERT INTO lottery (期号, 前区号码1, 前区号码2, ..., 开奖日期) VALUES (?, ?, ?, ..., ?);'
56      cursor.executemany(insert_query, df.values.tolist())
57  
58      
59     # 提交事务并关闭连接
60      conn.commit()
61     conn.close()
62  
63     print("数据已保存到数据库")
64  else:
65  print("请求失败")

五、总结以及遇到的问题

对本课程设计的整体完成情况做一个总结,通过这次利用python代码爬虫爬取网站数据并分析,得出(1).从行政区的福田区到龙岗区,房源的数量是逐渐增加的。(2).小区的房源数量从 丰湖花园到 名仕阁逐渐递减,而且丰湖花园小区房源是其他小区的两倍左右,丰湖花园的房源很多,在该竞争领域很大优势。(3).众多户型中 5室1卫户型数量远远超过其他户型,可以看出这个户型是很多购买者喜欢的。(4)从折线图可以看出,罗湖区与南山区 房源数量比较多,但是租金价格平均是高的,龙岗区的房源数量多而且租金相比其他行政区是价廉的,适合毕业生、求职者去租房。所以要是想要到深圳就业就可以考虑在龙岗区租房子,价格实惠,而且房源数量也很多。

这让我掌握了最基础的数据分析知识,体验了数据分析的乐趣,包括数据预处理,异常值的查找等,数据的合并和分组及聚合,还有数据可视化来直观的观察,分析数据,更加直观的获得自己想要的信息,也变得更加便捷。同样大多数人面临这样一个挑战:我们认识到数据可视化的必要性,但缺乏数据可视化方面的专业技能。部分原因可以归结于,数据可视化只是数据分析过程中的一个环节,数据分析师可能将精力花在获取数据、清洗整理数据、分析数据、建立模型。

问题:由于anaconda之前下载的版本问题,数据分析运行时缺少很多模块,根本运行不出来,我在cmd中用“pip list”查询模块想看看缺少什么模块,但是查询出来的结果并不乐观,可以说是基本上的模块都没有,想要安装运行所需要的模块也一直是安装失败。在查询“python”表示是安装成功,说明不是python的问题。之后在网上查询了才知道是我的anaconda版本问题。我将原本的anaconda彻底卸载(如果没有彻底卸载新安装的其他版本的anaconda也是不能使用的)通过“清华大学开源镜像网站”,重新下载了anaconda3-2021.11版本,之后再在cmd中查询现有的模块,但是还是缺少了两个模块,根据上网所查的知识安装了所需模块。折腾了许久之后终于解决了运行问题。

 

 

 

 

 

 

标签:数据分析,plt,area,python,户型,爬虫,房源,小区,print
From: https://www.cnblogs.com/zxyq/p/17472065.html

相关文章

  • python爬虫------------旅游的地点的爬取和可视化
    1.选题背景我国旅游行业的极速发展,因为之前疫情原因,使得国内旅游成为新风潮,由于国内疫情解封,使得中国成为最先开放旅游的国家,本次项目可视化就是分析国内旅游的数据,分析适合出行旅游的时间与地点信息.2.设计方案 1.向目标网络发送请求   2.获取数据网页源码   3.筛......
  • python爬虫------------旅游的地点的爬取和可视化 2
    随笔-2  文章-0  评论-0  阅读- 55python爬虫------------旅游的地点的爬取和可视化  1.选题背景我国旅游行业的极速发展,因为之前疫情原因,使得国内旅游成为新风潮,由于国内疫情解封,使得中国成为最先开放旅游的国家,本次项目可视化就是分析国内旅游......
  • python日记-os、sys学习
    OS模块:os模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。至今位置用到的os.path.abspath(path)  返回绝对路径;linux:(环境变量)os.environ['USER']:当前使用用户。os.environ['LC_COLLATE']:路径扩展的结果排序时的字母顺序。......
  • Python Joblib库使用学习总结
    实践环境python3.6.2Joblib简介Joblib是一组在Python中提供轻量级流水线的工具。特别是:函数的透明磁盘缓存和延迟重新计算(记忆模式)简单易用的并行计算Joblib已被优化得很快速,很健壮了,特别是在大数据上,并对numpy数组进行了特定的优化。主要功能输出值的透明快速磁盘......
  • python网络爬虫课程设计--探索Taylor Swift歌词
    python网络爬虫课程设计--探索TaylorSwift歌词一、选题的背景泰勒·斯威夫特(TaylorSwift),1989年12月13日出生于美国宾夕法尼亚州,美国乡村音乐、流行音乐创作女歌手、演员、慈善家。 2006年,与独立唱片公司大机器唱片签约,推出首支单曲《TimMcGraw》与发行首张同名专辑《Taylor......
  • v831开发日记-交叉编译之python-build解析
    python部分#!/usr/bin/envpython#-*-coding=utf-8-*-##@filefromhttps://github.com/Neutree/c_cpp_project_framework#@authorneucrack#@licenseApache2.0##这段代码使用Python语言,导入了sys和os模块。它定义了一个名为sdk_env_name的变量,其值为"LIBMAIX_......
  • 【Python】在同一图形中的绘制多个子图
    1.引言有时我们需要并排绘制两个图形,这不仅是为了更好地利用空间,而且主要是因为为了更加直观地对比分析数据。其实在python中可以利用subplot来实现上述功能。闲话少说,我们直接开始吧!2.准备工作这里,我们不妨先来举个例子,比方说,我们正在分析一家出租车公司的出行分布,假设我们想知......
  • 写了一个下载图片和视频的python小工具
    谁先掌握了AI,谁就掌握了未来的“权杖”。在网上冲浪时,总会遇到一些好看的视频和图片,情不自禁地想“据为己有”。于是,就有了下载图片和视频的需求。浏览器插件工欲善其事,必先利其器。要做一件事,首先得找到对应的工具。下载网络图片或视频,当然首选浏览器插件了。使用Micr......
  • 实验六 turtle绘图与python库应用编程体验
    task1_1实验源码:fromturtleimport*defmove(x,y):'''画笔移动到坐标(x,y)处'''penup()goto(x,y)pendown()defdraw(n,size=100):'''绘制边长为size的正n变形'''foriinrange(n):......
  • Python潮流周刊#6:Python 3.12 有我贡献的代码!
    你好,我是猫哥。这里记录每周值得分享的Python及通用技术内容,部分为英文,已在小标题注明。(标题取自其中一则分享,不代表全部内容都是该主题,特此声明。)首发于我的博客,https://pythoncat.top/posts/2023-06-10-weekly6......