当前位置: 首页 > news >正文

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库来处理城市数据&#xff0c;包括GDP、面积和城市间距离。我们将计算每个城市的市场潜能&#xff0c;这有助于了解各城市的经济影响力。 步骤 1: 准备环境 确保您的环境中安装了Python和以下库&…...

如何搭建JMeter分布式集群环境来进行性能测试

在性能测试中&#xff0c;当面对海量用户请求的压力测试时&#xff0c;单机模式的JMeter往往力不从心。如何通过分布式集群环境&#xff0c;充分发挥JMeter的性能测试能力&#xff1f;这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么&#xff0c;如何轻松搭建…...

【Halcon】 derivate_gauss

1、derivate_gauss Halcon中的derivate_gauss算子是一个功能强大的图像处理工具,它通过将图像与高斯函数的导数进行卷积,来计算各种图像特征。这些特征在图像分析、物体识别、图像增强等领域具有广泛的应用。 参数解释 Sigma:高斯函数的标准差,用于控制平滑的程度。Sigma…...

stm32中systick时钟pinlv和系统节拍频率有什么区别,二者有无影响?

在STM32中&#xff0c;SysTick时钟频率和系统节拍频率是两个不同的概念&#xff0c;它们之间存在区别&#xff0c;并且这种区别会对系统的运行产生一定的影响。以下是对这两个概念的详细解释以及它们之间关系的探讨&#xff1a; 一、SysTick时钟频率 定义&#xff1a;SysTick…...

柔性数组详解+代码展示

系列文章目录 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…...

前端入门指南:Webpack插件机制详解及应用实例

前言 在现代前端开发中&#xff0c;模块化和构建工具的使用变得越来越重要&#xff0c;而Webpack作为一款功能强大的模块打包工具&#xff0c;几乎成为了开发者的默认选择。Webpack不仅可以将各种资源&#xff08;如JavaScript文件、CSS文件、图片等&#xff09;打包成优化后的…...

C++备忘录模式

在读《大话设计模式》&#xff0c;在此记录有关C实现备忘录模式。 场景引入&#xff1a;游戏中的存档&#xff0c;比如打boss之前记录人物的血量等状态。 下面代码是自己根据理解实现的存档人物血量功能。 #include <iostream>using namespace std;//声明玩家类 class …...

【Electron学习笔记(四)】进程通信(IPC)

进程通信&#xff08;IPC&#xff09; 进程通信&#xff08;IPC&#xff09;前言正文1、渲染进程→主进程&#xff08;单向&#xff09;2、渲染进程⇌主进程&#xff08;双向&#xff09;3、主进程→渲染进程 进程通信&#xff08;IPC&#xff09; 前言 在Electron框架中&…...

Java 中的 remove 方法深度解析

在 Java 编程中&#xff0c;remove方法是一个经常被使用的操作。它可以用于从各种数据结构中移除特定的元素&#xff0c;帮助我们有效地管理和操作数据。本文将深入探讨 Java 中的remove方法&#xff0c;包括在不同数据结构中的应用、使用场景、注意事项以及性能考虑等方面。 …...

企业品牌曝光的新策略:短视频矩阵系统

企业品牌曝光的新策略&#xff1a;短视频矩阵系统 在当今数字化时代&#xff0c;短视频已经渗透到我们的日常生活之中&#xff0c;成为连接品牌与消费者的关键渠道。然而&#xff0c;随着平台于7月20日全面下线了短视频矩阵的官方接口&#xff0c;许多依赖于此接口的小公司和内…...

【初阶数据结构与算法】二叉树顺序结构---堆的应用之堆排、Top-K问题

文章目录 一、堆排引入之使用堆排序数组二、真正的堆排1.向上调整算法建堆2.向下调整算法建堆3.向上和向下调整算法建堆时间复杂度比较4.建堆后的排序4.堆排序和冒泡排序时间复杂度以及性能比较 三、Top-K问题 一、堆排引入之使用堆排序数组 在了解真正的堆排之前&#xff0c;我…...

vue3 + ts 使用 el-tree

实现效果&#xff1a; 代码&#xff1a; <template><!-- el-tree 使用 --><div class"my-tree-container"><el-scrollbar height"100%"><el-tree ref"treeRef" :data"treeData" node-key"id" n…...

Create Stunning Word Clouds with Ease!

Looking to craft breathtaking word clouds? WordCloudStudio is your go-to solution! Whether you’re a marketer, educator, designer, or simply someone who loves visualizing data, this app has everything you need. Download now: https://apps.apple.com/app/wor…...

html+css网页设计 旅游 马林旅行社5个页面

htmlcss网页设计 旅游 马林旅行社5个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…...

python selenium(4+)+chromedriver最新版 定位爬取嵌套shadow-root(open)中内容

废话不多说&#xff0c;直接开始 本文以无界作为本文测试案例&#xff0c;抓取shadow-root&#xff08;open&#xff09;下的内容 shadow Dom in selenium&#xff1a; 首先先讲一下shadow Dom in selenium 版本的区别&#xff0c;链接指向这里 在Selenium 4版本 以及 chrom…...

React基础教程(11):useCallback记忆函数的使用

11、useCallback记忆函数 防止因为组件重新渲染,导致方法被重新创建,起到缓存作用,只有第二个参数变化了,才重新声明一次。 示例代码: import {useCallback, useState} from "react";const App = () =>...

arp-scan 移植到嵌入式 Linux 系统是一个涉及多个步骤的过程

将 arp-scan 移植到嵌入式 Linux 系统是一个涉及多个步骤的过程。arp-scan 是一个用于发送 ARP 请求以发现网络上设备的工具&#xff0c;它依赖于一些标准的 Linux 库和工具。以下是将 arp-scan 移植到嵌入式 Linux 系统的基本步骤&#xff1a; 1. 获取 arp-scan 源码 首先&a…...

【Linux】常用命令一

声明&#xff1a;以下内容均学习自《Linux就该这么学》一书。 Linux中的shell是一种命令行工具&#xff0c;它充当的作用是人与内核(硬件)之间的翻译官。 大多数Linux系统默认使用的终端是Bash解释器。 1、echo 用于在终端输出字符串或变量提取后的值。 echo "字符串…...

在鲲鹏麒麟服务器上部署MySQL主从集群

因项目需求需要部署主从MySQL集群&#xff0c;继续采用上次的部署的MySQL镜像arm64v8/mysql:latest&#xff0c;版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…...

Siknhorn算法介绍

SiknHorn算法是一个快速求解离散优化问题的经典算法&#xff0c;特别适用于计算离散分布之间的**最优传输&#xff08;Optimal Transport&#xff09;**距离&#xff1b; 最优传输问题介绍 计算两个概率分布 P 和 Q 之间的传输成本&#xff0c;通常表示为&#xff1a; 是传输…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

使用python进行图像处理—图像滤波(5)

图像滤波是图像处理中最基本和最重要的操作之一。它的目的是在空间域上修改图像的像素值&#xff0c;以达到平滑&#xff08;去噪&#xff09;、锐化、边缘检测等效果。滤波通常通过卷积操作实现。 5.1卷积(Convolution)原理 卷积是滤波的核心。它是一种数学运算&#xff0c;…...

Spring Boot SQL数据库功能详解

Spring Boot自动配置与数据源管理 数据源自动配置机制 当在Spring Boot项目中添加数据库驱动依赖&#xff08;如org.postgresql:postgresql&#xff09;后&#xff0c;应用启动时自动配置系统会尝试创建DataSource实现。开发者只需提供基础连接信息&#xff1a; 数据库URL格…...