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程序中进行文件读取和写入操作的教程
Apr 28 Python
Python 爬虫学习笔记之单线程爬虫
Sep 21 Python
Python获取当前公网ip并自动断开宽带连接实例代码
Jan 12 Python
基于Python中numpy数组的合并实例讲解
Apr 04 Python
python微信公众号之关注公众号自动回复
Oct 25 Python
Python3.5文件读与写操作经典实例详解
May 01 Python
解决Django提交表单报错:CSRF token missing or incorrect的问题
Mar 13 Python
Python MOCK SERVER moco模拟接口测试过程解析
Apr 13 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
Selenium+BeautifulSoup+json获取Script标签内的json数据
Dec 07 Python
一文搞懂如何实现Go 超时控制
Mar 30 Python
python实现手机推送 代码也就10行左右
Apr 12 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中对数据库操作的封装
2006/10/09 PHP
PHP 杂谈《重构-改善既有代码的设计》之一 重新组织你的函数
2012/04/09 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
Destoon旺旺无法正常显示,点击提示“会员名不存在”的解决办法
2014/06/21 PHP
php 流程控制switch的简单实例
2016/06/07 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
js取滚动条的尺寸的函数代码
2011/11/30 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JS实现对中文字符串进行utf-8的Base64编码的方法(使其与Java编码相同)
2016/06/21 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
微信小程序实现炫酷的弹出式菜单特效
2019/01/28 Javascript
实例讲解v-if和v-show的区别
2019/01/31 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
[01:20:47]DOTA2-DPC中国联赛 正赛 Ehome vs Magma BO3 第一场 1月19日
2021/03/11 DOTA
gearman的安装启动及python API使用实例
2014/07/08 Python
浅谈Python程序与C++程序的联合使用
2015/04/07 Python
Python中SOAP项目的介绍及其在web开发中的应用
2015/04/14 Python
Python合并字典键值并去除重复元素的实例
2016/12/18 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
TensorFlow如何实现反向传播
2018/02/06 Python
python实现图片上添加图片
2019/11/26 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
python数据类型可变不可变知识点总结
2020/03/06 Python
使用已经得到的keras模型识别自己手写的数字方式
2020/06/29 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
七年级数学教学反思
2016/02/17 职场文书