liz*_*man 2 python matplotlib python-3.x pandas
所以我设置了这个空的dataframe DF,并根据一些条件将数据加载到dataframe中。因此,它的某些元素将是空的 ( nan
)。我注意到,如果我在创建空数据框时没有将数据类型指定为浮点数,DF.boxplot()
则会出现“索引超出范围”错误。
据我了解,pandasDF.boxplot()
使用 matplotlib 的plt.boxplot()
函数,所以很自然地我尝试使用 plt.boxplot(DF.iloc[:,0]) 来绘制第一列的箱线图。我注意到一个相反的行为:当 DF 的 dtype 是 float 时,它将不起作用:它只会向我显示一个空图。请参阅下面的代码,其中DF.boxplot()
不起作用,但plt.boxplot(DF.iloc[:,0])
会绘制箱线图(当我在第一次创建数据框时添加 dtype='float' 时,plt.boxplot(DF.iloc[:,0])
会给我一个空图):
import numpy as np
import pandas as pd
DF=pd.DataFrame(index=range(10),columns=range(4))
for i in range(10):
for j in range(4):
if i==j:
continue
DF.iloc[i,j]=i
Run Code Online (Sandbox Code Playgroud)
我想知道这与如何plt.boxplot()
处理不同数据类型的 nan 有关系吗?如果是这样,DF.boxplot()
如果熊猫只是使用 matplotlib 的 boxplot 函数,为什么将数据框的数据类型设置为“对象”不起作用?
我认为我们可以同意既不能df.boxplot()
也plt.boxplot
不能处理“对象”类型的数据帧。相反,它们需要是数字数据类型。
如果数据是数字,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()
Run Code Online (Sandbox Code Playgroud)
使用plt.boxplot
您需要nan
手动删除s,例如使用df.dropna()
.
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()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3356 次 |
最近记录: |