数据分析(Python+numpy+pandas+matplotlib分析58同城成都房价)
简单分析一下成都的房价
爬虫文件(Python实现)-爬取的数据文件(txt文件,空格分隔)-分析的文件(Python实现)-简单的分析结果图(png图4张) 资源链接地址:https://download.csdn.net/download/zhanghao3389/10686953
本章所需知识:
- numpy 参考:https://blog.csdn.net/zhanghao3389/article/details/82791862
- pandas 参考:https://blog.csdn.net/zhanghao3389/article/details/82927016
- matplotlib 参考:https://blog.csdn.net/zhanghao3389/article/details/82684287
爬虫页面链接:https://blog.csdn.net/zhanghao3389/article/details/82843244
接下来上代码:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_csv('58.csv', encoding='gbk') # 导入当前文件夹下的58.csv数据文件
print(data.head()) # 查看前5行
print(data.tail()) # 查看后5行
data.info() # 查看数据信息
print(data.describe()) # 统计学指标查看数据概要
# # 处理缺失数据
# data['单价/每平米'].fillna('无', inplace=True)
# data['面积/每平米'].fillna('无', inplace=True)
# data['总价/万'].fillna('无', inplace=True)
print(data['地区'].unique()) # 打印出地区唯一化后的值
print(len(data['地区'].unique())) # 打印出地区唯一化后的个数
print(data['地区'].value_counts()) # 对每个地区的数量进行统计
print(data.groupby('地区')['单价/每平米'].mean().sort_values(ascending=False)) # 单价平均值
print(data.groupby('地区')['面积/平方米'].mean().sort_values(ascending=False)) # 面积平均值
print(data.groupby('地区')['总价/万'].mean().sort_values(ascending=False)) # 总价平均值
'''['郫县' '成都' '成都周边' '都江堰' '双流' '温江' '新都' '龙泉驿' '金牛' '高新西区' '武侯' '成华' '青羊' '锦江' '高新区' '天府新区']'''
# 解决matplotlib图标无法显示中文的情况
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体 # 调节matplotlib支持中文字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示不了的问题
# 数据离散化 单价
bins1 = np.array([0, 5000, 10000, 15000, 20000, 25000, 30000, 55000])
data_ls1 = pd.cut(data['单价/每平米'], bins1) # bins1离散化数组 data_ls1 离散化数据
# 数据离散化 总价
bins2 = np.array([0, 40, 80, 150, 250, 500, 2000])
data_ls2 = pd.cut(data['总价/万'], bins2) # bins2离散化数组 data_ls2 离散化数据
# 数据离散化 面积
bins3 = np.array([0, 50, 75, 100, 125, 150, 175, 200, 300, 1500])
data_ls3 = pd.cut(data['面积/平方米'], bins3) # bins3离散化数组 data_ls3 离散化数据
# 数据透视表
# 使用数据透视表方法pivot_table 需要计算的列明 柱状图下标 离散化数据区间 聚合函数 统计
table = data.pivot_table('面积/平方米', index='地区', columns=data_ls1, aggfunc='count')
table.plot(kind='bar', stacked=True) # 表数据画图 bar柱状图 stacked重叠 开
plt.show()
# 画一个柱状图
table2 = data.pivot_table('总价/万', index='地区', columns=data_ls2, aggfunc='count')
table2.plot(kind='bar', stacked=True)
plt.show()
# 画一个柱状图
table3 = data.pivot_table('面积/平方米', index='地区', columns=data_ls3, aggfunc='count')
table3.plot(kind='bar', stacked=True)
plt.show()
# 画一个饼图(展示各地区房子在售比例)
count1 = data['地区'].value_counts()
plt.axes(aspect=1) # 画一个单位圆
plt.pie(x=dict(count1).values(), labels=dict(count1).keys(), autopct='%3.1f %%', shadow=True, startangle=90)
plt.show()
爬虫页面链接:https://blog.csdn.net/zhanghao3389/article/details/82843244
程序运行状态图: