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 相关文章推荐
Python3基础之list列表实例解析
Aug 13 Python
python将ip地址转换成整数的方法
Mar 17 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
Python中str.join()简单用法示例
Mar 20 Python
实例讲解python中的序列化知识点
Oct 08 Python
Python过滤txt文件内重复内容的方法
Oct 21 Python
六行python代码的爱心曲线详解
May 17 Python
django Admin文档生成器使用详解
Jul 22 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
django 读取图片到页面实例
Mar 27 Python
解决使用python print打印函数返回值多一个None的问题
Apr 09 Python
关于python3 opencv 图像二值化的问题(cv2.adaptiveThreshold函数)
Apr 04 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使用fputcsv()函数csv文件读写数据的方法
2015/01/06 PHP
PHP多进程编程实例详解
2017/07/19 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
Laravel Validator自定义错误返回提示消息并在前端展示
2019/05/09 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
VBS通过WMI监视注册表变动的代码
2011/10/27 Javascript
jquery操作angularjs对象
2015/06/26 Javascript
AngularJS自动表单验证
2016/02/01 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
浅谈JS中String()与 .toString()的区别
2016/10/20 Javascript
JS验证字符串功能
2017/02/22 Javascript
JS数组搜索之折半搜索实现方法分析
2017/03/27 Javascript
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
js实现随机点名
2021/01/19 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python操作mysql数据库实现增删查改功能的方法
2018/01/15 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
关于tf.TFRecordReader()函数的用法解析
2020/02/17 Python
Python web如何在IIS发布应用过程解析
2020/05/27 Python
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
请说出几个常用的异常类
2013/01/08 面试题
大学生开西餐厅创业计划书
2014/02/01 职场文书
材料加工工程求职信
2014/02/19 职场文书
高中生家长寄语大全
2014/04/03 职场文书
努力学习演讲稿
2014/05/10 职场文书
责任书范本大全
2015/05/11 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
八年级作文之感恩
2019/11/22 职场文书
小程序后台PHP版本部署运行 LNMP+WNMP
2021/04/01 Servers
CSS使用Flex和Grid布局实现3D骰子
2022/08/05 HTML / CSS