Pandas 直方图打印错误:ValueError:num必须为1<;=num<;=0,而不是1
我正在从pandas数据框中绘制一列柱状图: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 <
%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')
您想详细说明一下吗?您的答案目前毫无意义。