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实现的一个找零钱的小程序代码分享
Aug 25 Python
python列表操作之extend和append的区别实例分析
Jul 28 Python
Python3.2模拟实现webqq登录
Feb 15 Python
python中MethodType方法介绍与使用示例
Aug 03 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
python实现数据库跨服务器迁移
Apr 12 Python
Python利用heapq实现一个优先级队列的方法
Feb 03 Python
PyTorch里面的torch.nn.Parameter()详解
Jan 03 Python
tensorflow 获取所有variable或tensor的name示例
Jan 04 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
python将dict中的unicode打印成中文实例
May 11 Python
python基于pexpect库自动获取日志信息
Feb 01 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 file_get_contents抓取Gzip网页乱码的三种解决方法
2013/11/12 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
php实现往pdf中加数字签名操作示例【附源码下载】
2018/08/07 PHP
鼠标悬浮显示二级菜单效果的jquery实现
2014/10/29 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
jquery特效 点击展示与隐藏全文
2015/12/09 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
js点击时关闭该范围下拉菜单之外的菜单方法
2018/01/11 Javascript
element-ui table span-method(行合并)的实现代码
2018/12/20 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
Vue.js使用axios动态获取response里的data数据操作
2020/09/08 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
Python字符串替换实例分析
2015/05/11 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
Python可变参数用法实例分析
2017/04/02 Python
python之DataFrame实现excel合并单元格
2021/02/22 Python
对python中执行DOS命令的3种方法总结
2018/05/12 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
使用python远程操作linux过程解析
2019/12/04 Python
pytorch 改变tensor尺寸的实现
2020/01/03 Python
python判断字符串以什么结尾的实例方法
2020/09/18 Python
璀璨的珍珠、密钉和个性化珠宝:Lily & Roo
2021/01/21 全球购物
数组越界问题
2015/10/21 面试题
现场活动策划方案
2014/08/22 职场文书
个人收入证明范本
2014/09/18 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
学生党员检讨书范文
2014/12/27 职场文书
授权委托书
2015/01/28 职场文书
公司更名通知函
2015/04/24 职场文书
乱世佳人观后感
2015/06/08 职场文书
大学入学感言
2015/08/01 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis