导入工具包
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
中文可视化
plt.rcParams[‘font.sans-serif’]=[‘Microsoft YaHei’] # 使图形能够正常显示中文
plt.rcParams[‘font.sans-serif’] = [u’SimHei’]
plt.rcParams[‘axes.unicode_minus’] = False
from matplotlib.font_manager import _rebuild
_rebuild()
中文可视化
plt.rcParams[‘font.sans-serif’]=[‘Microsoft YaHei’] # 使图形能够正常显示中文
plt.rcParams[‘font.sans-serif’] = [u’SimHei’]
plt.rcParams[‘axes.unicode_minus’] = False
from matplotlib.font_manager import _rebuild
_rebuild()
-
什么价位的房子多?
1.1: 读取数据,看看是否有缺失
1.2: 提取租金
1.3: 进行可视化
1.1: 读取数据,看看是否有缺失 (地铁线的数据有缺失)
df = pd.read_csv(“ziroom.csv”)
df.head() #默认五行
数据集.isna().any()
df.isna().any()
house_name False
house_located False
house_room False
house_area False
house_price False
subway_info True
dtype: bool
1.2: 提取租金
x = df[“house_price”]
1.3: 进行可视化 (折线图,散点图)
数量的观测 (直方图)plt.hist(数据)
plt.hist(x)
plt.xlabel(“房租”)
plt.ylabel(“个数”)
plt.title(“房租的数量分布”)
plt.show()
2.什么大小的房子多?
2.1: 提取房屋面积
2.2: 进行统计
2.3: 进行可视化
2.1: 提取房屋面积 (查找)
x = df[“house_area”]
2.2: 进行统计 .describe()
df[“house_area”].describe()
count 899.000000
mean 11.462803
std 3.322627
min 5.360000
25% 9.200000
50% 11.100000
75% 13.300000
max 30.900000
Name: house_area, dtype: float64
2.3: 进行可视化 (直方图)
plt.hist(x, edgecolor = “black”)
plt.xlabel(“房子面积大小”)
plt.ylabel(“个数”)
plt.title(“房子面积大小的数量分布”)
plt.show()
-
哪条地铁线附近的房子多?
3.1: 提取所有的地铁数据
3.2: 提取地铁的名字(去除缺失,去重)
3.3: 进行可视化
3.1: 提取所有的地铁数据 value_counts()
y = df[‘subway_info’].value_counts()
y
5号线 188
4号线 152
1号线 139
3号线 87
2号线 82
7号线 64
11号线 43
9号线 35
Name: subway_info, dtype: int64
3.2: 提取地铁的名字(去除缺失,去重)
x = df[‘subway_info’].dropna()
x = x.unique()
x
array([‘3号线’, ‘5号线’, ‘7号线’, ‘4号线’, ‘1号线’, ‘9号线’, ‘11号线’, ‘2号线’],
dtype=object)
3.3: 进行可视化 (另一种直方图 bar) plt.bar(x数据 , y数据)
plt.bar(x, y)
plt.xlabel(“地铁线”)
plt.ylabel(“个数”)
plt.title(“地鐵線房子的数量分布”)
plt.show()
-
哪个小区的房源最多?
4.1: 提取所在小区的数据
4.2: 提取索引
4.3: 进行可视化
4.1: 提取所在小区的数据
y = df[“house_located”].value_counts()
y
龙岗区 224
南山区 183
龙华区 154
福田区 141
宝安区 106
罗湖区 91
Name: house_located, dtype: int64
4.2: 提取索引
x = df[“house_located”].value_counts().index
x
Index([‘龙岗区’, ‘南山区’, ‘龙华区’, ‘福田区’, ‘宝安区’, ‘罗湖区’], dtype=‘object’)
4.3: 进行可视化
plt.bar(x, y)
plt.show()
-
面积跟房租的关系?
5.1: 提取房租与面积
5.2: 进行可视化
5.3: 判断相关性
5.1: 提取房租与面积 『相关性只能计算数字』
df.head()
house_name house_located house_room house_area house_price subway_info
0 龙园山庄4居室-南卧 罗湖区 4室1厅 15.5 1660 3号线
1 塘朗城广场东区5居室-北卧 南山区 5室1厅 24.0 2230 5号线
2 龙园山庄4居室-南卧 罗湖区 4室1厅 15.0 1830 3号线
3 塘朗城广场东区5居室-南卧 南山区 5室1厅 6.3 1860 5号线
4 桃源村一期4居室-南卧 南山区 4室1厅 7.8 1930 7号线
5.2: 进行可视化
数据集.corrwith(租金数据).plot.bar()
df.corrwith(df.house_price).plot.bar(grid = True)
<matplotlib.axes._subplots.AxesSubplot at 0x11e6bccc0>
5.3: 判断相关性
得知相关性 在 0.4 = 相关系数
-
位置跟房租的关系?
6.1: 提取房租与位置
6.2: 进行可视化
6.3: 查看统计数据分布
6.1: 提取房租与位置
df.loc[:, [“列名1, 列名2”] ] 提取两笔数据的方式
df_loacted_price = df.loc[:, [“house_located”, “house_price”]]
横向Series
df_loacted_price.groupby(“群主”)[“要对谁进行操作”].apply(要转换得格式).unstack() # 重新排序
df_loacted_price = df_loacted_price.groupby(“house_located”)[“house_price”].apply(pd.Series.reset_index, drop = True).unstack()
df_loacted_price
0 1 2 3 4 5 6 7 8 9 ... 214 215 216 217 218 219 220 221 222 223
house_located
南山区 2230.0 1860.0 1930.0 1830.0 2260.0 1460.0 1660.0 2190.0 2090.0 2290.0 … NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
宝安区 2130.0 1790.0 2030.0 1690.0 1790.0 1690.0 1790.0 1790.0 2130.0 2430.0 … NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
福田区 2360.0 2230.0 2990.0 2260.0 2690.0 2360.0 2030.0 2090.0 3490.0 3990.0 … NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
罗湖区 1660.0 1830.0 2260.0 1990.0 1660.0 1830.0 1890.0 1890.0 2230.0 2190.0 … NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
龙华区 1990.0 1890.0 1690.0 1860.0 1830.0 2390.0 1630.0 1990.0 1890.0 1860.0 … NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN
龙岗区 1790.0 1790.0 1890.0 1890.0 1890.0 1890.0 1790.0 1890.0 1890.0 1890.0 … 1790.0 2190.0 1390.0 1390.0 1490.0 1560.0 1690.0 1690.0 1790.0 1130.0
6 rows × 224 columns
6.2: 进行可视化
for x in df_loacted_price.values:
xs = [~np.isnan(x)]
推导式
xs = [ x[~np.isnan(x)] for x in df_loacted_price.values]
plt.boxplot(xs)
plt.show()
6.3: 查看统计数据分布
-
综合多个角度来看房
7.1: 多个维度数据 面积,租金,区域,地铁线
7.2: 进行可视化
7.1: 多个维度数据 面积,租金,区域,地铁线
7.2: 进行可视化
sb.FacetGrid(df, col = ‘地区’, hue = “地铁”, col_wrap= 一排几张图).map(plt.scatter, “面积”, “租金”).add_legend() #側邊欄
sb.FacetGrid(df, col = ‘house_located’, hue = “subway_info”, col_wrap= 3).map(plt.scatter, “house_area”, “house_price”).add_legend()