python列表姓氏_python数据分析实例(六) 中国姓氏数据
bokeh聯(lián)動柱狀圖,Excel空間柱狀圖、空間熱力圖,Echarts空間柱狀圖,常用函數(shù):
df['工作地_省'] = df['工作地'].str.split('省').str[0]
df['工作地_市'] = ''
df['工作地_市']= df['工作地'].str.split('省').str[1].str.split('市').str[0]
df['工作地_市'][df['工作地_省'].str.len() >= 5] = df['工作地_省'].str.split('市').str[0]
data_wang1 = df[df['姓'] == '王']
writer = pd.ExcelWriter('C:/Users/Administrator/Desktop/wang1.xlsx')
data_wang1.to_excel(writer,'sheet1',index=False)
writer.save()
price11middle_SSS_top_95['zkl_range'] = price11middle_SSS_top_95['zkl_range'].astype(str)一,concat上下合并數(shù)據(jù),merge左右合并數(shù)據(jù)
二, x=各姓,y= 個數(shù) /占比 bokeh聯(lián)動柱狀圖
三, x=各地,y= 王姓個數(shù) Excel空間柱狀圖、空間熱力圖
四, x=各地,y= 王姓個數(shù) Echarts空間柱狀圖
一,concat上下合并數(shù)據(jù),merge左右合并數(shù)據(jù) .str.split('省').str[0]
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# 不發(fā)出警告
from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource
# 導(dǎo)入圖表繪制、圖標展示模塊
# 導(dǎo)入ColumnDataSource模塊
import os
os.chdir('C:/Users/Administrator/Desktop/')
# 創(chuàng)建工作路徑
#
df01 = pd.read_csv('data01.csv',encoding = 'utf-8')
df02 = pd.read_csv('data02.csv',encoding = 'utf-8')
df_city = pd.read_excel('中國行政代碼對照表.xlsx')
# 讀取數(shù)據(jù)
df = pd.concat([df01,df02])
df.to_csv('preliminary.csv')
df = pd.read_csv('preliminary.csv', index_col=0)
df = pd.merge(df,df_city,left_on='戶籍地城市編號',right_on = '行政編碼')
df['工作地'] = df['工作地'].str[:15] # 只提取工作地前15個字符即可
del df['行政編碼']
del df['戶籍地城市編號']
# 合并數(shù)據(jù),添加經(jīng)緯度字段
# 刪除無用字段
# 分別提取“工作地”中的省、市、區(qū)縣
# 新建字段“工作地-省”,“工作地-市”,“工作地-區(qū)縣”,如果數(shù)據(jù)中“工作地”字段無法提取省和市,則用“未識別”填充單元格
# *通過查看識別后的單元格,如果字數(shù)超過5則為“未識別”
df['工作地_省'] = df['工作地'].str.split('省').str[0]
# 識別工作地-省
df['工作地_市'] = ''
df['工作地_市']= df['工作地'].str.split('省').str[1].str.split('市').str[0]
df['工作地_市'][df['工作地_省'].str.len() >= 5] = df['工作地_省'].str.split('市').str[0]
# 識別工作地-市
# 在未識別出省的數(shù)據(jù)中,可能會有市的信息
df['工作地_區(qū)縣'] = ''
df['工作地_區(qū)縣'][(df['工作地_市'].str.len() < 5)&(df['工作地'].str.contains('區(qū)'))] = df['工作地'].str.split('市').str[1].str.split('區(qū)').str[0] + '區(qū)'
df['工作地_區(qū)縣'][(df['工作地_市'].str.len() > 5)&(df['工作地'].str.contains('區(qū)'))] = df['工作地'].str.split('區(qū)').str[0] + '區(qū)'
df['工作地_區(qū)縣'][(df['工作地_市'].str.len() < 5)&(df['工作地'].str.contains('縣'))] = df['工作地'].str.split('市').str[1].str.split('縣').str[0] + '縣'
df['工作地_區(qū)縣'][(df['工作地_市'].str.len() > 5)&(df['工作地'].str.contains('縣'))] = df['工作地'].str.split('縣').str[0] + '縣'
#### 識別工作地-區(qū)縣
###
df['工作地_省'][df['工作地_省'].str.len() > 5 ] = '未識別'
df['工作地_市'][df['工作地_市'].str.len() > 5 ] = '未識別'
df['工作地_區(qū)縣'][(df['工作地_區(qū)縣'].str.len() > 5) | (df['工作地_區(qū)縣'].str.len() < 2)] = '未識別'
df['工作地_市'][df['工作地_市'].str.len() <= 1 ] = '未識別'
df['工作地_省'][df['工作地_省'].str.len() <= 1 ] = '未識別'
## 整理未識別單元格
#
df.columns = ['姓','工作地','戶籍所在地_省','戶籍所在地_市','戶籍所在地_區(qū)縣','戶籍所在地_lng','戶籍所在地_lat',
'工作地_省','工作地_市','工作地_區(qū)縣']
print('讀取數(shù)據(jù)共%i條' % len(df))
## 數(shù)據(jù)整理
shenrufeng = df[:100]
print('finished')
二, x=各姓,y= 個數(shù) /占比 bokeh聯(lián)動柱狀圖
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import warnings
warnings.filterwarnings('ignore')
# 不發(fā)出警告
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題,或者轉(zhuǎn)換負號為字符串,中文不顯
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['KaiTi']
mpl.rcParams['font.serif'] = ['KaiTi']
mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負號'-'顯示為方塊的問題,或者轉(zhuǎn)換負號為字符串,中文不顯
from bokeh.plotting import figure,show,output_file
from bokeh.models import ColumnDataSource
# 導(dǎo)入圖表繪制、圖標展示模塊
# 導(dǎo)入ColumnDataSource模塊
import os
os.chdir('C:/Users/Administrator/Desktop/')
name_count = df['姓'].value_counts()
result1_01 = pd.DataFrame({'count':name_count, 'count_pre':name_count/name_count.sum()})[:20]
#result1_01.iloc[:20].plot(kind = 'bar',rot = 0,figsize = (10,6))
# bokeh出聯(lián)動柱狀圖
from bokeh.models import HoverTool
from bokeh.layouts import gridplot
output_file("line66.html")
# 導(dǎo)入模塊
name_lst = result1_01.index.tolist()
result1_01.index.name = 'index'
source = ColumnDataSource(result1_01)
# 創(chuàng)建ColumnDataSource數(shù)據(jù)
hover1 = HoverTool(tooltips=[("姓氏計數(shù)", "@count")]) # 設(shè)置標簽顯示內(nèi)容
result1 = figure(plot_width=800, plot_height=250,x_range = name_lst,
title="中國姓氏TOP20 - 計數(shù)" ,
tools=[hover1,'reset,xwheel_zoom,pan']) # 構(gòu)建繪圖空間
result1.vbar(x='index', top='count', source=source,width=0.9, alpha = 0.7,color = 'red')
result1.ygrid.grid_line_dash = [6, 4]
result1.xgrid.grid_line_dash = [6, 4]
# 柱狀圖1
hover2 = HoverTool(tooltips=[("姓氏占比", "@count_pre")]) # 設(shè)置標簽顯示內(nèi)容
result2 = figure(plot_width=800, plot_height=250,x_range = result1.x_range,
title="中國姓氏TOP20 - 占比" ,
tools=[hover2,'reset,xwheel_zoom,pan'])
result2.vbar(x='index', top='count_pre', source=source,width=0.9, alpha = 0.7,color = 'green')
result2.ygrid.grid_line_dash = [6, 4]
result2.xgrid.grid_line_dash = [6, 4]
# 柱狀圖2
p = gridplot([[result1], [result2]])
# 組合圖表
show(p)
三, Excel空間柱狀圖 Excel空間熱力圖
data_wang1 = df[df['姓'] == '王']
writer = pd.ExcelWriter('C:/Users/Administrator/Desktop/wang1.xlsx')
data_wang1.to_excel(writer,'sheet1',index=False)
writer.save()
# 導(dǎo)出數(shù)據(jù)1
四, Echarts空間柱狀圖
①, 導(dǎo)出數(shù)據(jù)
data_wang2 = data_wang1.groupby(['戶籍所在地_lng','戶籍所在地_lat','戶籍所在地_市'])['姓'].count()
data_wang2 = data_wang2.reset_index()
data_wang2.columns= ['lng', 'lat', 'name', 'value']
data_wang2=data_wang2[['name', 'lng', 'lat', 'value']]
writer = pd.ExcelWriter('C:/Users/Administrator/Desktop/wang2.xlsx')
data_wang2.to_excel(writer,'sheet1',index=False)
writer.save()
# 導(dǎo)出數(shù)據(jù)2
print('導(dǎo)出完成!')
②, 轉(zhuǎn)成json
import pandas as pd
import os
os.chdir('C:\\Users\\Administrator\\Desktop\\') # 輸入文件所在路徑,例如:'C:/Users/Desktop/'
data = pd.read_excel('wang2.xlsx', sheet_name=0,header=0)
datajs = data.to_json(orient='records',force_ascii=False)
print('轉(zhuǎn)換后數(shù)據(jù)為:\n',datajs)
[{"name":"信陽","lng":-1.0,"lat":-1.0,"value":14},{"name":"包頭","lng":-1.0,"lat":-1.0,"value":3},{"name":"呼倫貝爾","lng":-1.0,"lat":-1.0,"value":1},——————{"name":"雞西","lng":133.1211060726,"lat":45.9972762035,"value":10},{"name":"佳木斯","lng":133.2733283638,"lat":47.8336846866,"value":5},{"name":"雙鴨山","lng":133.7292586825,"lat":47.0726285429,"value":8},{"name":"佳木斯","lng":134.296044164,"lat":47.9261051999,"value":5}]
③, 拾取中心點坐標在線地圖經(jīng)度緯度查詢 - 經(jīng)緯度查詢地名|地名查詢經(jīng)緯度 -GPSspg?www.gpsspg.com
④, mapstyle 與mapAccessToken設(shè)置https://www.mapbox.com/?www.mapbox.com
⑤, 導(dǎo)出html
總結(jié)
以上是生活随笔為你收集整理的python列表姓氏_python数据分析实例(六) 中国姓氏数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 北京环球影城不刺激的项目
- 下一篇: python web.py 404_找不