数据采集分析

#!/bin/env python
#--coding:utf-8--
#auth:tyk
#data:2019-2-3
#function:Exploratory Visualization
###################################
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib as mpl
import matplotlib.pyplot as plt
import sys
import warnings
import re
from data_1 import ZcSummary
from scipy.stats import norm
warnings.filterwarnings("ignore")
mpl.rcParams[‘axes.unicode_minus‘] = False
mpl.rcParams[‘font.family‘]=‘sans-serif‘
mpl.rcParams[‘font.sans-serif‘]=[‘SimHei‘]
reload(sys)
sys.setdefaultencoding(‘UTF-8‘)
hit_df = pd.read_csv(‘hit.csv‘,encoding=‘UTF-8‘)
print ">>==================data info=====================<<"
#hit_df.info()
#print (hit_df.shape)
#print (hit_df.dtypes)
#print ">>==================data describe=================<<"
try:

print(hit_df.describe())

pass

except Exception,e:
print e
df = hit_df.copy()
#df[‘floor‘]=re.findall("\d+",df[‘floor‘])
#df[‘PerPrice‘] = hit_df[‘Price‘]/hit_df[‘Size‘]
#columns = [‘fang_key‘, ‘fang_desc‘, ‘price‘, ‘price_pre‘, ‘community‘, ‘housetype‘, ‘area‘, ‘region‘, ‘plate‘, ‘floor‘, ‘direction‘, ‘age‘,‘address‘,‘updated_date‘]
#df = pd.DataFrame(df, columns = columns)
def variables_analyse(data):
sns.distplot(df[‘price‘])
plt.show()
def region_analyse(data):
df=data.copy()
df_house_count = df.groupby(‘region‘)[‘price‘].count().sort_values(ascending=False).to_frame().reset_index()
df_house_mean = df.groupby(‘region‘)[‘price_pre‘].mean().sort_values(ascending=False).to_frame().reset_index()
f, [ax1,ax2,ax3] = plt.subplots(3,1,figsize=(30,45),dpi=100)
sns.barplot(x=‘region‘, y=‘price_pre‘, palette="Blues_d", data=df_house_mean, ax=ax1)
ax1.set_title(‘深圳各大区二手房每平米单价对比‘,fontsize=5)
ax1.set_xlabel(‘区域‘,)
ax1.set_ylabel(‘每平方米单价‘)
sns.barplot(x=‘region‘, y=‘price‘, palette="Greens_d", data=df_house_count, ax=ax2)
ax2.set_title(‘深圳各大区二手房数量对比‘,fontsize=5)
ax2.set_xlabel(‘区域‘)
ax2.set_ylabel(‘数量‘)
sns.boxplot(x=‘region‘, y=‘price‘, data=df, ax=ax3)
ax3.set_title(‘深圳各大区二手房房屋总价‘,fontsize=5)
ax3.set_xlabel(‘区域‘)
ax3.set_ylabel(‘房屋总价‘)
plt.savefig("region.png",dpi=100)
plt.show()
def area_analyse(data):
df=data.copy()
#过滤散点

df = df[(df[‘Layout‘]!=‘叠拼别墅‘)&(df[‘Size‘]<1000)]

f, [ax1,ax2] = plt.subplots(1, 2, figsize=(15, 5),dpi=100)
sns.distplot(df[‘area‘], bins=20, ax=ax1, color=‘r‘)
sns.kdeplot(df[‘area‘], shade=True, ax=ax1)
sns.regplot(x=‘area‘, y=‘price‘, data=df, ax=ax2)
plt.savefig("area.png",dpi=100)

#另外一种展示
fig,axes = plt.subplots()
sns.distplot(data[‘area‘],bins=50,kde=False,fit=norm,ax=axes)
axes.set(xlabel=‘面积/平米‘,ylabel=‘概率密度‘,title=‘面积频率分布直方图‘)
plt.show()

def housetype_analyse(data):
df=data.copy()
f, ax1= plt.subplots(figsize=(20,20))
sns.countplot(y=‘housetype‘, data=df, ax=ax1)
ax1.set_title(‘房屋户型‘,fontsize=15)
ax1.set_xlabel(‘数量‘)
ax1.set_ylabel(‘户型‘)
plt.savefig("housetype.png",dpi=100)
plt.show()
def year_analyse(data):
new_data=data.copy()
new_data[‘age‘].unique()
count_by_create_time = new_data[‘age‘].groupby(new_data[‘age‘]).count() # 对不同时间建造的房屋进行分组统计

将房屋建造时间分成2000年及以前、2001-2005年、2006-2010年、2011-2015年、2016年及以后这五组数据,并分组计数

