用于绘制地图的底图/项目的 Pandas 错误

2023-12-04

我运行了下面的 Python 代码,这是一本书上的“绘制地图:可视化海地地震危机数据”的示例,Python 数据分析。第242-246页

该代码应该创建海地的绘图,但我收到如下错误:

Traceback (most recent call last):
  File "Haiti.py", line 74, in <module>
    x, y = m(cat_data.LONGITUDE, cat_data.LATITUDE)
  File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.py", line 1148, in __call__
    xout,yout = self.projtran(x,y,inverse=inverse)
  File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/proj.py", line 286, in __call__
    outx,outy = self._proj4(x, y, inverse=inverse)
  File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/pyproj.py", line 388, in __call__
    _proj.Proj._fwd(self, inx, iny, radians=radians, errcheck=errcheck)
  File "_proj.pyx", line 122, in _proj.Proj._fwd (src/_proj.c:1571)
RuntimeError

我检查了是否mpl_toolkits.底图 and proj模块在我的机器上安装正常。底图是从源安装的按照指示proj 是由 Homebrew 安装的,对我来说看起来不错。

如果您安装了底图和项目,此代码是否可以成功运行?如果不是,您认为这是模块安装问题、代码本身问题还是其他问题?

海地.csv文件可以从下载https://github.com/pydata/pydata-book/raw/master/ch08/Haiti.csv

import pandas as pd
import numpy as np
from pandas import DataFrame

data = pd.read_csv('Haiti.csv')

data = data[(data.LATITUDE > 18) & (data.LATITUDE < 20) &
        (data.LONGITUDE > -75) & (data.LONGITUDE < -70)
        & data.CATEGORY.notnull()]

def to_cat_list(catstr):
    stripped = (x.strip() for x in catstr.split(','))
    return [x for x in stripped if x]

def get_all_categories(cat_series):
    cat_sets = (set(to_cat_list(x)) for x in cat_series) 
    return sorted(set.union(*cat_sets))

def get_english(cat):
    code, names = cat.split('.') 
    if '|' in names:
        names = names.split(' | ')[1] 
    return code, names.strip()

all_cats = get_all_categories(data.CATEGORY)
english_mapping = dict(get_english(x) for x in all_cats)

def get_code(seq):
    return [x.split('.')[0] for x in seq if x]

all_codes = get_code(all_cats)
code_index = pd.Index(np.unique(all_codes))
dummy_frame = DataFrame(np.zeros((len(data), len(code_index))),
                        index=data.index, columns=code_index)

for row, cat in zip(data.index, data.CATEGORY): 
    codes = get_code(to_cat_list(cat)) 
    dummy_frame.ix[row, codes] = 1

data = data.join(dummy_frame.add_prefix('category_'))

from mpl_toolkits.basemap import Basemap 
import matplotlib.pyplot as plt

def basic_haiti_map(ax=None, lllat=17.25, urlat=20.25, lllon=-75, urlon=-71):
    # create polar stereographic Basemap instance. 
    m = Basemap(ax=ax, projection='stere', 
                lon_0=(urlon + lllon) / 2, 
                lat_0=(urlat + lllat) / 2,
                llcrnrlat=lllat, urcrnrlat=urlat, 
                llcrnrlon=lllon, urcrnrlon=urlon, 
                resolution='f')
    # draw coastlines, state and country boundaries, edge of map. m.drawcoastlines()
    m.drawstates()
    m.drawcountries()
    return m

fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12, 10)) 
fig.subplots_adjust(hspace=0.05, wspace=0.05)

to_plot = ['2a', '1', '3c', '7a']

lllat=17.25; urlat=20.25; lllon=-75; urlon=-71

for code, ax in zip(to_plot, axes.flat):
    m = basic_haiti_map(ax, lllat=lllat, urlat=urlat,
                        lllon=lllon, urlon=urlon) 

    cat_data = data[data['category_%s' % code] == 1]

    # compute map proj coordinates.
    print cat_data.LONGITUDE, cat_data.LATITUDE
    x, y = m(cat_data.LONGITUDE, cat_data.LATITUDE)

    m.plot(x, y, 'k.', alpha=0.5)
    ax.set_title('%s: %s' % (code, english_mapping[code]))

