如何用 pandas/matplotlib 图求解变量
How to solve for variables with a pandas/matplotlib graph
我正在学习 Pandas。我制作了一个数据字典,并将其转换为 DataFrame。然后我把它画成折线图。我很好奇如何把那个折线图当作一个方程,并得到一个输入变量的结果?
例如:
import pandas
import matplotlib
import matplotlib.pyplot as plt
graphPoints = {"Number":[1,2,3,5,6],"value": [100.0,85.0,56.4,22.7,6.8]}
mydf = pandas.DataFrame(round1data)
myindexed_df = round1df.set_index('Number')
myindexed_df.plot()
plt.show()
然后我如何获得该图表上新值的结果?即如果 x = 4,y = ?? pandas 或 matplotlib 是否有某种 y = plt(x) 或类似的东西?
谢谢!
我想你可能误解了pandas和matplotlib的范围。 Pandas 是一种数据组织工具。 Matplotlib 是一种数据可视化工具。您在这里需要的是一个数据计算工具。
一种可能使用的工具是 numpy
。
为了计算位置 x = 4
处的 y 值,您可以使用 numpy.interp()
.
对给定数组进行插值
import numpy as np
number = np.array([1,2,3,5,6])
value = np.array([100.0,85.0,56.4,22.7,6.8])
print (np.interp(4, number, value))
这会打印 39.55
.
现在您当然可以使用 matplotlib 在图表中绘制结果:
import numpy as np
number = np.array([1,2,3,5,6])
value = np.array([100.0,85.0,56.4,22.7,6.8])
f = lambda x: np.interp(x, number, value)
import matplotlib.pyplot as plt
plt.plot(number, value, ls="-.", marker="o", label="values")
plt.plot(4, f(4), marker="s",markersize=8, label="x = 4, y = {}".format(f(4)))
plt.legend()
plt.show()
我正在学习 Pandas。我制作了一个数据字典,并将其转换为 DataFrame。然后我把它画成折线图。我很好奇如何把那个折线图当作一个方程,并得到一个输入变量的结果?
例如:
import pandas
import matplotlib
import matplotlib.pyplot as plt
graphPoints = {"Number":[1,2,3,5,6],"value": [100.0,85.0,56.4,22.7,6.8]}
mydf = pandas.DataFrame(round1data)
myindexed_df = round1df.set_index('Number')
myindexed_df.plot()
plt.show()
然后我如何获得该图表上新值的结果?即如果 x = 4,y = ?? pandas 或 matplotlib 是否有某种 y = plt(x) 或类似的东西?
谢谢!
我想你可能误解了pandas和matplotlib的范围。 Pandas 是一种数据组织工具。 Matplotlib 是一种数据可视化工具。您在这里需要的是一个数据计算工具。
一种可能使用的工具是 numpy
。
为了计算位置 x = 4
处的 y 值,您可以使用 numpy.interp()
.
import numpy as np
number = np.array([1,2,3,5,6])
value = np.array([100.0,85.0,56.4,22.7,6.8])
print (np.interp(4, number, value))
这会打印 39.55
.
现在您当然可以使用 matplotlib 在图表中绘制结果:
import numpy as np
number = np.array([1,2,3,5,6])
value = np.array([100.0,85.0,56.4,22.7,6.8])
f = lambda x: np.interp(x, number, value)
import matplotlib.pyplot as plt
plt.plot(number, value, ls="-.", marker="o", label="values")
plt.plot(4, f(4), marker="s",markersize=8, label="x = 4, y = {}".format(f(4)))
plt.legend()
plt.show()