日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中国姓氏排行研究

發布時間:2023/12/14 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中国姓氏排行研究 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【項目09】 中國姓氏排行研究

PS:如果各位有疑問的話,可以留下微信,我看到會第一時間加的,以后可以多多交流

1、項目需求

1、數據合并及清洗
2、查看姓氏“普遍指數”,普遍指數=姓氏人口數量
3、查看姓氏“奔波指數”,奔波指數=姓氏人均遷徙距離。遷徙距離為戶籍地所在地級市與現居住地所在地級市的距離

2、實現思路

1、清洗原數據,合并數據特殊處理未識別的數據,通過城市經緯度對照表得出地區經緯度
2、找出目標數據姓氏數量對多的TOP20,通過echart查看部分姓氏分布情況及powermap查看熱力情況
3、選擇一個姓氏通過qgis制作原始數據轉換后,再通過echart制作通勤動態圖,動態輸出

3、實現步驟

1.1、導入模塊讀取數據

import pandas as pd import numpy as np import matplotlib.pyplot as plt import os import warnings warnings.filterwarnings('ignore') # 不發出警告from bokeh.io import output_fileoutput_file('項目09.html')from bokeh.plotting import figure,show# 導入圖表繪制、圖標展示模塊from bokeh.models.annotations import Spanfrom bokeh.models.annotations import BoxAnnotationfrom bokeh.layouts import gridplotfrom bokeh.models import ColumnDataSourcefrom bokeh.models import HoverToolos.chdir('C:\\Users\\Administrator\\Desktop\\項目資料\\項目09中國姓氏排行研究')df1_data1 = pd.read_csv('data01.csv',encoding = 'utf-8')df1_data2 = pd.read_csv('data02.csv',encoding = 'utf-8')df1_data3 = pd.read_excel('中國行政代碼對照表.xlsx',sheetname = 0)

1.2、清洗數據合并數據

df1_data3['行政編碼'] = df1_data3['行政編碼'].values.astype(np.object) df1_data3.columns = ['行政編碼','戶籍所在地_省','戶籍所在地_市','戶籍所在地_區/縣','戶籍所在地_lng','戶籍所在地_lat'] df = pd.concat([df1_data1,df1_data2]) df1 = pd.merge(df,df1_data3,left_on = '戶籍地城市編號',right_on = '行政編碼') df1['省'] = df1['工作地'].str.split('省').str[0] df1['市'] = df1['工作地'].str.split('省').str[1].str.split('市').str[0] df1['市'][df1['省'].str.len()>5] = df1['省'].str.split('市').str[0] df1['區縣'] = '' df1['區縣'][(df1['工作地'].str.contains('區'))&(df1['市'].str.len()>5)] = df1['市'].str.split('區').str[0] + '區' df1['區縣'][(df1['工作地'].str.contains('區'))&(df1['市'].str.len()<5)] = df1['工作地'].str.split('市').str[1].str.split('區').str[0] + '區' df1['區縣'][(df1['工作地'].str.contains('縣'))&(df1['市'].str.len()>5)] = df1['市'].str.split('縣').str[0] + '縣' df1['區縣'][(df1['工作地'].str.contains('縣'))&(df1['市'].str.len()<5)] = df1['工作地'].str.split('市').str[1].str.split('縣').str[0] + '縣' df1['區縣'][(df1['區縣'].str.len()>5) | (df1['區縣'].str.len()<2)] = '未識別' df1['市'][df1['市'].str.len()>5] = '未識別' df1['省'][df1['省'].str.len()>5] = '未識別' df1 = df1[['姓', '工作地','戶籍所在地_省', '戶籍所在地_市', '戶籍所在地_區/縣','戶籍所在地_lng', '戶籍所在地_lat', '省', '市', '區縣']] df1.columns = ['姓', '工作地','戶籍所在地_省', '戶籍所在地_市', '戶籍所在地_區縣','戶籍所在地_lng', '戶籍所在地_lat', '工作地點_省', '工作地_市', '工作地點_區縣']

2.1、導出王姓和姬姓數據為excel文件