通过将 m(cat_data.LONGITUDE, cat_data.LATITUDE) 更改为 m(cat_data.LONGITUDE.values, cat_data.LATITUDE.values) 可以解决此问题,感谢亚历克斯·梅西纳的发现.

经过我的进一步研究,自 2013 年 12 月 31 日发布 v0.13.0 以来,pandas 更改了 DataFrame(源自 NDFrame)的系列数据应与 .values 一起传递到 Cython 函数(如 basemap/proj),如下所示。

引用自github提交日志熊猫的:

+.. warning::
 +
 +   In 0.13.0 since ``Series`` has internaly been refactored to no longer sub-class ``ndarray``
 +   but instead subclass ``NDFrame``, you can **not pass** a ``Series`` directly as a ``ndarray`` typed parameter
 +   to a cython function. Instead pass the actual ``ndarray`` using the ``.values`` attribute of the Series.
 +
 +   Prior to 0.13.0
 +
 +   .. code-block:: python
 +
 +        apply_integrate_f(df['a'], df['b'], df['N'])
 +
 +   Use ``.values`` to get the underlying ``ndarray``
 +
 +   .. code-block:: python
 +
 +        apply_integrate_f(df['a'].values, df['b'].values, df['N'].values)

您可以找到示例代码的更正版本here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于绘制地图的底图/项目的 Pandas 错误 的相关文章

  • 按每个元素中出现的数字对字符串列表进行排序[重复]

    这个问题在这里已经有答案了 我有一个脚本 其目的是对不断下载到服务器上的空间数据集文件进行排序和处理 我的列表目前大致如下 list file t00Z wrff02 grib2 file t00Z wrff03 grib2 file t0
  • 学习Python中的解析器

    我记得我读过有关解析器的内容 您只需提供一些示例行 它就知道如何解析某些文本 它只是确定两条线之间的差异 以了解可变部分是什么 我以为它是用 python 写的 但我不确定 有谁知道那是什么图书馆吗 可能你的意思是模板制作器 http co
  • 有什么好的适用于 Google App Engine 应用程序的 AJAX 框架吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的 Google App Engine 应用程序中实现 AJAX 因此我正在寻找一个好的
  • pandas read_csv 之前预处理数据文件

    我使用 SAP 的数据输出 但它既不是 CSV 因为它不引用包含其分隔符的字符串 也不是固定宽度 因为它具有多字节字符 它是一种 固定宽度 字符 为了将其放入 pandas 我当前读取文件 获取分隔符位置 对分隔符周围的每一行进行切片 然后
  • 获取字符串模板中所有标识符列表的函数(Python)

    对于标准库string template在Python中 有没有一个函数可以获取所有标识符的列表 例如 使用以下 xml 文件
  • Python Apache Beam 端输入断言错误

    我对 Apache Beam Cloud Dataflow 还很陌生 所以如果我的理解不正确 我深表歉意 我正在尝试通过管道读取大约 30 000 行长的数据文件 我的简单管道首先从 GCS 打开 csv 从数据中提取标题 通过 ParDo
  • 对法语文本进行词形还原[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一些法语文本需要以某种方式进行处理 为此 我需要 首先 将文本标记为单词 然后对这些单词进行词形还原以避免多次处理相同的词根 据我
  • lmfit模型拟合然后预测

    我正在领养lmfit进行曲线拟合并使用拟合模型进行预测 然而下面的代码并没有达到我想要的效果 能否请你帮忙 谢谢 import numpy as np from lmfit import Model def linearModel x a0
  • 如何在Python中手动对数字列表进行排序?

    规格 Ubuntu 13 04 Python 3 3 1 背景 Python的初学者 遇到了这个 手动排序 问题 我被要求做的事情 让用户输入 3 个数值并将它们存储在 3 个不同的变量中 不使用列表或排序算法 手动将这 3 个数字从小到大
  • 提高光线追踪命中功能的性能

    我有一个简单的 python 光线追踪器 渲染 200x200 的图像需要 4 分钟 这对于我的口味来说绝对是太多了 我想改善这种情况 几点 我为每个像素发射多条光线 以提供抗锯齿功能 每个像素总共发射 16 条光线 200x200x16
  • 使用具有可变数量索引的 numpy mggrid

    如何将 numpy mgrid 与可变数量的索引一起使用 我在 github 上找不到任何人将其与硬编码值以外的任何内容一起使用的示例 import numpy as np np mgrid 1 10 1 10 this works fin
  • Django 1.7:如何使用 html/css 文件作为模板发送电子邮件

    从 Django 1 7 开始 可以send email 使用新参数 html message 不幸的是 没有关于如何使用它的全面指南 新手友好 或者至少我找不到它 我需要使发送的电子邮件变得漂亮 因此 我试图弄清楚如何将我的消息包含到 h
  • 如何将 pandas DataFrame 转换为 TimeSeries?

    我正在寻找一种将 DataFrame 转换为 TimeSeries 而不拆分索引和值列的方法 有任何想法吗 谢谢 In 20 import pandas as pd In 21 import numpy as np In 22 dates
  • 在字符串内打印单引号

    我想输出 XYZ s ABC 我在Python IDLE中尝试了以下3条语句 第一条和第二条语句输出 a before 带打印功能的第三条语句不输出 before 作为 Python 新手 我想了解为什么 之前输出 在第 1 条和第 2 条
  • 为什么我会在 Python 字符串格式中使用除 %r 之外的其他内容?

    我偶尔会使用 Python 字符串格式 这可以像这样完成 print int i Float f String s 54 34 434 some text 但是 这也可以这样做 print int r Float r String r 54
  • 为数据集生成随机 JSON 结构排列

    我想生成 JSON 结构的许多不同排列作为同一数据集的表示 最好不需要对实现进行硬编码 例如 给定以下 JSON name smith occupation agent enemy humanity nemesis neo 应该产生许多不同
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • JSONDecodeError:额外数据:Python [重复]

    这个问题在这里已经有答案了 我使用以下代码从文件加载 json file file name obj list with open file as f for json obj in f obj list append loads json
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常
  • 如何在不同的目录中执行python脚本?

    Solved对于可能觉得这有帮助的人 请参阅下面我的答案 我有两个脚本 a py 和 b py 在我当前的目录 C Users MyName Desktop MAIN 中 我运行 gt python a py 第一个脚本 a py 在我当前

随机推荐

  • 幽灵4J。 java.lang.UnsatisfiedLinkError:无法加载库“gsdll64”

    包括我Ghost4J 0 45使用 Maven 进入我的项目并将 Ghostscript 安装到C Program Files gs gs9 06 但我仍然收到错误java lang UnsatisfiedLinkError Unable
  • 如何区分 OpenXML SpreadSheet 中的内联数字和 OLE 自动化日期数字?

    我必须消耗一些xlsx文件 我读了使用 open xml sdk 从 xlsx 读取日期 and http www dotnetperls com fromodate 我的大部分列都是文本 共享字符串 但也有一些数字 整数 还有一些日期和日
  • 在移动 Safari 中,网站添加到主屏幕,导航页面时顶部和底部显示灰色条,如何使其全屏?

    我有一个多页面网站 我使用共享菜单中的 添加到主屏幕 按钮将其添加到 iPhone 的主屏幕 当我使用主屏幕中的图标打开它时 该网站显示全屏 但是当我进入具有不同路线的任何子页面时 例如example com page 我看到顶部和底部有灰
  • 我如何在 php 类中包含 php 文件

    我有带有数组的 php 即 var array var gt var value var2 gt var value1 并有另一个带有类的文件 即 class class1 function fnc1 echo var var2 rest
  • Selenium WebDriver 在 IE 浏览器的文本字段中输入速度非常慢

    我正在运行我的一个脚本IE 11浏览器与Selenium 2 43 1当脚本使用以下命令在文本字段中键入时 element sendKeys string 在 IE 浏览器中 我可以看到在文本字段中输入了字符串的一个字符 并且在输入下一个字
  • 按文件名排序获取文件夹

    这是我用于合并 XML 的 VB 代码 但我想按文件名合并它 所以先是 1 xsl 然后是 2 xsl 如何在VB中对列表进行排序 Sub simpleXlsMerger Dim bookList As Workbook Dim merge
  • 如何检查嵌套对象是否有子对象?

    我是 Javascript React 新手 所以我不确定如何将其实现到我的递归函数中 我设置了一个 json 对象的嵌套菜单 并且想要添加小箭头来指示是否有另一个级别可以单击 由于我的菜单由大量嵌套的 json 对象组成 因此我使用递归来
  • 无法为子视图推送ViewController

    我有一个 UINavigationController 和我有单独的视图 我使用分段控件在它们之间切换 在切换视图时 我将视图作为子视图添加到导航控制器的视图中 self view addSubview segmentTab1 view a
  • C# 将图片插入Ms Access

    我要感谢所有在上一个问题中提供帮助的人 但现在 我对另一种说法有问题 即 saveimageto MS access 首先我想问一下 在ms access数据库上 Datatype应该放附件吗 我的代码 private void butto
  • CSS3 转换为梯形

    我需要使用 div 元素创建一个 CSS3 梯形 为了让我在做什么一目了然 我在下面创建了一个基本视觉效果 绿色是一个普通的矩形 div 而红色代表我需要将 div 更改为的部分 以实现我需要的梯形形状 假设我们正在编辑 trapezoid
  • 扩展 Drupal 7 搜索

    我想使用一个附加字段来扩展默认的 Drupal 7 节点搜索 我使用以下新字段更改搜索表单 function mymodule form search form alter form form state form id form basi
  • Android AudioRecord 过滤频率范围

    我正在使用android平台 从下面的参考问题我知道使用返回原始数据的AudioRecord类我可以根据我的需要过滤音频范围 但为此我需要算法 有人可以帮我找到吗过滤范围黑白 14 400 bph 和 16 200 bph 的算法 我尝试了
  • Azure 数据流需要几分钟才能触发下一个管道

    Azure 数据工厂在 10 毫秒内将数据传输到 Db 中 但我遇到的问题是它需要等待几分钟才能触发下一个管道 最终需要 40 分钟 所有管道传输数据的时间不到 20 毫秒 但不知何故 它要等待几分钟才能触发下一个 I used debug
  • 使用 meld 作为 diff 工具时查看 git 过滤器输出

    我设置了一些git 过滤器为了在提交某些文件之前对其进行预处理 在我的例子中是 IPython Notebooks 更准确地说 我正在遵循以下说明 https stackoverflow com a 20844506 578770 如果我提
  • 在 pyinstaller 中以窗口模式导出到 EXE 后,Selenium 不起作用

    我正在制作一个需要使用 selenium 的 PyQt4 应用程序 开发时一切正常 但是当我导出到单个文件执行文件 由py安装程序 and 不带控制台 它会产生以下回溯错误 WinError6 The handle is invalid 当
  • JSONModel 返回 nil

    我使用 JSONModel 从 URL 获取 JSON 这是一个非常简单的对象 仅包含 2 个字符串 name 和 url 首先我制作了对象模型 protocol Tutorial end interface Tutorial JSONMo
  • 在 jsFiddle 中有效,但在我的网站中无效

    由于某种原因 我网站上的这个 jQuery 代码可以在 jsFiddle 上运行 但不能在本地运行 代码是一样的 我刚刚复制并粘贴了它 谁能向我解释这是怎么回事 jsFiddle Local 使用Chrome的开发者工具 在控制台中出现错误
  • 导出后未在 Honeycomb 上调用 BOOT_COMPLETED

    我有一个非常奇怪的问题 网站上已有的问题都没有答案或相同的问题 我有一个接收 BOOT COMPLETED 的应用程序 我通过将 android installLocation 设置为internalOnly 确保它可以接收意图 我的 On
  • Unity : this == null 返回 true。怎么会发生这种事呢? [复制]

    这个问题在这里已经有答案了 我一直在统一开发一个项目 我试图用 Invoke string float 调用一个函数 虽然我收到一条错误消息说要检查我的gameobject为空 所以我尝试做 debug log gameObject nul
  • 用于绘制地图的底图/项目的 Pandas 错误

    我运行了下面的 Python 代码 这是一本书上的 绘制地图 可视化海地地震危机数据 的示例 Python 数据分析 第242 246页 该代码应该创建海地的绘图 但我收到如下错误 Traceback most recent call la