首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不同长度列的Python盒图

不同长度列的Python盒图
EN

Stack Overflow用户
提问于 2014-04-17 21:50:42
回答 1查看 10.3K关注 0票数 9

我在Python中有以下数据格式(实际的dataframe要大得多,只是提供了一个小示例):

代码语言:javascript
复制
      A     B     C     D     E     F
0  0.43  0.52  0.96  1.17  1.17  2.85
1  0.43  0.52  1.17  2.72  2.75  2.94
2  0.43  0.53  1.48  2.85  2.83  
3  0.47  0.59  1.58        3.14  
4  0.49  0.80        

我使用df.values将dataframe转换为numpy,然后将其传递给boxplot。

当我试图用这个熊猫数据绘制一个盒子图时,从每一列中选择的值的数量被限制在一列中的最少值(在这种情况下,是F列)。是否有任何方法可以对每个列的所有值进行框式绘制?

注意:我使用df.dropna删除每列中缺少值的行。但是,这是将数据大小调整到列长度的最低公共分母,并扰乱绘图。

代码语言:javascript
复制
import prettyplotlib as ppl
import numpy as np
import pandas
import matplotlib as mpl
from matplotlib import pyplot

df = pandas.DataFrame.from_csv(csv_data,index_col=False)
df = df.dropna()
labels = ['A', 'B', 'C', 'D', 'E', 'F']
fig, ax = pyplot.subplots()
ppl.boxplot(ax, df.values, xticklabels=labels)
pyplot.show()
EN

Stack Overflow用户

回答已采纳

发布于 2014-04-18 17:39:44

为了避免重新发明车轮,正确的方法是在pandas中使用pandas中的nan,其中nan正确地处理:

代码语言:javascript
复制
In [31]:

print df
      A     B     C     D     E     F
0  0.43  0.52  0.96  1.17  1.17  2.85
1  0.43  0.52  1.17  2.72  2.75  2.94
2  0.43  0.53  1.48  2.85  2.83   NaN
3  0.47  0.59  1.58   NaN  3.14   NaN
4  0.49  0.80   NaN   NaN   NaN   NaN

[5 rows x 6 columns]
In [32]:

_=plt.boxplot(df.values)
_=plt.xticks(range(1,7),labels)
plt.savefig('1.png') #keeping the nan's and plot by plt

代码语言:javascript
复制
In [33]:

_=df.boxplot()
plt.savefig('2.png') #keeping the nan's and plot by pandas

代码语言:javascript
复制
In [34]:

_=plt.boxplot(df.dropna().values)
_=plt.xticks(range(1,7),labels)
plt.savefig('3.png') #dropping the nan's and plot by plt

票数 7
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23144071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档