我有数据框:
id meters availability1 availability2 availability3
0 0 70 80 90
1 50 75 75 80
2 100 100 90 100
3 150 87 85 80
4 200 60 90 100
我想创建一个箱线图,显示每个特定仪表的可用性。 例如,0 米的可用性为 90 到 70。 所以我想为每一行而不是列创建箱线图。我找不到如何应用它而不改变我的数据框的结构。
我使用的代码如下:
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
file = 'D:\\test_box_plot.csv'
df = pd.read_csv(file, sep = ";", usecols = ['availability1','availability2','availability3'])
sns.boxplot(x="variable", y="value", data=pd.melt(df))
plt.show()
我将不胜感激任何帮助
最佳答案
我认为这是一个可能的解决方案,但我不太确定我是否理解你想要的:
boxMeters = sns.boxplot(x=0,y=1,data=df.transpose(), palette="Set3")
这里的技巧是使用数据帧的转置矩阵。 我建议您打印转置的数据框以了解如何引用每一列。
根据您发布的数据,我的转置数据框是:
0 1 2 3 4
id 0 1 2 3 4
meters 0 50 100 150 200
availability1 70 75 100 87 60
availability2 80 75 90 85 90
availability3 90 80 100 80 100
“meters”就在地址为 0 的列下方,availability1 是第 1 列。 你告诉我它是否适合你。
关于python - 如何制作按轴 1 分组的箱线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58007935/