count_by_create_time1 = count_by_create_time.loc[:2000].sum()
count_by_create_time2 = count_by_create_time.loc[2001:2005].sum()
count_by_create_time3 = count_by_create_time.loc[2006:2010].sum()
count_by_create_time4 = count_by_create_time.loc[2011:2015].sum()
count_by_create_time5 = count_by_create_time.loc[2016:].sum()
new_count_by_create_time = pd.Series([count_by_create_time1,count_by_create_time2,count_by_create_time3,
                                  count_by_create_time4,count_by_create_time5],
                                index=[‘2000年及以前‘,‘2001-2005年‘,‘2006-2010年‘,‘2011-2015年‘,‘2016年及以后‘])

绘制折线图

fig,axes = plt.subplots(1,2)
count_by_create_time.plot(kind=‘line‘,ax=axes[0])

axes[0].set(xlabel=‘房屋建造时间/年‘,ylabel=‘房数量/套‘,
              title=‘房数量随房屋建造时间变化折线图‘,
       xticks=[1970,1980,1990,2000,2010,2018])  # 设置折线图标题、坐标轴标签和x轴上的数值标签

# 绘制饼形图
new_count_by_create_time.plot(kind=‘pie‘,ax=axes[1],autopct=‘%.1f%%‘,startangle=90,label=‘‘)
# autopct参数的作用是指定饼形图中数据标签的显示方式
# ‘%.1f%%‘表示数据标签的格式是保留一位小数的百分数
# startangle=90表示饼图的起始绘制角度是偏离x轴90度,并按逆时针绘制
# label=‘‘后,饼形图的左边便不会再显示Series对象的名字
axes[1].set_title(‘不同建造时间范围内房屋占比饼形图‘)   # 设置饼形图的标题
axes[1].set_aspect(‘equal‘)   # 设置饼形图的纵横比相等
plt.subplots_adjust(wspace=0.5)   # 设置figure对象中子图的间距
plt.show()

def floor_analyse(data):
df=data.copy()
f, ax1= plt.subplots(figsize=(20,5))
sns.countplot(x=‘floor‘, data=df, ax=ax1)
ax1.set_title(‘房屋户型‘,fontsize=15)
ax1.set_xlabel(‘数量‘)
ax1.set_ylabel(‘价格‘)
plt.savefig("floor.png",dpi=100)
plt.show()
def price_analyse(data):
new_data=data.copy()
#处理计算各区的平均房价
fig,axes = plt.subplots(1,2)
sns.distplot(new_data[‘price‘],bins=50,kde=False,fit=norm,ax=axes[0])
sns.distplot(new_data[‘price_pre‘],bins=50,kde=False,fit=norm,ax=axes[1])
axes[0].set(xlabel=‘售价/万‘,ylabel=‘概率密度‘)
axes[1].set(xlabel=‘单价/元每平米‘,ylabel=‘概率密度‘)
fig.suptitle(‘二手房的售价和单价频率分布直方图‘)
plt.subplots_adjust(wspace=0.4) # 设置figure对象中两子图的间距
plt.savefig(‘price.png‘)

plt.show()

min_price = new_data[‘price‘].mean() - new_data[‘price‘].std()
max_price = new_data[‘price‘].mean() +  new_data[‘price‘].std()
print(min_price,max_price)
min_average_price = new_data[‘price_pre‘].mean() - new_data[‘price_pre‘].std()
max_average_price = new_data[‘price_pre‘].mean() + new_data[‘price_pre‘].std()
print(min_average_price,max_average_price)

def main():
parm=["price_pre","area",‘age‘,‘floor‘]
data_init=ZcSummary()
data=data_init.preprocess_features(df,parm)
#region_analyse(data)
#area_analyse(data)
#housetype_analyse(data)
#year_analyse(data)
#variables_analyse(data)
#floor_analyse(data)####has####
price_analyse(data)
if name == ‘main‘:
try:
main()
except Exception as e:
print e

原文地址:https://blog.51cto.com/12768454/2375509

时间: 2024-10-31 17:26:02

数据采集分析的相关文章

基于TableStore的数据采集分析系统介绍

摘要: 摘要 在互联网高度发达的今天,ipad.手机等智能终端设备随处可见,运行在其中的APP.网站也非常多,如何采集终端数据进行分析,提升软件的品质非常重要,例如PV/UV统计.用户行为数据统计与分析等.虽然场景简单,但是数据量大,对系统的吞吐量.实时性.分析能力.查询能力都有较高的要求,搭建起来并不容易. 摘要 在互联网高度发达的今天,ipad.手机等智能终端设备随处可见,运行在其中的APP.网站也非常多,如何采集终端数据进行分析,提升软件的品质非常重要,例如PV/UV统计.用户行为数据统计

用OSSIM简单实现分布式Netflow分析系统

