本篇博客主要参考了《Python 数据分析与应用 :从数据获取到可视化》这本书,数据来源是通过爬虫爬取链家网的租房信息,可以参考我的另一篇博客python正则表达式爬取链家租房信息
数据读取
import pandas as pd
import numpy as np
# 读取北京租房信息
file_path = open('D:/文件/python/python练习/11_网络爬虫/lianjiazufang.csv')
file_data = pd.read_csv(file_path)
file_data
地区 | 小区名称 | 户型 | 面积(㎡) | 价格(元/月) | |
---|---|---|---|---|---|
0 | 海淀 | 永定路85号院 2室1厅 南/北 | 2室1厅1卫 | 45 | 4500 |
1 | 朝阳 | 整租·华贸城 1室1厅 东南 | 1室1厅2卫 | 53 | 6800 |
2 | 丰台 | 整租·六里桥小区 2室1厅 南/北 | 2室1厅1卫 | 61 | 5500 |
3 | 朝阳 | 北花园小区 1室0厅 南 | 1室0厅1卫 | 52 | 4100 |
4 | 顺义 | 幸福东区 3室1厅 东南 | 3室1厅1卫 | 94 | 4300 |
5 | 朝阳 | 团结湖北五条 1室1厅 南 | 1室1厅1卫 | 40 | 5400 |
6 | 东城 | 整租·管村26号院 2室1厅 南/北 | 2室1厅1卫 | 69 | 5000 |
7 | 大兴 | 新凤小区 3室1厅 南/北 | 3室1厅1卫 | 95 | 2000 |
8 | 海淀 | 整租·北三环中路甲69号院 2室1厅 南/北 | 2室1厅1卫 | 59 | 6800 |
9 | 朝阳 | 整租·安贞西里 1室1厅 南 | 1室1厅1卫 | 42 | 5000 |
10 | 海淀 | 整租·月季园 3室1厅 东 | 3室1厅1卫 | 61 | 8600 |
11 | 朝阳 | 整租·电建南院 2室1厅 南/北 | 2室1厅1卫 | 69 | 5600 |
12 | 朝阳 | 整租·安贞西里 2室1厅 南/北 | 2室1厅1卫 | 65 | 6500 |
13 | 朝阳 | 整租·惠新里小区 2室1厅 南/北 | 2室1厅1卫 | 40 | 5500 |
14 | 昌平 | 整租·华龙苑中里 2室1厅 东/北 | 2室1厅1卫 | 53 | 5500 |
15 | 海淀 | 燕北园 3室1厅 南/北 | 3室1厅1卫 | 80 | 7500 |
16 | 大兴 | 兴海家园日苑 1室1厅 南/北 | 1室1厅1卫 | 65 | 4000 |
17 | 朝阳 | 整租·胜古南里 2室1厅 东南 | 2室1厅1卫 | 53 | 6300 |
18 | 顺义 | 金地未未来 2室1厅 西 | 2室1厅2卫 | 42 | 3500 |
19 | 朝阳 | 柏林爱乐二期 1室1厅 东北 | 1室1厅1卫 | 58 | 5500 |
20 | 丰台 | 整租·葛村西里 2室1厅 南/北 | 2室1厅1卫 | 52 | 4200 |
21 | 丰台 | 整租·角门东里 2室1厅 南 | 2室1厅1卫 | 60 | 5500 |
22 | 昌平 | 龙禧苑一区 3室1厅 南/北 | 3室1厅1卫 | 105 | 5999 |
23 | 海淀 | 车道沟南里 1室1厅 南 | 1室1厅1卫 | 15 | 2800 |
24 | 石景山 | 青年公寓 1室1厅 南 | 1室1厅1卫 | 45 | 3100 |
25 | 丰台 | 整租·中建一局北院 2室1厅 南 | 2室1厅1卫 | 78 | 4800 |
26 | 朝阳 | 整租·朝阳无限 1室1厅 南 | 1室1厅1卫 | 68 | 7300 |
27 | 朝阳 | 整租·花园闸小区 2室1厅 南/北 | 2室1厅1卫 | 57 | 4800 |
28 | 西城 | 百万庄1号院 2室1厅 南/北 | 2室1厅1卫 | 63 | 6500 |
29 | 顺义 | 整租·蓝星花园 1室0厅 西 | 1室0厅1卫 | 36 | 3300 |
... | ... | ... | ... | ... | ... |
2927 | 海淀 | 整租·双紫小区 2室1厅 南 | 2室1厅2卫 | 91 | 9000 |
2928 | 门头沟 | 整租·霁月园 2室1厅 南/北 | 2室1厅1卫 | 87 | 3900 |
2929 | 朝阳 | 整租·半岛国际公寓 2室1厅 南/北 | 2室1厅1卫 | 109 | 13000 |
2930 | 朝阳 | 地杰长安驿 1室0厅 西 | 1室0厅1卫 | 44 | 8000 |
2931 | 朝阳 | 整租·八里庄南里 1室1厅 南 | 1室1厅1卫 | 42 | 5300 |
2932 | 朝阳 | 整租·国际友谊花园 1室1厅 北 | 1室1厅1卫 | 86 | 8800 |
2933 | 昌平 | 整租·教育局宿舍 3室1厅 南/北 | 3室1厅1卫 | 60 | 3800 |
2934 | 朝阳 | 望京新城 2室1厅 西南 | 2室1厅1卫 | 106 | 9500 |
2935 | 丰台 | 整租·建国街一里 2室1厅 南/北 | 2室1厅1卫 | 60 | 4000 |
2936 | 海淀 | 整租·双榆树北里 2室1厅 南 | 2室1厅1卫 | 57 | 8800 |
2937 | 朝阳 | 北京像素南区 1房间 西南 | 1房间1卫 | 44 | 4400 |
2938 | 丰台 | 整租·西罗园南里 2室1厅 南/北 | 2室1厅1卫 | 74 | 5600 |
2939 | 昌平 | 整租·宁馨苑 2室1厅 南/北 | 2室1厅1卫 | 101 | 5000 |
2940 | 海淀 | 整租·半壁店六建宿舍 1室1厅 南 | 1室1厅1卫 | 41 | 4800 |
2941 | 海淀 | 整租·牡丹园东里 1室1厅 南 | 1室1厅1卫 | 40 | 6700 |
2942 | 海淀 | 整租·新科祥园 2室1厅 东南 | 2室1厅1卫 | 83 | 16200 |
2943 | 石景山 | 整租·西井小区一区 2室1厅 东 | 2室1厅1卫 | 50 | 4500 |
2944 | 朝阳 | 凤凰城三期 1室1厅 东/西 | 1室1厅1卫 | 79 | 13000 |
2945 | 西城 | 马甸南村 2室1厅 东北 | 2室1厅1卫 | 64 | 8500 |
2946 | 房山 | 整租·长阳国际城二区 2室1厅 南 | 2室1厅1卫 | 80 | 3900 |
2947 | 丰台 | 整租·卢沟桥南里 3室1厅 南/北 | 3室1厅1卫 | 74 | 4200 |
2948 | 通州 | 格兰晴天 3室1厅 南/北 | 3室1厅2卫 | 133 | 7000 |
2949 | 海淀 | 整租·航天社区 1室1厅 南 | 1室1厅1卫 | 44 | 7500 |
2950 | 通州 | 玉桥东路19号院 2室1厅 南/北 | 2室1厅1卫 | 90 | 3600 |
2951 | 通州 | 玉桥西里70号院 2室1厅 南/北 | 2室1厅1卫 | 89 | 3800 |
2952 | 大兴 | 整租·中建国际港 3室2厅 南/北 | 3室2厅2卫 | 123 | 7800 |
2953 | 通州 | 靓景明居 2室1厅 南/北 | 2室1厅1卫 | 69 | 4200 |
2954 | 顺义 | 华英园 2室1厅 南/北 | 2室1厅1卫 | 100 | 3900 |
2955 | 朝阳 | 整租·建国路100号 2室1厅 南 | 2室1厅1卫 | 61 | 8500 |
2956 | 大兴 | 整租·宏大南园 3室1厅 南/北 | 3室1厅2卫 | 143 | 7500 |
2957 rows × 5 columns
数据预处理
重复值处理
通过pandas中的duplicated()方法完成,只要有重复的数据就会映射为True。
# 检测重复数据
file_data.duplicated()
0 False
1 False
2 False
3 False
4 False
5 False
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
14 False
15 False
16 False
17 False
18 False
19 False
20 False
21 False
22 False
23 False
24 False
25 False
26 False
27 False
28 False
29 False
...
2927 False
2928 False
2929 False
2930 False
2931 False
2932 False
2933 False
2934 False
2935 False
2936 False
2937 False
2938 False
2939 False
2940 False
2941 False
2942 False
2943 False
2944 False
2945 False
2946 False
2947 False
2948 False
2949 False
2950 False
2951 False
2952 False
2953 False
2954 False
2955 False
2956 False
Length: 2957, dtype: bool
# 删除重复数据,并对file_data重新赋值
file_data = file_data.drop_duplicates()
file_data.head()
地区 | 小区名称 | 户型 | 面积(㎡) | 价格(元/月) | |
---|---|---|---|---|---|
0 | 海淀 | 永定路85号院 2室1厅 南/北 | 2室1厅1卫 | 45 | 4500 |
1 | 朝阳 | 整租·华贸城 1室1厅 东南 | 1室1厅2卫 | 53 | 6800 |
2 | 丰台 | 整租·六里桥小区 2室1厅 南/北 | 2室1厅1卫 | 61 | 5500 |
3 | 朝阳 | 北花园小区 1室0厅 南 | 1室0厅1卫 | 52 | 4100 |
4 | 顺义 | 幸福东区 3室1厅 东南 | 3室1厅1卫 | 94 | 4300 |
空值处理
直接使用dropna()方法检测并删除缺失的数据
# 删除缺失数据,并对file_data重新赋值
file_data = file_data.dropna()
file_data.tail()