Python+Tableau广东省人口普查可视化的实现

yizhihongxing

以下是“Python+Tableau广东省人口普查可视化的实现”的完整攻略:

1. 数据获取

1.1 数据来源

数据可以从广东省统计局的网站上获取,包括:

  • 广东省人口普查数据
  • 广东省行政区划数据

我们可以通过 Python 的 requests 库和 bs4 库爬取这些数据。

1.2 爬取数据

请参考以下代码示例:

import requests
from bs4 import BeautifulSoup

# 网页的 URL
url = 'http://www.gdstats.gov.cn/tjsj/tszct/

# 发起 GET 请求 
html = requests.get(url).text

# 把 HTML 解析成 BeautifulSoup 对象
soup = BeautifulSoup(html, 'html.parser')

# 获取人口普查数据的 URL
renkou_url = soup.select('a[href*=renkou]')[0]['href']

# 发起 GET 请求,获取人口普查数据 
renkou_data = requests.get(renkou_url).content

# 获取行政区划数据的 URL
xzqh_url = soup.select('a[href*=xzqhdm]')[0]['href']

# 发起 GET 请求,获取行政区划数据 
xzqh_data = requests.get(xzqh_url).content

2. 数据处理

2.1 数据清洗

为了使数据能够在 Tableau 中进行可视化,我们需要对数据进行一些清洗。比如,我们需要对人口普查数据中的统计局标记(*)进行清理,将值为空的单元格进行填充,并将数据类型进行转换。

请参考以下代码示例:

import pandas as pd

# 读取从网页上获取的人口普查数据
df_renkou = pd.read_excel(renkou_data)

# 去掉人口普查数据中的统计局标记(*)
df_renkou = df_renkou.replace('*', '', regex=True)

# 将所有值为空的单元格填充为 0
df_renkou = df_renkou.fillna(0)

# 将数据类型进行转换
df_renkou = df_renkou.astype({'年末总人口(万人)': 'int', '男性人口(万人)': 'int', '女性人口(万人)': 'int'})

# 读取从网页上获取的行政区划数据
df_xzqh = pd.read_excel(xzqh_data)

# 将行政区划数据的代码列名称修改为“区划代码”
df_xzqh = df_xzqh.rename(columns={'行政区划代码': '区划代码'})

2.2 组合数据

我们需要将人口普查数据和行政区划数据关联起来,以便后续的可视化处理。

请参考以下代码示例:

# 把行政区划数据和人口普查数据进行合并
df = pd.merge(df_xzqh, df_renkou, on='区划代码')

3. 可视化处理

3.1 可视化设计

在 Tableau 中,我们可以使用各种图表和图形来展示数据。比如,我们可以使用地图、条形图、饼图等来展示广东省人口普查数据和行政区划数据。

3.2 可视化实现

请参考以下代码示例:

import tableauhyperapi as tab_api

# 创建 Tableau 超级数据文件
filename = 'guangdong_population.hyper'
table_name = 'population'

# 创建连接
with tab_api.Connection(endpoint='localhost', 
                         server_name='localhost', 
                         username='myusername', 
                         password='mypassword') as connection:
    # 创建表结构
    table_definition = tab_api.TableDefinition()
    table_definition.setDefaultCollation(tab_api.Collation.EN_US_CI_AI)
    table_definition.addColumn('区划代码', tab_api.Type.CHAR_STRING)
    table_definition.addColumn('行政区划名称', tab_api.Type.CHAR_STRING)
    table_definition.addColumn('年末总人口(万人)', tab_api.Type.DOUBLE)
    table_definition.addColumn('男性人口(万人)', tab_api.Type.DOUBLE)
    table_definition.addColumn('女性人口(万人)', tab_api.Type.DOUBLE)

    # 在超级数据文件中创建表
    table = connection.catalog.create_table(table_definition, table_name)

    # 准备数据
    data = []
    for _, row in df.iterrows():
        data.append([row['区划代码'], 
                    row['行政区划名称'], 
                    row['年末总人口(万人)'], 
                    row['男性人口(万人)'], 
                    row['女性人口(万人)']])

    # 添加数据到表中
    table.add_rows(data)

    # 创建数据源
    datasource_name = 'guangdong_population_datasource'
    datasource = tab_api.TableauDatasource(connection, 
                                           default_project_id='My Project',
                                           name=datasource_name)
    datasource.publish(tab_api.DatasourceType.Tableau)

    # 创建工作簿
    workbook_name = 'guangdong_population_workbook'
    workbook = tab_api.Workbook(connection, default_project_id='My Project', name=workbook_name)
    workbook.publish()

    # 创建工作表
    worksheet_name = 'guangdong_population_worksheet'
    worksheet = workbook.create_worksheet(name=worksheet_name)

    # 创建地图(地理区域)
    map_object = worksheet.add_map('geometry(geometry)')
    map_object.latitude = 23.75
    map_object.longitude = 113.85
    map_object.floating=True
    map_object.allow_internet_access = True

    # 设置地理区域的边界
    map_object.set_geometry_column('geometry', 'Spatial')
    map_object.set_map_layer('admin_boundaries', 'geometry')

    # 在地图上添加数据
    dataset = tab_api.Table(join_expression='population')
    dataset.add_columns(['行政区划名称', '年末总人口(万人)'])
    map_object.add_data(dataset, join_on=('行政区划名称', 'Name'))