用OSSIM简单实现分布式Netflow分析系统 若干要对网络异常流量进行分析,首先要深入了解其产生原理及特征,对异常流量的种类.流向.产生后果.数据包类型.地址.端口等多个方面进行分析.Linux下Netflow数据采集分析工具为Nfdump,通过Nfsen,以Web界面展示出来,然而如果让你完全通过之前编译安装的方式搭建Netflow采集分析平台确非常复杂. 以下三幅图展示了在OSSIM系统中实现分布式Netflow系统的截图. 如何轻松设置Netflow,大家请参考<开源安全运维平台OSS

云计算下的数据库 分析 以及部分互联网公司目前采用的新型数据库总结

云计算下的新型数据库技术 摘要:在这个信息化的时代,我们的一举一动都离不开与数据打交道,特别是云计算和大数据时代的到来,使得传统数据库的性能已无法满足海量数据的实时交易查询需求,在性能和成本的双重压力之下,云计算下的数据库需要寻找突破之路. 1.简介: 云计算通过整合,管理和调配分布在互联网中的所有计算资源,以统一的界面同时向用户提供服务.互联网提供的各种计算形式的应用以及提供这些服务的数据中心和软硬件基础设施.提供的服务成为软件即服务(SaaS),数据中心的软硬件基础设施即为云,这种虚拟化资源

【数道云大数据】湖北分布式智能数据采集方法有哪些?武汉数据采集品牌选择?

随着大数据.人工智能等互联网信息技术的发展和应用,数据量的不断增加,政企单位应该如何对庞大的数据系统进行有效的管控以及数据采集分析?什么是分布式数据采集? 分布式数据采集是分布式记录方式可以在影响网络带宽最小的情况下采集到所需要的数据,其主要设计思路就是在成员与RTI之间加一层记录接口,成员在向RTI发送数据时,首先经过记录接口,由记录接口将数据记录之后,再转发给RTI,这样就不会有冗余的数据在网络上传输(特别是大大减少了网络上的网间数据),消除了系统瓶颈. 分布式数据采集方法有哪些?1.系统日

Linux服务器开发常用的命令以及遇到的问题

1. 什么是linux服务器load average? Load是用来度量服务器工作量的大小,即计算机cpu任务执行队列的长度,值越大,表明包括正在运行和待运行的进程数越多.参考资料:http://en.wikipedia.org/wiki/Load_average 2. 如何查看linux服务器负载 可以通过w,top,uptime,procinfo命令,也可以通过/proc/loadavg文件查看. 3. 服务器负载高怎么办? 服务器负载(load/load average)是根据进程队列的

[转]Android中直播视频技术探究之---摄像头Camera视频源数据采集解析

http://blog.csdn.net/jiangwei0910410003/article/details/52057543 一.前言 在视频直播中一般都是两种视频数据源,一个是摄像头数据,一个是录制桌面数据,而一般来说美女妹子直播都是来自于摄像头数据,游戏直播都是录制桌面数据的,那么今天就来看看第一个数据源数据采集分析,Android中使用摄像头的场景很多,在没有直播这个行业出现之前,之前用到摄像头的最多就两个场景,一个是二维码扫描,一个是美颜拍照类的应用.那么这里就来看看Android中

《从0到1》笔记 第三章 所有成功的企业都是不同的

第三章 所有成功的企业都是不同的----科技企业的创新就是为了垄断,成功的科技企业都是垄断式的. 在商界,钱就是一切,或至少是非常重要.垄断者除了想着赚钱外还有余力想其它事情,而非垄断者就不行.在完全竞争中,企业着眼于短期利益,不可能对未来进行长期规划.要想企业从每日的生成竞赛中解脱出来,唯一的方法就是:获取垄断利润. 企业成功的原因各有不同:每个垄断企业都是靠解决独一无二的问题而获得垄断地位:而企业失败的原因却相同:它们都无法逃脱竞争. 国内的垄断者,如百度,解决了中文搜索的问题,垄断了搜索的

[转]Android开源项目分类汇总

我喜欢收集源码,如今这个时代,我觉得我们要做的不是做前人做过的事,而是学习他们的经验然后在这基础上创新做出更伟大的事. 转自https://github.com/Trinea/android-open-project Android开源项目第一篇——个性化控件(View)篇  包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.ProgressBar.TextView.ScrollView.TimeView.TipView

GitHub上史上最全的Android开源项目分类汇总

今天在看博客的时候,无意中发现了@Trinea在GitHub上的一个项目Android开源项目分类汇总,由于类容太多了,我没有一个个完整地看完,但是里面介绍的开源项目都非常有参考价值,包括很炫的界面特效设计.个性化控件.工具库.优秀的Android开源项目.开发测试工具.优秀个人和团体等.可以这样说,每一位Andorid开发人员都能从中找到一个或多个适用自己项目的解决方案,消化吸收并加以利用,可以为自己的APP增色不少.文章最后还列出了部分国外著名Android开发者的信息,包括GitHub地址