Pandas 直方图打印错误:ValueError:num必须为1<;=num<;=0,而不是1

Pandas 直方图打印错误:ValueError:num必须为1<;=num<;=0,而不是1,pandas,dataframe,histogram,Pandas,Dataframe,Histogram,我正在从pandas数据框中绘制一列柱状图: %matplotlib notebook import matplotlib.pyplot as plt import matplotlib df.hist(column='column_A', bins = 100) 但出现以下错误: 62 raise ValueError( 63 "num must be 1 <= num <

我正在从pandas数据框中绘制一列柱状图:

%matplotlib notebook
import matplotlib.pyplot as plt
import matplotlib
df.hist(column='column_A', bins = 100)
但出现以下错误:

     62                     raise ValueError(
     63                         "num must be 1 <= num <= {maxn}, not {num}".format(
---> 64                             maxn=rows*cols, num=num))
     65                 self._subplotspec = GridSpec(rows, cols)[int(num) - 1]
     66                 # num - 1 for converting from MATLAB to python indexing

ValueError: num must be 1 <= num <= 0, not 1
62提升值错误(
63“num必须是1个问题
当
列A
不包含数字数据时,您会遇到问题。正如您在下面的
熊猫绘图的摘录中所看到的那样,数字数据对于使函数
hist\u frame
(您通过
DataFrame.hist()
调用该函数)正常工作至关重要

def hist_frame(数据,列=None,by=None,网格=True,xlabelsize=None,
xrot=None,ylabelsize=None,yrot=None,ax=None,sharex=False,
shary=False,figsize=None,layout=None,bin=10,**kwds):
#跳过部分代码
# ...
如果列不是无:
如果不存在(列,(列表,np.ndarray,索引)):
column=[列]
数据=数据[列]
数据=数据。_get_numeric_data()#列中没有数字数据
naxes=len(data.columns)#因此轴的数量变为0
#naxes作为0传递给子批生成函数,然后将列数确定为0
图,轴=_子批次(naxes=naxes,ax=ax,挤压=False,
sharex=sharex,sharey=sharey,figsize=figsize,
布局=布局)
#跳过代码的其余部分
# ...

解决方案
  • 如果您的问题是用柱状图表示数字数据(但不是数字数据类型),则需要使用
    pd.to\u numeric
    df.astype(选定的数字数据类型)
    ,例如
    'float64'
    ,将数据转换为数字,然后继续执行代码

  • 如果您的问题是在一列中用直方图表示非数字数据,则可以使用以下行调用函数
    hist_series
    df['column_a'].hist(bin=100)

  • 如果您的问题是用柱状图在许多列中表示非数字数据,您可以使用以下几种选项:

    • 使用
      matplotlib
      并直接创建子图和直方图
    • 至少将pandas更新至版本
      0.25
  • 通常是0

    mta['penn'] = [mta_bystation[mta_bystation.STATION == "34 ST-PENN STA"], 'Penn Station']
    mta['grdcntrl'] = [mta_bystation[mta_bystation.STATION == "GRD CNTRL-42 ST"], 'Grand Central']
    mta['heraldsq'] = [mta_bystation[mta_bystation.STATION == "34 ST-HERALD SQ"], 'Herald Sq']
    mta['23rd'] = [mta_bystation[mta_bystation.STATION == "23 ST"], '23rd St']
    #mta['portauth'] = [mta_bystation[mta_bystation.STATION == "42 ST-PORT AUTH"], 'Port Auth']
    #mta['unionsq'] = [mta_bystation[mta_bystation.STATION == "14 ST-UNION SQ"], 'Union Sq']
    mta['timessq'] = [mta_bystation[mta_bystation.STATION == "TIMES SQ-42 ST"], 'Ti
    

    列A的数据类型是什么?
    -是数字类型吗?@MaxU:你说得对。我忘了转换类型。谢谢提醒。现在可以工作了。你能更清楚地告诉我你是如何解决你的问题的吗?我也有同样的问题:
    年平均值[:10]。hist(column='year')
    您想详细说明一下吗?您的答案目前毫无意义。