matplotlib平均间隔图

时间:2015-06-17 18:57:47

标签: python pandas matplotlib plot

我从R过渡到python,并且正在寻找绘制两个变量的平均线。它是x变量的图,分为x轴的间隔和y轴的y变量的平均值。

例如,如果我有1000点(x1,y1)到(x1000,y1000),并且想要绘制成3个区间,我将有3条x区间,其中每条区域都有y个变量的平均值落入相应的间隔。

有谁知道这个情节被调用了什么,我怎么能在python中做到这一点?在R中,我使用" cut"命令,然后绘制切割的x,y。

谢谢!

2 个答案:

答案 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()

enter image description here

答案 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()

enter image description here