如何解决如何为数据框中的两个特定列选择两个数字之间的值以绘制为2D图形
我有一张这样的桌子。
我想绘制X与Y的关系,得出0.120 X和Y值表:
解决方法
由于您在寻找起点时遇到了麻烦,因此我将从收集数据并声明变量以保存x和y数据开始。
y_vals = [0.113,0.117,0.123,0.129,0.130,0.160,0.180,0.210,0.220,0.260,0.280]
x_vals = list(range(0,(len(y_vals)*10),10))
上面,我将y_vals
初始化为包含y的每个值的列表。对于x_vals
,我将其初始化为随y_vals
更改的列表。例如,如果要向y_vals
添加更多y值,则x_vals
将随之增加。 x_vals
利用range()
函数进行增长。您可以了解有关此功能here的更多信息。
现在我们有了我们的数据,是时候深入研究问题了。
def getPoints(x_vals,y_vals):
points = []
for i in range(0,len(y_vals) - 1):
if ((y_vals[i] > 0.120) & (y_vals[i] < 0.140)):
x = x_vals[i]
y = y_vals[i]
points.append([x,y])
return points
以上,方法getPoints()
负责查找哪些值在0.120到0.140之间,并将这些点编译为列表。此函数返回带有嵌套列表的列表,这些列表将点显示为[x,y]
。
编辑:我以前使用过arange()
库中的numpy
函数来检查数字是否在您的范围之内。但是,floats
不能以100%的精度存储,并且由于float
可以存储的值数量,通常会导致舍入。简单得多的方法是只使用比较来检查数字是否在两个数字之间。例如:
if ((y_vals[i] > 0.120) & (y_vals[i] < 0.140))
现在,该将数据传递到getPoints()
函数中了。
points = getPoints(x_vals,y_vals)
print(points)
输出如下:
[[20,0.13],[30,0.129],[40,0.123]]
完整脚本:
def getPoints(x_vals,y])
return points
y_vals = [0.113,10))
points = getPoints(x_vals,y_vals)
print(points)
希望它会有所帮助:)如果您有任何疑问,请随时发表评论。
,您可以根据条件选择数据框的部分(在您的情况下为行)。
如果您要合并条件,请在每个条件前加上方括号(),然后将其与您选择的运算符连接起来(在这种情况下,我认为AND运算符&将会有用;-))
尝试这样的事情:
df[(df['Y'] > 0.12) & (df['Y'] < 0.21)].plot(kind='scatter',x='X',y='Y')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。