Python Matplotlib Boxplot和dataframe数据类型
所以我设置了这个空数据帧DF,并根据一些条件将数据加载到数据帧中。因此,一些its元素将是空的(Python Matplotlib Boxplot和dataframe数据类型,python,python-3.x,pandas,matplotlib,Python,Python 3.x,Pandas,Matplotlib,所以我设置了这个空数据帧DF,并根据一些条件将数据加载到数据帧中。因此,一些its元素将是空的(nan)。我注意到,如果在创建空数据帧时不将数据类型指定为float,DF.boxplot()将给我一个“索引超出范围”错误 据我所知,pandas的DF.boxplot()使用matplotlib的plt.boxplot()函数,因此我自然尝试使用plt.boxplot(DF.iloc[:,0])来绘制第一列的箱线图。我注意到一个相反的行为:当DF的dtype是float时,它将不起作用:它只会显示
nan
)。我注意到,如果在创建空数据帧时不将数据类型指定为float,DF.boxplot()
将给我一个“索引超出范围”错误
据我所知,pandas的DF.boxplot()
使用matplotlib的plt.boxplot()
函数,因此我自然尝试使用plt.boxplot(DF.iloc[:,0])来绘制第一列的箱线图。我注意到一个相反的行为:当DF的dtype是float时,它将不起作用:它只会显示一个空的绘图。请参阅下面的代码,其中DF.boxplot()
不起作用,但是plt.boxplot(DF.iloc[:,0])
将绘制一个boxplot(当我在第一次创建数据帧时添加dtype='float'时,plt.boxplot(DF.iloc[:,0])
将给我一个空图):
我想知道这是否与
plt.boxplot()
如何处理不同数据类型的nan有关?如果是这样,为什么将数据帧的数据类型设置为“object”对DF.boxplot()
,如果pandas只是使用matplotlib的boxplot函数,则不起作用?我想我们可以同意,DF.boxplot()
和plt.boxplot
都不能处理“object”类型的数据帧。相反,它们需要是数字数据类型
如果数据是数字,df.boxplot()
将按预期工作,即使使用nan
值,因为它们在打印之前已被删除
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame(index=range(10),columns=range(4), dtype=float)
for i in range(10):
for j in range(4):
if i!=j:
df.iloc[i,j]=i
df.boxplot()
plt.show()
使用plt.boxplot
您需要手动删除nan
s,例如使用df.dropna()
总而言之:添加了一些重现我的问题的代码谢谢,我刚刚意识到即使
plt.boxplot()
会给我一个带有dtype='object'
的绘图,它仍然会返回一个错误。
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame(index=range(10),columns=range(4), dtype=float)
for i in range(10):
for j in range(4):
if i!=j:
df.iloc[i,j]=i
df.boxplot()
plt.show()
import pandas as pd
import matplotlib.pyplot as plt
df=pd.DataFrame(index=range(10),columns=range(4), dtype=float)
for i in range(10):
for j in range(4):
if i!=j:
df.iloc[i,j]=i
data = [df[i].dropna() for i in range(4)]
plt.boxplot(data)
plt.show()