You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含波浪号运算符的R箱线图代码转换为Python Pandas实现?

将R箱线图代码转换为Python Pandas实现

当然可以用Python的Pandas结合Matplotlib或Seaborn实现和你R代码等价的箱线图,以下是具体实现步骤:

1. 加载数据集

先把你提供的CSV数据保存为tooth_growth.csv,然后用Pandas读取:

import pandas as pd

df = pd.read_csv('tooth_growth.csv')

如果不想保存文件,也可以直接读取CSV字符串:

import pandas as pd
from io import StringIO

csv_content = """len,supp,dose
4.2,VC,0.5
11.5,VC,0.5
7.3,VC,0.5
5.8,VC,0.5
6.4,VC,0.5
10,VC,0.5
11.2,VC,0.5
11.2,VC,0.5
5.2,VC,0.5
7,VC,0.5
16.5,VC,1
16.5,VC,1
15.2,VC,1
17.3,VC,1
22.5,VC,1
17.3,VC,1
13.6,VC,1
14.5,VC,1
18.8,VC,1
15.5,VC,1
23.6,VC,2
18.5,VC,2
33.9,VC,2
25.5,VC,2
26.4,VC,2
32.5,VC,2
26.7,VC,2
21.5,VC,2
23.3,VC,2
29.5,VC,2
15.2,OJ,0.5
21.5,OJ,0.5
17.6,OJ,0.5
9.7,OJ,0.5
14.5,OJ,0.5
10,OJ,0.5
8.2,OJ,0.5
9.4,OJ,0.5
16.5,OJ,0.5
9.7,OJ,0.5
19.7,OJ,1
23.3,OJ,1
23.6,OJ,1
26.4,OJ,1
20,OJ,1
25.2,OJ,1
25.8,OJ,1
21.2,OJ,1
14.5,OJ,1
27.3,OJ,1
25.5,OJ,2
26.4,OJ,2
22.4,OJ,2
24.5,OJ,2
24.8,OJ,2
30.9,OJ,2
26.4,OJ,2
27.3,OJ,2
29.4,OJ,2
23,OJ,2
"""

df = pd.read_csv(StringIO(csv_content))

2. 绘制箱线图

方法1:用Pandas原生方法

Pandas的boxplot可以直接对应R的语法逻辑:

import matplotlib.pyplot as plt

# 按supp分组绘制len的箱线图
df.boxplot(column='len', by='supp', grid=False)

# 设置标题和轴标签,移除Pandas自动生成的副标题
plt.title("Tooth growth in Guinea Pig")
plt.suptitle("")
plt.xlabel("Delivery method")
plt.ylabel("Tooth length")

plt.show()

方法2:用Seaborn(更简洁美观)

Seaborn的语法更贴近R的公式风格,代码可读性更高:

import seaborn as sns
import matplotlib.pyplot as plt

# x是自变量supp,y是因变量len
sns.boxplot(x='supp', y='len', data=df)

plt.title("Tooth growth in Guinea Pig")
plt.xlabel("Delivery method")
plt.ylabel("Tooth length")

plt.show()

关键对应关系

R中的len ~ supp表示牙齿长度(len)依赖于供给方式(supp),在Python中对应:

  • Pandas:column='len'(因变量),by='supp'(分组变量/自变量)
  • Seaborn:x='supp'(自变量),y='len'(因变量)

两种方法都能生成和你R代码完全一致的箱线图,展示不同供给方式下牙齿长度的分布情况。

内容的提问来源于stack exchange,提问作者cinnamond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 00:25:20