You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

提取na_count键值列表时报错:'numpy.ndarray' object is not callable

解决提取缺失值统计时的TypeError问题

问题场景

我有一个311服务请求数据库,想要绘制各字段缺失值数量(na_count)的柱状图,但提取键值列表时报错:TypeError: 'numpy.ndarray' object is not callable。

相关代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
ny = pd.read_csv("311_Service_Requests_from_2010_to_Present.csv")
na_count = ny[ny.columns].isna().sum()
dic_keys = list(na_count.keys())
dic_values = list(na_count.values())

报错堆栈

TypeError                                 Traceback (most recent call last)
/tmp/ipykernel_258/3214600081.py in <cell line: 1>()
----> 1 dic_values = list(na_count.values())

TypeError: 'numpy.ndarray' object is not callable

na_count输出内容

Unique Key                            0
Created Date                          0
Closed Date                         380
Agency                                0
Agency Name                           0
Complaint Type                        1
Descriptor                          975
Location Type                         1
Incident Zip                        428
Incident Address                   7825
Street Name                        7825
Cross Street 1                     8763
Cross Street 2                     8838
Intersection Street 1             57161
Intersection Street 2             57241
Address Type                        488
City                                429
Landmark                          64865
Facility Type                       376
Status                                1
Due Date                              1
Resolution Description                1
Resolution Action Updated Date      369
Community Board                       1
Borough                               1
X Coordinate (State Plane)          570
Y Coordinate (State Plane)          570
Park Facility Name                    1
Park Borough                          1
School Name                           1
School Number                         1
School Region                         1
School Code                           1
School Phone Number                   1
School Address                        1
School City                           1
School State                          1
School Zip                            1
School Not Found                      1
School or Citywide Complaint      64904
Vehicle Type                      64904
Taxi Company Borough              64904
Taxi Pick Up Location             64904
Bridge Highway Name               64843
Bridge Highway Direction          64843
Road Ramp                         64852
Bridge Highway Segment            64852
Garage Lot Name                   64904
Ferry Direction                   64904
Ferry Terminal Name               64904
Latitude                            570
Longitude                           570
Location                            570

问题原因

na_count是pandas的Series对象,它的values是一个numpy数组属性,不是可调用的方法。写成na_count.values()相当于把数组当成函数调用,自然触发TypeError。

解决方案

修正键值提取代码

  • 提取字段名(键):直接用Series的index属性转列表,比keys()更直观
  • 提取缺失值数量(值):调用values属性(不加括号)再转列表,或直接用tolist()方法

修正后的核心代码:

# 提取字段名列表
dic_keys = na_count.index.tolist()
# 提取缺失值数量列表
dic_values = na_count.values.tolist()
# 或者更简洁:dic_values = na_count.tolist()

完整绘图代码

如果要完成柱状图绘制,可以用以下完整代码:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
ny = pd.read_csv("311_Service_Requests_from_2010_to_Present.csv")
# 统计各字段缺失值数量(ny[ny.columns]可省略,直接调用isna()即可)
na_count = ny.isna().sum()

# 提取键值列表
dic_keys = na_count.index.tolist()
dic_values = na_count.values.tolist()

# 绘制柱状图
plt.figure(figsize=(12, 6))
plt.bar(dic_keys, dic_values)
plt.xticks(rotation=90)
plt.xlabel('字段名称')
plt.ylabel('缺失值数量')
plt.title('各字段缺失值统计')
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者Ab3ila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:48:40