Python爬虫——城市数据分析与市场潜能计算(Pandas库)
使用Python进行城市市场潜能分析
简介
本教程将指导您如何使用Python和Pandas库来处理城市数据,包括GDP、面积和城市间距离。我们将计算每个城市的市场潜能,这有助于了解各城市的经济影响力。
步骤 1: 准备环境
确保您的环境中安装了Python和以下库:
- pandas
- numpy
- matplotlib
可以通过以下命令安装缺失的库:
pip install pandas numpy matplotlib openpyxl
步骤 2: 读取数据
使用Pandas读取包含城市名称、年份、GDP、面积和城市ID的Excel文件。
import pandas as pd# 读取数据
data_df = pd.read_excel('283地级市数据.xlsx', sheet_name='Sheet1', header=0)
步骤 3: 数据预处理
确保数据框的索引和列名正确设置,以便进行后续计算。
# 设置城市ID为索引
data_df.set_index('id', inplace=True)
步骤 4: 读取距离数据
读取城市间距离数据,确保第一行和第一列包含城市ID。
distance_df = pd.read_excel('规整化的283地级市的欧氏距离(带标题).xlsx', index_col=0, header=0)
步骤 5: 计算市场潜能
计算每个城市的市场潜能,考虑其GDP和与其他城市的距离。
import numpy as np# 计算di值
dii_values = (2/3) * (data_df['area'] / np.pi)**0.5# 初始化市场潜能DataFrame
market_potential_df = pd.DataFrame(index=data_df.index, columns=data_df['year'].unique())# 计算市场潜能
for year in market_potential_df.columns:for city_id in market_potential_df.index:Y_i = data_df.loc[city_id, 'gdp']dii = dii_values.loc[city_id]MP_i = Y_i / dii if not np.isnan(Y_i) else 0for other_city_id in distance_df.index:if city_id != other_city_id:Y_j = data_df.loc[other_city_id, 'gdp']d_ij = distance_df.loc[city_id, other_city_id]MP_i += Y_j / d_ij if not np.isnan(Y_j) else 0market_potential_df.loc[city_id, year] = MP_i
步骤 6: 输出结果
将计算结果输出到新的Excel文件。
output_file_path = '市场潜能结果.xlsx'
market_potential_df.to_excel(output_file_path)
print(f"市场潜能数据已成功输出到 {output_file_path}")
步骤 7: 可视化分析
使用matplotlib绘制特定城市的市场潜能变化。
import matplotlib.pyplot as plt# 绘制石家庄2003-2015年的市场潜能散点图
shijiazhuang_id = 3 # 石家庄市的城市ID
shijiazhuang_potential = market_potential_df.loc[shijiazhuang_id, (market_potential_df.columns >= 2003) & (market_potential_df.columns <= 2015)]
plt.figure(figsize=(10, 6))
plt.scatter(shijiazhuang_potential.index, shijiazhuang_potential.values, color='blue')
plt.title('石家庄2003-2015年市场潜能散点图')
plt.xlabel('年份')
plt.ylabel('市场潜能')
plt.grid(True)
plt.show()
结论
本教程提供了一个完整的流程,从读取城市数据到计算市场潜能,最后将结果可视化。这有助于理解各城市的经济影响力和相互关系。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import osplt.rcParams['font.sans-serif'] = ['SimHei'] # 黑体
plt.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False # 正确显示负号# 读取GDP和面积数据,假设第一列为城市名称,第二列为年份,第三列为GDP,第四列为面积,第五列为城市ID
data_df = pd.read_excel('283地级市数据.xlsx', sheet_name='Sheet1', header=0)# 读取距离数据,第一行为城市ID,第一列为城市ID
distance_df = pd.read_excel('规整化的283地级市的欧氏距离(带标题).xlsx', index_col=0, header=0)# 计算di值
dii_values = (2/3) * (data_df['area'] / np.pi)**0.5# 初始化市场潜能DataFrame,使用城市ID作为索引
market_potential_df = pd.DataFrame(index=data_df['id'].unique(), columns=data_df['year'].unique())# 计算市场潜能
for year in market_potential_df.columns:for city_id in market_potential_df.index:# 找到当前城市和年份对应的GDPcity_data = data_df[(data_df['id'] == city_id) & (data_df['year'] == year)]if city_data.empty:continue # 如果没有找到数据,跳过这个城市和年份Y_i = city_data['gdp'].values[0]dii = dii_values[city_id]MP_i = Y_i / dii if not np.isnan(Y_i) else 0for other_city_id in distance_df.index:if city_id != other_city_id:# 找到其他城市和年份对应的GDPother_city_data = data_df[(data_df['id'] == other_city_id) & (data_df['year'] == year)]if other_city_data.empty:continue # 如果没有找到数据,跳过这个城市Y_j = other_city_data['gdp'].values[0]d_ij = distance_df.loc[city_id, other_city_id]MP_i += Y_j / d_ij if not np.isnan(Y_j) else 0market_potential_df.loc[city_id, year] = MP_i# 读取Excel文件到DataFrame
market_potential_df = pd.read_excel('市场潜能结果.xlsx')# 确保ID列是DataFrame的索引
market_potential_df.set_index('id', inplace=True)# 筛选石家庄市的数据,城市ID为3
shijiazhuang_id = 3 # 石家庄市的城市ID
shijiazhuang_potential = market_potential_df.loc[shijiazhuang_id, (market_potential_df.columns >= 2003) & (market_potential_df.columns <= 2015)]# 确保年份是数值类型
shijiazhuang_potential.index = pd.to_numeric(shijiazhuang_potential.index, errors='coerce')# 绘制散点图
plt.figure(figsize=(10, 6))
plt.scatter(shijiazhuang_potential.index, shijiazhuang_potential.values, color='blue')
plt.title('石家庄2003-2015年城市潜力散点图')
plt.xlabel('年份')
plt.ylabel('城市潜力')
plt.grid(True)
plt.show()
相关文章:
Python爬虫——城市数据分析与市场潜能计算(Pandas库)
使用Python进行城市市场潜能分析 简介 本教程将指导您如何使用Python和Pandas库来处理城市数据,包括GDP、面积和城市间距离。我们将计算每个城市的市场潜能,这有助于了解各城市的经济影响力。 步骤 1: 准备环境 确保您的环境中安装了Python和以下库&…...
面向对象(二)——类和对象(上)
1 类的定义 做了关于对象的很多介绍,终于进入代码编写阶段。 本节中重点介绍类和对象的基本定义,属性和方法的基本使用方式。 【示例】类的定义方式 // 每一个源文件必须有且只有一个public class,并且类名和文件名保持一致! …...
嵌入式开发之ARM(一)
目录 1、认识RAM 1.2、ARM全球分布 1.3、ARM产品线 1.4、授权的厂商 1.5、ARM体系架构 1.6、ARM系统硬件组成和运行原理 2、搭建开发环境 3、ARM的工作模式及寄存器 3.1、ARM工作模式 3.2、ARM工作模式及寄存器框图 3.2.1、CPSR寄存器 1、认识RAM 成立于1990年11月,前…...
Ai编程cursor + sealos + devBox实现登录以及用户管理增删改查(十三)
一、什么是 Sealos? Sealos 是一款以 Kubernetes 为内核的云操作系统发行版。它以云原生的方式,抛弃了传统的云计算架构,转向以 Kubernetes 为云内核的新架构,使企业能够像使用个人电脑一样简单地使用云。 二、适用场景 业务运…...
手机镜头组如此突出,考虑恢复以前设计
现在手头看重照相。结果导致的问题就是,在背部要突出很高,以容纳镜头组件。这种设计真的好吗?并不见得。真实照片: VIVO X200系列镜头组照片-CSDN博客 考虑到现在镜头的情形,我建议恢复以前的设计,就是把镜…...
debian ubuntu armbian部署asp.net core 项目 开机自启动
我本地的环境是 rk3399机器,安装armbian系统。 1.安装.net core 组件 sudo apt-get update && \sudo apt-get install -y dotnet-sdk-8.0或者安装运行库,但无法生成编译项目 sudo apt-get update && \sudo apt-get install -y aspnet…...
Linux lsmod命令用于显示已经加载到内核中的模块的状态信息
1、lsmod命令 Linux lsmod命令用于显示已经加载到内核中的模块的状态信息。执行lsmod命令后会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,应此在编译核心时,务须把全部的功能都放入核心。您可以将这些功能编译成一个个单独的模块&…...
新增工作台模块,任务中心支持一键重跑,MeterSphere开源持续测试工具v3.5版本发布
2024年11月28日,MeterSphere开源持续测试工具正式发布v3.5版本。 在这一版本中,MeterSphere新增工作台模块,工作台可以统一汇总系统数据,提升测试数据的可视化程度并增强对数据的分析能力,为管理者提供测试工作的全局…...
歇一歇,写写段子
无聊的日子都在写段子1.0 中学的时候喜欢看意林之类的杂志, 里面的作者用乱七八糟的理由跑去旅游,然后说“阻碍你脚步的永远只有逃离的勇气和对生活的热爱”, 我觉得太对了,可惜 12306 付款方式里没有勇气和热爱,不…...
【数据库系列】Spring Boot如何配置Flyway的回调函数
Flyway 提供了回调机制,使您能够在特定的数据库迁移事件发生时执行自定义逻辑。通过实现 Flyway 的回调接口,可以在迁移前后执行操作,如记录日志、执行额外的 SQL 语句等。 1. 创建自定义回调类 要配置 Flyway 的回调函数,需要创…...
Ubuntu源码安装gitlab13.7集群多前端《二》
Ubuntu源码安装gitlab13.7《一》 gitaly需要调整的服务 redis socket->ipbind ....* # 0.0.0.0pg vim /etc/postgresql/14/main/pg_hba.confhost all all ..../32 md5gitaly vim /home/git/gitaly/config.tomlbin_dir "/home/gi…...
QT5.14 QML串口助手
基于 QML的 串口调试助手 这个代码有缺失,补了部分代码 ASCII HEX 工程共享, Qt版本 5.14.1 COM_QML 通过百度网盘分享的文件:COM_QML.zip 链接:https://pan.baidu.com/s/1MH2d6gIPDSoaX-syVWZsww?pwd5tge 提取码:…...
SQL Server 实战 - 多种连接
目录 背景 一、多种连接 1. 复合连接条件 2. 跨数据库连接 3. 隐连接 4. 自连接 5. 多表外连接 6. UNION ALL 二、一个对比例子 背景 本专栏文章以 SAP 实施顾问在实施项目中需要掌握的 sql 语句为偏向进行选题: 用例:SAP B1 的数据库工具&am…...
Netty面试内容整理-Netty 工作原理
Netty 的工作原理主要基于异步、事件驱动的 I/O 模型,结合 Reactor 多线程模式和高效内存管理来实现高并发网络通信。以下是 Netty 的工作原理详细解析: Reactor 线程模型 Netty 基于 Reactor 模式 来处理并发连接和 I/O 操作,主要分为 单线程模型、多线程模型 和 主从多线程…...
数据结构基础之《(10)—快速排序》
一、快速排序基础 1、Partition过程 给定一个数组arr,和一个整数num。请把小于等于num的数放在数组的左边,大于num的数放在数组的右边。 要求额外空间复杂度O(1),时间复杂度O(N) 2、例子 区分小于等于num的数 (<区) [5 3 7 2 3 4 1] num…...
k8s 亲和性之Affinity
文章目录 1. Node Affinity(节点亲和性)节点亲和性类型配置示例常见场景: 2. Pod Affinity 和 Pod Anti-AffinityPod Affinity 配置示例Pod Anti-Affinity 配置示例常见场景: 3. 亲和性规则概述4. 亲和性和反亲和性的细节5. 亲和性…...
OpenNMT-py入门
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、安装二、快速开始1.准备数据2.训练模型3.翻译 总结 前言 OpenNMT-py是OpenNMT的Pytorch版本,它是一个 MIT的神经机器翻译框架。它被设计用于研…...
element-ui的下拉框报错:Cannot read properties of null (reading ‘disabled‘)
在使用element下拉框时,下拉框option必须点击输入框才关闭,点击其他地方报错:Cannot read properties of null (reading disabled) 造成报错原因:项目中使用了el-dropdown组件,但是在el-dropdown里面没有定义el-dropdo…...
【微服务】SpringBoot 对接飞书多维表格事件回调监听流程详解
目录 一、前言 二、前置准备 2.1 创建一个应用 2.2 准备一张测试使用的多维表 2.3 获取对接文档 2.4 工程中添加SDK 三、对接过程 3.1 配置Encrypt Key 和 Verification Token 3.2 配置订阅方式 3.3 添加事件 3.4 申请权限 3.5 编写订阅代码 3.6 订阅文档事件 3.7…...
docker常用命令
docker 常用命令 1、查看基本信息 docker info docker run --rm hello-world docker pull nginx docker run -p 8080:80 nginx docker image ls 查看详细信息 docker inspect nginx 查看当前正运行的容器 docker ps 后台运行容器 docker run -d -p 8080:80 nginx 给容器取个名字…...
如何调用百度文心一言API实现智能问答
诸神缄默不语-个人CSDN博文目录 百度需要先认证个人信息才能使用LLM API。 文章目录 1. 获得 API Key2. 撰写代码并实现提问和回答2.1 用openai包实现调用2.2 用openai包实现流式调用2.3 用openai包实现工具调用2.4 构建智能体2.5 文生图2.6 图生图 3. 用gradio建立大模型问答…...
数据类型扮演着至关重要的角色
在Java编程语言中,数据类型扮演着至关重要的角色,它们定义了变量能够存储的数据类型以及可以对这些数据执行的操作。Java的数据类型主要可以分为两大类:基本数据类型(也称为原始数据类型)和引用数据类型。 基本数据类…...
React 路由与组件通信:如何实现路由参数、查询参数、state和上下文的使用
🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…...
3.STM32通信接口之SPI通信---SPI实战(W25Q64存储模块介绍)《精讲》
上一节介绍了SPI的通信过程和方法,接下来就要进行STM32与外围模块通信了,这个模块是一块非易失型存储芯片,能够提供8MB的存储空间。接下来跟着Whappy脚步,进行探索新大陆吧!【免费】W25Q64(中英文数据手册)资源-CSDN文…...
yagmail邮件发送库:如何用Python实现自动化邮件营销?
🎥 作者简介: CSDN\阿里云\腾讯云\华为云开发社区优质创作者,专注分享大数据、Python、数据库、人工智能等领域的优质内容 🌸个人主页: 长风清留杨的博客 🍃形式准则: 无论成就大小,…...
vue elementui layout布局组件实现规则的弹性布局
背景:遇到在一个容器里,采用弹性盒布局的时候,如果元素个数改变,元素的排列会错乱。 解决方式 方式一:之前遇到的时候,是采用计算元素个数的方式,采用透明元素补齐的方式(比如一个有…...
Python虚拟环境管理工具:Pipenv
Python虚拟环境管理工具:Pipenv 前言1. Pipenv的功能和特点2. 安装Pipenv3. 基本使用3.1 创建项目并初始化 Pipenv3.2 使用虚拟环境3.3 安装开发依赖3.4 查看当前依赖3.5 锁定依赖3.6 升级依赖3.7 卸载依赖 4. Pipenv vs. Poetry5. 常见问题 总结 前言 Pipenv 是一个…...
Tomcat使用教程
下载地址:https://tomcat.apache.org/ 配置环境变量 变量名: CATALINA_HOME 变量值: D:\tools\apache-tomcat-9.0.97 Path: %CATALINA_HOME%\bin 启动Tomcat(打开命令提示符) startup.bat 解决乱码问题(打开conf\logging.properties) java.util.logging.Conso…...
Flink历史服务器-History Server
在以session模式提交作业后,我们可以在session集群里查看作业的详细信息,但是假如session集群重启后,则不能再查看到之前作业的信息;或者以yarn application或per-job或k8s application模式提交,都存在一个问题,就是在作业完成后(即Flink集群关闭),无法查看作业信息,…...
redis核心命令全局命令 + redis 常见的数据结构 + redis单线程模型
文章目录 一. 核心命令1. set2. get 二. 全局命令1. keys2. exists3. del4. expire5. ttl6. type 三. redis 常见的数据结构及内部编码四. redis单线程模型 一. 核心命令 1. set set key value key 和 value 都是string类型的 对于key value, 不需要加上引号, 就是表示字符串…...
Java后端请求想接收多个对象入参的数据方法
在Java后端开发中,如果我们希望接收多个对象作为HTTP请求的入参,可以使用Spring Boot框架来简化这一过程。Spring Boot提供了强大的RESTful API支持,能够方便地处理各种HTTP请求。 1.示例:使用Spring Boot接收包含多个对象的HTTP…...
傅里叶变换FT——DFT——FFT(三者之间的关系)
FT 周期函数 f(t) 的傅里叶变换实质上是将函数信号分解为不同频率、不同幅值的正、余弦信号,如下图所示。换言之,无数个不同频率,不同幅值的正、余弦信号来不断逼近周期函数 f(t) 。 分解出的这些信号的频率都是基频 ω0 的整数倍࿰…...
华为HarmonyOS 让应用快速拥有账号能力 -- 2 获取用户头像昵称
场景介绍 如应用需要完善用户头像昵称信息,可使用Account Kit提供的头像昵称授权能力,用户允许应用获取头像昵称后,可快速完成个人信息填写。以下只针对Account kit提供的头像昵称授权能力进行介绍,若要获取头像还可通过场景化控…...
git命令-基本使用
#git安装后-指定名称和邮箱: $ git config --global user.name "Your Name" $ git config --global user.email "emailexample.com" #查看远程分支: git branch -a #查看本地分支: git branch #切换分支: git checkout…...
学习笔记050——SpringBoot学习1
文章目录 Spring Boot1、Spring Boot 配置文件2、Spring Boot 整合视图层3、Spring Boot 整合持久层 Spring Boot Spring Boot 可以快速构建基于 Spring 的 Java 应用,可以快速整合各种框架,不需要开发者进行配置,Spring Boot 会实现自动装配…...
【前端开发】微信裁剪图片上传
Cropper.js: 一款基于 JavaScript 的开源图片裁剪神器,支持图片裁剪、缩放、旋转 HTML页面引用: css:<link rel"stylesheet" type"text/css" href"css/cropper.css" /> js:<sc…...
【Golang】WaitGroup 实现原理
文章目录 前言一、介绍二、实现原理三、使用方式四、总结 前言 在并发编程中,协调多个 goroutine 的执行顺序和同步是一个常见的需求。Golang 提供了 sync.WaitGroup 来简化这一过程。WaitGroup 允许主 goroutine 等待一组 goroutine 完成工作。本文将详细介绍 syn…...
从被动响应到主动帮助,ProActive Agent开启人机交互新篇章
在人工智能领域,我们正见证着一场革命性的变革。传统的AI助手,如ChatGPT,需要明确的指令才能执行任务。但现在,清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent,它能够主动观察环境…...
框架模块说明 #05 权限管理_03
背景 权限设计可以分为两个主要方面:操作权限和数据权限。前两篇文章已经详细介绍了操作权限的设计与实现,以及如何将其与菜单关联起来的具体方法。本篇将聚焦于数据权限,为您深入讲解相关的设计与实现方式。 全局开关 Value("${syst…...
autogen-agentchat 0.4.0.dev8版本的安装
1. 安装命令 pip install autogen-agentchat0.4.0.dev8 autogen-ext[openai]0.4.0.dev82. 版本检查 import autogen_agentchat print(autogen_agentchat.__version__)0.4.0.dev8import autogen_ext print(autogen_ext.__version__)0.4.0.dev83. 第一个案例 使用 autogen-age…...
JavaScript实现tab栏切换
JavaScript实现tab栏切换 代码功能概述 这段代码实现了一个简单的选项卡(Tab)切换功能。它通过操作 HTML 元素的类名(class)来控制哪些选项卡(Tab)和对应的内容板块显示,哪些隐藏。基本思路是先…...
yarn install遇到问题处理
1、Yarn在尝试安装一个依赖项时遇到了问题。具体来说,这个错误指出期望提升(hoist)的包的manifest文件丢失了,这通常是因为缓存中的数据损坏或不一致所致。 解决方法:有以下两种 1、清除Yarn缓存:运行 yarn…...
量化交易系统开发-实时行情自动化交易-8.9.通达信平台
19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来会对于通达信平台介绍。 通达信…...
qt QAnimationDriver详解
1、概述 QAnimationDriver是Qt框架中提供的一个类,它主要用于自定义动画帧的时间控制和更新。通过继承和实现QAnimationDriver,开发者可以精确控制动画的时间步长和更新逻辑,从而实现丰富和灵活的动画效果。QAnimationDriver与QAbstractAnim…...
Nginx篇之实现nginx转发兼容HTTP和Websocket两种协议
Nginx实现同时兼容http协议和websocket协议 map $http_upgrade $eop_gateway {default "eop-gateway-http";websocket "eop-gateway-ws"; }# 控制 Connection header map $http_upgrade $connection_upgrade {default "keep-alive"; # HTTP …...
底部导航栏新增功能按键
场景需求: 在底部导航栏添加power案件,单击息屏,长按 关机 如下实现图 借此需求,需要掌握技能: 底部导航栏如何实现新增、修改、删除底部导航栏流程对底部导航栏部分样式如何修改。 比如放不下、顺序排列、坑点如…...
Mac安装MINIO服务器实现本地上传和下载服务
0.MINIO学习文档 Minio客户端mc使用 | Elibaron学习笔记 1.Mac安装MINIO 中文官方网址:MinIO下载和安装 | 用于创建高性能对象存储的代码和下载内容 (1) brew 安装 brew install minio/stable/minio (2)安装完成,执行brew i…...
SpringMVC:参数传递之日期类型参数传递
环境准备和参数传递请见:SpringMVC参数传递环境准备 日期类型比较特殊,因为对于日期的格式有N多中输入方式,比如: 2088-08-182088/08/1808/18/2088… 针对这么多日期格式,SpringMVC该如何接收,它能很好的处理日期类…...
【C语言基础】斐波那契数列
相信你是最棒哒!!! 文章目录 题目描述 正确代码: 总结 题目描述 菲波那契数列是指这样的数列: 数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。 给出一个正整数k,要求菲波那契数列中第k个数…...
Ubuntu无法连接Linux
检查网络连接 确保你的机器能够正常连接互联网。你可以尝试 ping 一下 GitHub 或其他网站,确认是否有网络问题: ping github.com如果无法 ping 通 GitHub,检查一下你的网络连接。 检查 GitHub 状态 有时候 GitHub 本身可能会出现服务故障。你…...