The*_*era 2 python boxplot dataframe pandas
我有一个pandas数据框,如下所示:
[('1975801_m', 1 0.203244
10 -0.159756
16 -0.172756
19 -0.089756
20 -0.033756
23 -0.011756
24 0.177244
32 0.138244
35 -0.104756
36 0.157244
40 0.108244
41 0.032244
42 0.063244
45 0.362244
59 -0.093756
62 -0.070756
65 -0.030756
66 -0.100756
73 -0.140756
77 -0.110756
81 -0.100756
84 -0.090756
86 -0.180756
87 0.119244
88 0.709244
102 -0.030756
105 -0.000756
107 -0.010756
109 0.039244
111 0.059244
Name: RTdiff), ('3878418_m', 1637 0.13811
1638 -0.21489
1644 -0.15989
1657 -0.11189
1662 -0.03289
1666 -0.09489
1669 0.03411
1675 -0.00489
1676 0.03511
1677 0.39711
1678 -0.02289
1679 -0.05489
1681 -0.01989
1691 0.14411
1697 -0.10589
1699 0.09411
1705 0.01411
1711 -0.12589
1713 0.04411
1715 0.04411
1716 0.01411
1731 0.06411
1738 -0.25589
1741 -0.21589
1745 0.39411
1746 -0.13589
1747 -0.10589
1748 0.08411
Name: RTdiff)
Run Code Online (Sandbox Code Playgroud)
我想用它作为mtplotlib.pyplot.boxplot函数的输入.
我得到的错误matplotlib.pyplot.boxplot(mydataframe)是ValueError: cannot set an array element with a sequence
我试着用list(mydataframe)而不是mydataframe.失败并出现同样的错误.
我也试过matplotlib.pyplot.boxplot(np.fromiter(mydataframe, np.float))- 失败了ValueError: setting an array element with a sequence.
Pau*_*l H 10
目前尚不清楚您的数据是否在DataFrame中.它似乎是Series对象的列表.
一旦它真的在DataFrame中,这里的技巧就是提前创建你的图形和轴并使用**kwargs你通常使用的那个matplotlib.axes.boxplot.您还需要确保您的数据是DataFrame而不是Series
import numpy as np
import matplotlib.pyplot as plt
import pandas
fig, ax = plt.subplots()
df = pandas.DataFrame(np.random.normal(size=(37,5)), columns=list('ABCDE'))
df.boxplot(ax=ax, positions=[2,3,4,6,8], notch=True, bootstrap=5000)
ax.set_xticks(range(10))
ax.set_xticklabels(range(10))
plt.show()
Run Code Online (Sandbox Code Playgroud)
这给了我:
如果做不到这一点,您可以采用类似的方法,循环使用您想要ax直接使用对象绘制的列.
import numpy as np
import matplotlib.pyplot as plt
import pandas
df = pandas.DataFrame(np.random.normal(size=(37,5)), columns=list('ABCDE'))
fig, ax = plt.subplots()
for n, col in enumerate(df.columns):
ax.boxplot(df[col], positions=[n+1], notch=True)
ax.set_xticks(range(10))
ax.set_xticklabels(range(10))
plt.show()
Run Code Online (Sandbox Code Playgroud)
这使:

| 归档时间: |
|
| 查看次数: |
8245 次 |
| 最近记录: |