河南省建设教育协会网站,模版网站是什么意思,网站设置怎么删除,帝国cms网站公告怎么做使用Python进行城市市场潜能分析
简介
本教程将指导您如何使用Python和Pandas库来处理城市数据#xff0c;包括GDP、面积和城市间距离。我们将计算每个城市的市场潜能#xff0c;这有助于了解各城市的经济影响力。
步骤 1: 准备环境
确保您的环境中安装了Python和以下库包括GDP、面积和城市间距离。我们将计算每个城市的市场潜能这有助于了解各城市的经济影响力。
步骤 1: 准备环境
确保您的环境中安装了Python和以下库
pandasnumpymatplotlib
可以通过以下命令安装缺失的库
pip install pandas numpy matplotlib openpyxl步骤 2: 读取数据
使用Pandas读取包含城市名称、年份、GDP、面积和城市ID的Excel文件。
import pandas as pd# 读取数据
data_df pd.read_excel(283地级市数据.xlsx, sheet_nameSheet1, header0)步骤 3: 数据预处理
确保数据框的索引和列名正确设置以便进行后续计算。
# 设置城市ID为索引
data_df.set_index(id, inplaceTrue)步骤 4: 读取距离数据
读取城市间距离数据确保第一行和第一列包含城市ID。
distance_df pd.read_excel(规整化的283地级市的欧氏距离(带标题).xlsx, index_col0, header0)步骤 5: 计算市场潜能
计算每个城市的市场潜能考虑其GDP和与其他城市的距离。
import numpy as np# 计算di值
dii_values (2/3) * (data_df[area] / np.pi)**0.5# 初始化市场潜能DataFrame
market_potential_df pd.DataFrame(indexdata_df.index, columnsdata_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, colorblue)
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_nameSheet1, header0)# 读取距离数据第一行为城市ID第一列为城市ID
distance_df pd.read_excel(规整化的283地级市的欧氏距离(带标题).xlsx, index_col0, header0)# 计算di值
dii_values (2/3) * (data_df[area] / np.pi)**0.5# 初始化市场潜能DataFrame使用城市ID作为索引
market_potential_df pd.DataFrame(indexdata_df[id].unique(), columnsdata_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, inplaceTrue)# 筛选石家庄市的数据城市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, errorscoerce)# 绘制散点图
plt.figure(figsize(10, 6))
plt.scatter(shijiazhuang_potential.index, shijiazhuang_potential.values, colorblue)
plt.title(石家庄2003-2015年城市潜力散点图)
plt.xlabel(年份)
plt.ylabel(城市潜力)
plt.grid(True)
plt.show()