建议在Jupyter Notebook 中运行
jupyter notebook环境搭建
@[TOC]```
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif’] = [‘SimHei’] # 正常显示汉字
plt.rcParams[‘axes.unicode_minus’] = False # 正常显示负号
import os
os.chdir(r’D:\hm\homework\pywork\workProject\numpyProject’)
# 1.加载数据 修改列名 查看数据结构
1.加载数据
df = pd.read_csv(‘./data/LJdata.csv’)
df.head()
df.columns = [‘district’, ‘address’, ‘title’, ‘house_type’, ‘area’, ‘price’, ‘floor’, ‘build_time’, ‘direction’, ‘update_time’, ‘view_num’, ‘extra_info’, ‘link’]
df.columns
df.head()
数据集
print(df.shape)
print(df.info())
print(df.describe())
# 2.数据的统计分析
## 1.找到租金最高最低的房子
df[‘price’].max()
df.price.min()
df[df.price == 1300]
df[df.price == 210000]
通过sort_values()
df.sort_values(‘price’).head(1) # 升序排列 价格最低
df.sort_values(‘price’).tail(1) # 升序排列 价格最高
通过 nlargest() 和 nsmallest() 实现
df.nsmallest(1,‘price’) # 租金最低
df.nlargest(1,‘price’) # 租金最高
## 2. 找到最近新上的10套
sort_values 排序 + head()
df.sort_values(‘update_time’,ascending= False).head(10)
## 3.查看所有的更新时间
unique()
df.update_time.unique() # 去重
df.update_time.drop_duplicates() # series drop_duplicates()
df.groupby(‘update_time’, as_index = False).district.count().update_time # 分组
df.drop_duplicates(‘update_time’).update_time # datafarme 的 drop_duplicates()
## 4.看房人数
最小值
df.view_num.min()
最大值
df.view_num.max()
中位数
df.view_num.median()
df.describe()
## 5.不同看房人数的房源数量
tmp_df = df.groupby(‘view_num’,as_index=False).district .count()
tmp_df
图表展示
tmp_df[‘district’].plot(kind = ‘bar’,figsize = (20,10))
## 6.房租的价格分布
平均值
df.price.max()
df.price.min()
df.price.median()
df.price.std()
df.price.var()
## 7.看房人数最多的朝向
tmp_df = df.groupby(‘direction’).view_num.sum()
## 8.找到看房人数最多的朝向
tmp_df[tmp_df.view_num == tmp_df.view_num.max()]
tmp_df.sort_values(‘view_num’,ascending = False).head(1)
## 9.房型分布情况
统计各种房型 分别有多少套
tmp_df = df.groupby(‘direction’).district.count()
tmp_df.plot(kind = ‘bar’,figsize=(20,10))
## 10.最受欢迎的房型
df.groupby(‘house_type’)[‘view_num’].sum() # series 对象
df.groupby(‘house_type’)[[‘view_num’]].sum() # df 对象
df.groupby(‘house_type’)[[‘view_num’]].sum().nlargest(1,‘view_num’)
设置分组列 不作为索引列
## 11.房屋的平均租房价格
一 总价格 / 总面积
df.price.sum() / df.area.sum()
二 计算每套房子的 每平米的租金 计算所有房子 租金/平米 的平均值
df[‘price_m2’] = df.price / df.area
df.price_m2.mean()
## 12.热门小区
df.groupby(‘address’)[[‘view_num’]].sum().nlargest(10,‘view_num’)
出租房源最多的小区
找到每个小区的房源数量
df.groupby(‘address’,as_index= False).district.count().sort_values(‘district’, ascending= False).head(1)
df.groupby(‘address’,as_index= False).district.count().nlargest(1,‘district’)
df.address.value_counts().head(1)