文章目录
<br
租房数据分析
先导入相关的数据处理库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
%matplotlib inline
一、 读取数据,并简单处理数据
df = pd.read_csv("租房信息.csv")
df.head()
1.1 判断是否有重复值
len(df["标题"].unique()) == len(df)
# 根据标题来判断是否有重复值 false
df.drop_duplicates("标题",inplace=True)
# 删除重复值
df.index = range(len(df))
# 删除之后,重排索引,为了之后拼接数据方便
print(len(df))
# 还有2244条数据
1.2 判断是否有缺失值
df.info()
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 2244 entries, 0 to 2243
Data columns (total 10 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 标题 2244 non-null object
1 价格 2244 non-null float64
2 小区名 2244 non-null object
3 城市 2244 non-null object
4 街道 2244 non-null object
5 室厅数 2244 non-null object
6 面积 2244 non-null object
7 层数 2244 non-null object
8 交接人 2244 non-null object
9 详情链接 2244 non-null object
dtypes: float64(1), object(9)
memory usage: 175.4+ KB
'''
可以看到,全部数据没有缺失值,因此也不用处理缺失值。
若需要处理缺失值,可以选择:
- 直接删除存在缺失值的列,一般只有在缺失值占比太多的情况,才这样处理。
- 删除缺失值对应的数据,既删除对应的行,这种适用于当缺失值占比较小的情况。
- 填充缺失值。
下面给出处理确实值的具体方法:
# 查看所有缺失值数量,降序
total = df.isnull().sum().sort_values(ascending=False)
# 计算缺失值占比
percent = (df.isnull().sum()/df.isnull().count()).sort_values(ascending=False)
# 关联数量和占比
missing_data = pd.concat([total, percent], axis=1, keys=['Total', 'Percent'])
# 查看排名前20
missing_data.head(20)
# 根据之前计算的缺失值数据,删除对应的列
df = df.drop(missing_data[missing_data['Total'] > 1].index, 1)
# 删除某列数据缺失值对应的行
df = df.drop(df.loc[df['Electrical'].isnull()].index)
# 查看是否还有缺失值
df.isnull().sum().max()
二、简单分析数据
可以看到,数据中的城市、室厅数、层数、面积,都是文本形式,因此先将数据处理一下,转换成可计算的形式:
2.1 处理数据
# 将城市列分割,和数据拼接一起
df_city = pd.DataFrame(df["城市"].str.split("-").tolist(),columns=["区域","区域2"])
df = pd.concat([df,df_city],axis=1)
# 将室厅数拆解成室数和厅数,拼接在一起
df_st = pd.DataFrame(df["室厅数"].str.replace("厅","").str.split(&#