Python 数据分析微专业课程--项目08 中国姓氏排行研究

本文详细介绍了使用Python进行中国姓氏数据分析的项目,包括数据清洗、整合,姓氏分布和迁徙指数计算。通过对户籍地和工作地数据的处理,分析了姓氏的TOP20,并绘制了分布密度图。通过QGIS和Echarts实现了奔波指数的可视化,展示了人口的迁徙轨迹和趋势。
摘要由CSDN通过智能技术生成

1.项目说明

对姓氏户籍地和工作地数据进行清洗、整合,获得姓氏的户籍城市及其经纬度,工作地城市及其经纬度。然后对数据进行分析,分析姓氏TOP20,取其中某几个姓氏分析其在全国的分布,根据户籍地与工作地的经纬度分析其奔波指数。

2.项目具体要求

1、数据清洗、整合
要求:
① 将“data01”、“data02”分别读取,并且合并成一个数据
② 结合“户籍地城市编号”及“中国城市代码对照表”数据,将城市经纬度连接进数据中
③ 分别提取“工作地”中的省、市

查看姓氏“普遍指数”,普遍指数=姓氏人口数量
要求:
① 将数据按照“姓”做统计,找到数量最多的TOP20
② 分别制作图表,查看姓氏TOP20的数量及占比
③ 选取姓氏分析在全国的分布情况,绘制密度图

查看姓氏“奔波指数”,奔波指数=姓氏人均迁徙距离。
要求:
① 根据识别的工作地,通过Geocoding查询到对应坐标
② 选择一个姓氏,计算并查看其姓氏的奔波指数,并计算该姓氏的人均通勤距离

3.实现思路:

1.数据的清洗、整合目的是获得姓氏的户籍城市及其经纬度,工作地城市及其经纬度,户籍城市及其经纬度的获取可以连接中国城市编码对照表,根据’户籍城市编号’和’行政编码’进行连接,这样就获得户籍所在地省\市\区县以及其经纬度。
工作地城市及其经纬度需要对姓氏的工作地数据使用正则表达式匹配出有效省市区地址,然后用全国省,市,区县列表循环查找是否在地址中出现,
若出现这是返回该省,市,区县名称,这里可以创建三个函数,分别用于获得省,市,区名称,使用apply()进行调用。
2.计算姓氏的人口数量,可以对清洗完成的数据根据姓氏进行分组计数,则得到每个姓氏的人数,再除以总人数则得到占比数据,
然后筛选TOP20绘制柱状图。
绘制姓氏密度图,可以使用powermap或者echarts来绘制,需要筛选出某个姓氏数据保存成excel数据,然后使用特定工具绘制
3.将筛选某个姓氏数据,将“工作地市”、“工作地区县”未识别的数据删除掉,然后将数据导出,根据工作地数据通过Geocoding查询对应坐标,
然后将数据导入到QGIS,使用插件’LinePlotter’转线,并在qgis中计算平均通勤距离,对完成转线的shapefile 文件使用在线转换工具转换成geojson格式数据,
接着使用geojson格式数据作为echarts绘图的数据绘制轨迹图。

4.实现过程:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

import warnings
warnings.filterwarnings('ignore') 
# 不发出警告

from bokeh.io import output_notebook
output_notebook()
# 导入notebook绘图模块

from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource
# 导入图表绘制、图标展示模块
# 导入ColumnDataSource模块

import os
os.chdir(r'D:\IT\python数据分析师\项目9')

#读取数据
df1 = pd.read_csv('data01.csv',encoding = "utf-8")
df2 = pd.read_csv('data02.csv',encoding = 'utf-8')
df_xzdm = pd.read_excel('中国行政代码对照表.xlsx')
df_all = pd.concat([df1,df2]) # '户籍地城市编号'数据连接

#连接“户籍地城市编号”及“中国城市代码对照表”数据,
data = pd.merge(df_all,df_xzdm,left_on ='户籍地城市编号',right_on='行政编码',how='inner')

#筛
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值