Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫交叉表与熊猫切割一起使用时:输出交叉表的行名称不匹配_Python_Dataset_Pandas_Visualization - Fatal编程技术网

Python 熊猫交叉表与熊猫切割一起使用时:输出交叉表的行名称不匹配

Python 熊猫交叉表与熊猫切割一起使用时:输出交叉表的行名称不匹配,python,dataset,pandas,visualization,Python,Dataset,Pandas,Visualization,我有一些带有二进制(0和1)标签的数据。在对新字段执行pd.crosstab之前,我正在使用pd.cut离散一个特征continuous\u值 问题是,当我进行交叉表时,输出似乎与相应的计数不匹配的行名称(每个箱子的边界) 下面是我的代码,它是这个问题的一个最小示例连续_值为非负。118个数据点具有连续值=0,因此最小的箱子边缘为-1,以包括这些。在这个最小的示例中,数据被分为两个存储单元:(-1到0),其中仅包括值为0的存储单元,以及(0到5000000),其中包括所有其他数据点 bins=[

我有一些带有二进制(0和1)标签的数据。在对新字段执行
pd.crosstab
之前,我正在使用
pd.cut
离散一个特征
continuous\u值

问题是,当我进行交叉表时,输出似乎与相应的计数不匹配的行名称(每个箱子的边界)

下面是我的代码,它是这个问题的一个最小示例<代码>连续_值为非负。118个数据点具有
连续值=0
,因此最小的箱子边缘为-1,以包括这些。在这个最小的示例中,数据被分为两个存储单元:(-1到0),其中仅包括值为0的存储单元,以及(0到5000000),其中包括所有其他数据点

bins=[-1,0,5000000]
input_df['discrete_value']=pd.cut(input_df['continuous_value'],bins=bins)    
pd.crosstab(input_df.discrete_value, input_df.label)
正如您在所附图片中看到的,箱子名称不匹配。非零存储单元的计数和为118,零存储单元的计数和为10237。这应该是另一种方式


编辑以包含复制错误的伪数据和代码段:

值=[510054009400100001600010500,0,0,0875001400011250]
d={'continuous':值,'label':[0]*6+[1]*6}
df=pd.DataFrame(数据=d)
垃圾箱=[-1,0,5000000]
df['discrete']=局部切割(df['continuous'],料仓=料仓)


这似乎是Pandas版本0.23.0的一个问题。在最新版本0.23.2中,它正确指定标签

import pandas as pd
values = [5100,5400,9400,10000,16000,10500,0,0,0,87500,14000,11250]
d = {'continuous': values,'label': [0]*6+[1]*6}
df = pd.DataFrame(data=d)
bins = [-1, 0, 5000000]
df['discrete'] = pd.cut(df['continuous'], bins=bins)

print(pd.crosstab(df.discrete, df.label))
给出所需的输出

label         0  1
discrete          
(-1, 0]       0  3
(0, 5000000]  6  3

我建议你写一封信code@parvij你能详细说明一下你的意思吗?感谢重现类似结果的数据集和代码您能给出您使用的数据集的样本吗,
continuous\u value
?我有一个带有一些伪数据的代码片段,它工作得很好。@KenSyme和parvij感谢您的回答-我在原始问题中添加了“复制代码+伪数据集”,包括输出中相同问题的屏幕截图。谢谢,谢谢,我感谢你的努力。但我刚刚终止并重新启动了内核,打开了一个新笔记本,并从您的评论中复制粘贴的代码,没有任何更改,我仍然得到相同的交换标签错误,
label 01 discrete(0500000]03(-1,0]63
(pd版本0.23.0)你能更新到pandas版本0.23.2吗?我已经能够在0.23.0上重新创建你的错误,但它似乎在0.23.2中得到了解决。你可以在anaconda提示符下用
conda install pandas=0.23.2
完成这项操作。很好,现在可以了,谢谢!我接受你的回答。也许你可以编辑它,在主菜单中包含升级到0.23.2的说明nswer提供更高的可视性,以防其他人出现此问题。我也很好奇是否有人知道为什么在旧版本中会出现这种情况?似乎不太理想。再次感谢。@user3140106最近在pandas中的分类类型方面似乎有很多更改-垃圾箱标签是一种分类类型,因此只能想象这是一个问题它在我最初的0.22版本中运行得很好,所以在0.23版本中一定有一些东西回归了,然后在以后的版本中修复了。