df1_wang1 = df1[df1['姓'] == '王'] writer = pd.ExcelWriter('C:\\Users\\Administrator\\Desktop\\項目09中國姓氏排行研究\\wang1.xlsx') df1_wang1.to_excel(writer,'sheet',index = False) writer.save()df1_wang2 = df1_wang1.groupby(['姓','戶籍所在地_lng', '戶籍所在地_lat'])['戶籍所在地_市'].count() df1_wang2 = df1_wang2.reset_index() writer = pd.ExcelWriter('C:\\Users\\Administrator\\Desktop\\項目09中國姓氏排行研究\\wang2.xlsx') df1_wang2.to_excel(writer,'sheet',index = False) writer.save()df1_ji1 = df1[df1['姓'] == '姬'] writer = pd.ExcelWriter('C:\\Users\\Administrator\\Desktop\\項目09中國姓氏排行研究\\ji1.xlsx') df1_ji1.to_excel(writer,'sheet',index = False) writer.save() df1_ji2 = df1_ji1.groupby(['姓','戶籍所在地_lng', '戶籍所在地_lat'])['戶籍所在地_市'].count() df1_ji2 = df1_ji2.reset_index() writer = pd.ExcelWriter('C:\\Users\\Administrator\\Desktop\\項目09中國姓氏排行研究\\ji2.xlsx') df1_ji2.to_excel(writer,'sheet',index = False) writer.save()

2.2、通過powermap及echart繪制熱力分布圖和柱狀分布圖
姬姓熱力分布

姬姓柱狀分布

王姓熱力分布

王姓柱狀分布

2.3、篩選姓氏排名TOP20數據

df1_top20 = df1['姓'].value_counts()[:20] df1_top20 = pd.DataFrame(df1_top20) df1_top20['xszb'] = df1_top20['姓']/df1_top20['姓'].sum() df1_top20.columns = ['xssl','xszb'] df1_top20.index.name = 'xs'

2.4、繪制姓氏top20聯動圖標,包括省份人口占比及人口數量

name = df1_top20.index.tolist() source1 = ColumnDataSource(data = df1_top20)hover1 = HoverTool(tooltips=[("姓氏", "@xs"),("姓氏計數", "@xssl")]) p1 = figure(plot_width = 800,plot_height = 300,x_range = name,title = '姓氏數量排行TOP20',tools=[hover1,'box_select,reset,xwheel_zoom,pan,crosshair']) p1.vbar(x = 'xs',bottom = 0,top = 'xssl',width = 0.9,source = source1,color = 'red',line_color = 'white',alpha = 0.8) p1.ygrid.grid_line_dash = [4,6] p1.xgrid.grid_line_dash = [4,6]hover2 = HoverTool(tooltips=[("姓氏", "@xs"),("姓氏計數", "@xszb")]) p2 = figure(plot_width = 800,plot_height = 300,x_range = p1.x_range,title = '姓氏占比排行TOP20',tools=[hover2,'box_select,reset,xwheel_zoom,pan,crosshair']) p2.vbar(x = 'xs',bottom = 0,top = 'xszb',width = 0.9,source = source1,color = 'green',line_color = 'white',alpha = 0.8) p2.ygrid.grid_line_dash = [4,6] p2.xgrid.grid_line_dash = [4,6]p = gridplot([p1],[p2]) show(p)

3.1、導出方姓通勤數據

df2_fang = df1[df1['姓'] == '方'] df2_fang = df2_fang[df2_fang['工作地_市'] !='未識別'] df2_fang = df2_fang[df2_fang['工作地點_區縣'] !='未識別'] df2_fang = df2_fang[['姓','戶籍所在地_市','戶籍所在地_區縣','戶籍所在地_lng','戶籍所在地_lat','工作地_市','工作地點_區縣']] df2_fang = df2_fang[df2_fang['戶籍所在地_區縣']!=df2_fang['工作地點_區縣']] df2_fang.columns = ['x','hj_s','hj_qx','hj_lng','hj_lat','gz_s','gz_qx'] df2_fang = df2_fang[df2_fang['hj_lng']>0] df2_fangc = df2_fang.groupby(['hj_s','hj_qx','hj_lng','hj_lat','gz_s','gz_qx']).count() df2_fangc = df2_fangc.reset_index() writer = pd.ExcelWriter('C:\\Users\\Administrator\\Desktop\\項目09中國姓氏排行研究\\fang.xlsx') df2_fangc.to_excel(writer,'sheet',index = False) writer.save()

3.2、通過qgis繪制兩點間直線距離,計算通勤距離為value,通過echart繪制通勤動態圖

總結

以上是生活随笔為你收集整理的中国姓氏排行研究的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。