本次实验利用某爬虫软件爬取某房产网站中苏州地区的房产数据,数据文件为house.xlsx,部分数据显示如下。(1)爬取数据时,数据缺失是常见的现象,通过某爬虫软件从网站爬取的数据时,如果没有爬取到的数据会返回“暂无数据”,这会影响后期的空值处理。将这些“暂无数据”转换为空值,并统计各列的空值频数,查看缺失数据情况。¶(2)爬取的数据往往是带有单位的字符串,这也会影响后期的数据分析,所以需要将这些单位去掉,再转换为数值型数据。如将字符串“均价”的40000元/m2转换为数值40000.(3)为了分析不同区的房产数据,从地址中提取出区的数据。为了分析房龄,从建造年代中提取出房龄数据。(4)筛选出区为“工业园”,均价在50000元以下,容积率在1.5以下的房源数据。(5)查询房价最贵小区的前5名。(6)查询停车位最少小区的前5名。(7)统计所有数据的平均房价及二手房房源数。(8)分析均价在4000元以上小区中,房源最多的是哪个区。编写python程序解决以上问题
时间: 2024-02-01 11:17:01 浏览: 85
首先,我们需要导入pandas库和numpy库,读取house.xlsx文件中的数据。代码如下:
```python
import pandas as pd
import numpy as np
df = pd.read_excel('house.xlsx')
```
接下来,我们需要将“暂无数据”转换为空值,并统计各列的空值频数,查看缺失数据情况。代码如下:
```python
df.replace('暂无数据', np.nan, inplace=True)
null_counts = df.isnull().sum()
print(null_counts)
```
然后,我们需要将带有单位的字符串转换为数值型数据。代码如下:
```python
df['均价'] = df['均价'].str.replace('元/m²', '').astype(float)
df['面积'] = df['面积'].str.replace('㎡', '').astype(float)
df['单价'] = df['单价'].str.replace('元/平米/月', '').astype(float)
```
为了分析不同区的房产数据,我们需要从地址中提取出区的数据。代码如下:
```python
df['区'] = df['地址'].str.extract('(苏州市.*区)', expand=False)
```
接下来,我们需要从建造年代中提取出房龄数据。代码如下:
```python
df['房龄'] = 2021 - df['建筑年代']
```
筛选出区为“工业园”,均价在50000元以下,容积率在1.5以下的房源数据。代码如下:
```python
df_filtered = df[(df['区'] == '苏州市工业园区') & (df['均价'] < 50000) & (df['容积率'] < 1.5)]
```
查询房价最贵小区的前5名。代码如下:
```python
top5_expensive = df.sort_values('均价', ascending=False).head(5)
```
查询停车位最少小区的前5名。代码如下:
```python
top5_parking = df.sort_values('停车位', ascending=True).head(5)
```
统计所有数据的平均房价及二手房房源数。代码如下:
```python
avg_price = df['均价'].mean()
house_count = len(df)
print('平均房价:', avg_price)
print('二手房房源数:', house_count)
```
分析均价在4000元以上小区中,房源最多的是哪个区。代码如下:
```python
df_high_price = df[df['均价'] >= 4000]
count_by_area = df_high_price['区'].value_counts()
print(count_by_area)
```
阅读全文