我从R过渡到python,并且正在寻找绘制两个变量的平均线。它是x变量的图,分为x轴的间隔和y轴的y变量的平均值。
例如,如果我有1000点(x1,y1)到(x1000,y1000),并且想要绘制成3个区间,我将有3条x区间,其中每条区域都有y个变量的平均值落入相应的间隔。
有谁知道这个情节被调用了什么,我怎么能在python中做到这一点?在R中,我使用" cut"命令,然后绘制切割的x,y。
谢谢!
答案 0 :(得分:1)
这是一个例子。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# simulate some artificial data
x = np.random.randn(1000,)
y = 5 * x ** 2 + np.random.randn(1000,)
data = pd.DataFrame(0.0, columns=['X', 'Y'], index=np.arange(1000))
data.X = x
data.Y = y
# now do your stuff
# ================================
# use the pandas 'cut' function
data['X_bins'] = pd.cut(data.X, 3)
# for each bin, calculate the mean of Y
result = data.groupby('X_bins')['Y'].mean()
# do the plot
result.plot()
答案 1 :(得分:1)
对于后续问题,我们可以使用boxplot做更强大的功能。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# simulate some artificial data
x = np.random.randn(1000,)
y = 5 * x ** 2 + np.random.randn(1000,)
data = pd.DataFrame(0.0, columns=['X', 'Y'], index=np.arange(1000))
data.X = x
data.Y = y
# now do your stuff
# ================================
# use the pandas 'cut' function
data['X_bins'] = pd.cut(data.X, 3)
data.set_index('X_bins', append=True, inplace=True)
data.drop('X', axis=1, inplace=True)
data.unstack(level=1).boxplot()