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的Django框架上部署ORM库的教程
Apr 20 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
解决matplotlib库show()方法不显示图片的问题
May 24 Python
python爬虫的数据库连接问题【推荐】
Jun 25 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
Python装饰器使用你可能不知道的几种姿势
Oct 25 Python
opencv3/C++实现视频背景去除建模(BSM)
Dec 11 Python
Python 文件数据读写的具体实现
Jan 24 Python
TensorFlow梯度求解tf.gradients实例
Feb 04 Python
利用python画出AUC曲线的实例
Feb 28 Python
宝塔更新Python及Flask项目的部署
Apr 11 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
2010/08/01 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
2015/10/09 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
function, new function, new Function之间的区别
2007/03/08 Javascript
JavaScript中的new的使用方法与注意事项
2007/05/16 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
Javascript 实现的数独解题算法网页实例
2013/10/15 Javascript
JQuery实现的图文自动轮播效果插件
2015/06/19 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
JavaScript实战之带收放动画效果的导航菜单
2016/08/16 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
浅谈从React渲染流程分析Diff算法
2018/09/08 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
python 判断自定义对象类型
2009/03/21 Python
web.py在SAE中的Session问题解决方法(使用mysql存储)
2015/06/24 Python
在Python的Django框架的视图中使用Session的方法
2015/07/23 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
计算机软件个人的自荐信范文
2013/12/01 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
Go语言特点及基本数据类型使用详解
2022/03/21 Golang
Redis超详细讲解高可用主从复制基础与哨兵模式方案
2022/04/07 Redis
SQL Server #{}可以防止SQL注入
2022/05/11 SQL Server