3.3 可视化发布

最后,我们需要把生成的数据源、工作簿和工作表发布到 Tableau Server 或 Tableau Online 上去。

示例代码参考:

# 发布数据源
session.publish(datasource,
                'My Datasource',
                project_id='My Project',
                overwrite=True)

# 发布工作簿
session.publish(workbook,
                'My Workbook',
                project_id='My Project',
                overwrite=True,
                show_tabs=True)

# 发布工作表
session.publish(worksheet,
                'My Worksheet',
                project_id='My Project',
                overwrite=True,
                show_tabs=True)

这就是关于“Python+Tableau广东省人口普查可视化的实现”的完整攻略。希望能对你有帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python+Tableau广东省人口普查可视化的实现 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Python实现的简单读写csv文件操作示例

    下面是Python实现简单读写csv文件的攻略。 读取CSV文件 import csv with open(‘example.csv’, newline=”) as csvfile: reader = csv.reader(csvfile) for row in reader: print(row) 以上代码实现了读取名称为 example.csv 的文件…

    python 2023年6月3日
    00
  • Python 实现一行输入多个数字(用空格隔开)

    要实现一行输入多个数字(用空格隔开),可以使用Python中的split函数来将输入的字符串按照空格分割成一个列表,然后再将列表中的每个数字转换为整数或浮点数。 下面是Python实现一行输入多个数字的示例代码: # 输入多个整数时示例 nums = input("请输入多个整数,用空格隔开:").split() nums = [int(…

    python 2023年6月6日
    00
  • python基于watchdog库全自动化监控目录文件

    下面是详细讲解”python基于watchdog库全自动化监控目录文件”的完整攻略。 什么是watchdog库 watchdog库是一个Python库,它可以监视文件系统中的任何目录变化,并根据您的需要执行操作。它支持文件和目录的监控,并通过轮询文件系统来检查更改。可以通过在此基础上构建项目来轻松实现全自动化监控。 安装watchdog库 请先确保已按照所需…

    python 2023年6月5日
    00
  • python字符串定义的三种方式

    当我们使用Python编程时,字符串是经常使用的数据类型之一。Python提供了三种方法来定义字符串,它们分别是使用单引号、双引号和三引号。下面我们将详细介绍这三种方式。 1. 单引号定义字符串 使用单引号定义字符串是最常见的方法,只需要在单引号之间输入字符串内容即可。示例代码如下: str1 = ‘This is a string example usin…

    python 2023年6月5日
    00
  • HTML中使用python屏蔽一些基本功能的方法

    在HTML中使用Python屏蔽一些基本功能的方法,可以通过以下两种方式实现: 1. 使用Jinja2模板引擎 Jinja2是一个流行的Python模板引擎,可以将Python代码嵌入到HTML模板中。通过使用Jinja2模板引擎,可以在HTML中使用Python屏蔽一些基本功能。 以下是一个示例,演示如何使用Jinja2模板引擎在HTML中屏蔽一些基本功能…

    python 2023年5月15日
    00
  • Python中给List添加元素的4种方法分享

    以下是详细讲解“Python中给List添加元素的4种方法分享”的完整攻略。 在Python中,列表是一种常用的数据类型,提供了多种方法添加元素。本文将介绍Python中给List添加素的4种方法,并提供两个示例说明。 添加元素 1. append() append()方法用于在列表的末尾添加一个元素。例如: lst = [1, 2, 3] lst.appe…

    python 2023年5月13日
    00
  • Python Matplotlib绘图基础知识代码解析

    Python Matplotlib绘图基础知识代码解析 Matplotlib是Python中最流行的绘图库之一,它可以用于绘制各种类型的图表,包括线图、散点图、柱状图、饼图等。本文将详细讲解Matplotlib绘图基础知识,包括创建图表、设置图表属性、添加图例等。 创建图表 使用Matplotlib可以方便地创建各种类型的图表。以下是一个创建线图的示例: i…

    python 2023年5月15日
    00
  • Python小程序 控制鼠标循环点击代码实例

    下面就来讲一下“Python小程序 控制鼠标循环点击代码实例”的完整攻略。 一、实现思路 首先,我们需要借助第三方库pyautogui来完成控制鼠标的操作。然后,通过使用循环语句和延时函数time.sleep()来实现循环点击。 完整的实现思路如下: 引入第三方库pyautogui 使用pyautogui.moveTo()将鼠标移动到需要点击的位置 使用py…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部