首页 > 解决方案 > 如何从数据框中提取列并从中制作箱线图?

问题描述

我有一个从 Stata 数据库导入的数据框,我已经重命名了它的列,我试图从其中一列(例如“比索”)制作一个箱线图,但是当我绘制它时,图表显示所有数据框。我怎样才能提取列并绘制它?

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df=pd.read_stata('Datos Peso Altura Genero.dta')
datos=df.rename(columns={'var1':'Sujeto','var2':'Peso','var3':'Altura','var4':'Género'})

    Sujeto  Peso  Altura Género
0        1    50     154      M
1        2    56     152      H
2        3    58     161      M
3        4    59     160      M
4        5    60     167      H
5        6    61     165      M
6        7    63     169      M
7        8    65     158      M
8        9    67     155      M
9       10    72     169      H
10      11    75     170      H
11      12    77     178      H
12      13    78     180      H
13      14    80     175      M
14      15    84     179      H

datos.boxplot(column=['Peso'])
plt.title('Ejemplo peso')
plt.ylabel('Peso (kg)')
plt.show()

我希望我已经说清楚了,并感谢您的回答。

标签: pythonmatplotlibboxplot

解决方案


如果你指定by=['Género'],你会得到一个带有 H 和 M 的箱线图。我已经注释掉了标题规范,因为它会自动显示标题。有关详细信息,请参阅此页面

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import io

data = '''
 Sujeto Peso Altura Género
0 1 50 154 M
1 2 56 152 H
2 3 58 161 M
3 4 59 160 M
4 5 60 167 H
5 6 61 165 M
6 7 63 169 M
7 8 65 158 M
8 9 67 155 M
9 10 72 169 H
10 11 75 170 H
11 12 77 178 H
12 13 78 180 H
13 14 80 175 M
14 15 84 179 H
'''

df = pd.read_csv(io.StringIO(data), sep='\s+')

# df=pd.read_stata('Datos Peso Altura Genero.dta')
datos = df.rename(columns={'var1':'Sujeto','var2':'Peso','var3':'Altura','var4':'Género'})

datos.boxplot(column=['Peso'], by=['Género'])

# plt.title('Ejemplo peso')
plt.ylabel('Peso (kg)')
plt.show()

在此处输入图像描述


推荐阅读