Python实现的北京积分落户数据分析示例


Posted in Python onMarch 27, 2020

本文实例讲述了Python实现的北京积分落户数据分析。分享给大家供大家参考,具体如下:

北京积分落户状况 获取数据(爬虫/文件下载)—> 分析 (维度—指标)
  1. 从公司维度分析不同公司对落户人数指标的影响 , 即什么公司落户人数最多也更容易落户
  2. 从年龄维度分析不同年龄段对落户人数指标影响 , 即什么年龄段落户人数最多也更容易落户
  3. 从百家姓维度分析不同姓对落户人数的指标影响 , 即什么姓的落户人数最多即也更容易落户
  4. 不同分数段的占比情况
# 导入库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import font_manager
#读取数据(文件) , 并查看数据相应结构和格式
lh_data = pd.read_csv('./bj_luohu.csv',index_col='id',usecols=(0,1,2,3,4))
lh_data.describe()

Python实现的北京积分落户数据分析示例

# 1. 公司维度---人数指标
# 对公司进行分组聚合 , 并查看分数的相关数据 (个数 , 总分数 , 平均分 , 人数占比)
group_company = lh_data.groupby('company',as_index=False)['score'].agg(['count','sum','mean']).sort_values('count',ascending=False)
#更改列名称
group_company.rename(columns={'count':'people_num','sum':'score_sum','mean':'score_mean'},inplace=True)
#定一个函数 , 得到占比
def num_percent(people_num=1,people_sum=1):
  return str('%.2f'%(people_num / people_sum * 100))+'%'
#增加一个占比列
group_company['people_percent'] = group_company['people_num'].apply(num_percent,people_sum=lh_data['name'].count())
#查看只有一个人落户的公司 布尔索引
group_company[group_company['people_num'] == 1]
group_company.head(10)

Python实现的北京积分落户数据分析示例

# 2.年龄维度----人数指标
#将出生年月转为年龄
lh_data['age'] = (pd.to_datetime('2019-09') - pd.to_datetime(lh_data['birthday'])) / pd.Timedelta('365 days')
# 分桶
lh_data.describe()
bins_age = pd.cut(lh_data['age'],bins=np.arange(30,70,5))
bins_age_group = lh_data['age'].groupby(bins_age).count()
bins_age_group.index = [str(i.left) + '~' + str(i.right) for i in bins_age_group.index]
bins_age_group.plot(kind='bar',alpha=1,rot=60,grid=0.2)

Python实现的北京积分落户数据分析示例

# 3. 姓维度----人数指标
# 增加姓列
#定义一个函数 得到姓名的姓
def get_fname(name):
  if len(str(name)) <= 3:
    return str(name[0])
  else:
    return str(name[0:2])
lh_data['fname'] = lh_data['name'].apply(get_fname)
# 对姓进行分组
group_fname = lh_data.groupby('fname')['score'].agg(['count','sum','mean']).sort_values('count',ascending=False)
# 更改列名称
group_fname.rename(columns={'count':'people_num','sum':'people_sum','mean':'score_mean'},inplace=True)
# 增加占比列
group_fname['people_percent'] = group_fname['people_num'].apply(num_percent,people_sum=lh_data['name'].count())
group_fname.head(10)

Python实现的北京积分落户数据分析示例

# 4. 查看分数段占比 
# 分桶 将分数划分为一个个的区间
bins_score = pd.cut(lh_data['score'],np.arange(90,130,5))
# 将分数装入对应的桶里
bins_score_group = lh_data['score'].groupby(bins_score).count()
# 更改索引显示格式
bins_score_group.index = [str(i.left)+'~'+str(i.right) for i in bins_score_group.index]
bins_score_group.plot(kind='bar',alpha=1,rot=60,grid=0.2,title='score-people_num',colormap='RdBu_r')

Python实现的北京积分落户数据分析示例

总结
1.pandas的绘图方法不够灵活 , 功能也不够强大 , 最好还是使用matplotlib绘图
2.记住数据分析最重要的两个方法 分组: groupby() 和 分桶:cut() , 前者一般用于离散的数据(姓,公司) , 后者用于连续数据 (年龄段,分数段)

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python 字符串split的用法分享
Mar 23 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
python实现判断一个字符串是否是合法IP地址的示例
Jun 04 Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 Python
Python封装原理与实现方法详解
Aug 28 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
Python读取csv文件实例解析
Dec 30 Python
np.random.seed() 的使用详解
Jan 14 Python
使用Python爬虫库requests发送表单数据和JSON数据
Jan 25 Python
python如何求100以内的素数
May 27 Python
python3实现常见的排序算法(示例代码)
Jul 04 Python
OpenCV 图像梯度的实现方法
Jul 25 Python
Pyspark获取并处理RDD数据代码实例
Mar 27 #Python
Python Django中的STATIC_URL 设置和使用方式
Mar 27 #Python
Python爬虫爬取、解析数据操作示例
Mar 27 #Python
python opencv进行图像拼接
Mar 27 #Python
Python爬虫爬取电影票房数据及图表展示操作示例
Mar 27 #Python
Pyspark读取parquet数据过程解析
Mar 27 #Python
Python基于pyecharts实现关联图绘制
Mar 27 #Python
You might like
php数组去重实例及分析
2013/11/26 PHP
回帖脱衣服的图片实现代码
2014/02/15 PHP
php采集神器cURL使用方法详解
2016/02/19 PHP
PHP基于curl后台远程登录正方教务系统的方法
2016/10/14 PHP
PHP-CGI远程代码执行漏洞分析与防范
2017/05/07 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
JS对URL字符串进行编码/解码分析
2008/10/25 Javascript
javascript四舍五入函数代码分享(保留后几位)
2013/12/10 Javascript
node.js中的fs.appendFile方法使用说明
2014/12/17 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
你知道setTimeout是如何运行的吗?
2016/08/16 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
2019/05/16 Javascript
新手快速入门JavaScript装饰者模式与AOP
2019/06/24 Javascript
DatePickerDialog 自定义样式及使用全解
2019/07/09 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
[01:05:30]VP vs TNC 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python基于json文件实现的gearman任务自动重启代码实例
2019/08/13 Python
Python使用Opencv实现图像特征检测与匹配的方法
2019/10/30 Python
python新手学习可变和不可变对象
2020/06/11 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
Python使用Turtle模块绘制国旗的方法示例
2021/02/28 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
通信专业个人自我鉴定
2013/10/21 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
奶茶店的创业计划书该怎么写?
2019/07/15 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python