为连续变量

时间:2017-05-05 14:00:54

标签: python pandas matplotlib

给出以下数据框df

A      B
14.5   1
12.1   3
14.2   4
5.0    1
6.0    3
8.0    5
12.0   1

我想在B中每个值的间隔创建一个中间值为A的图表(步长等于3)。

我可以不使用间隔创建此图表。

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

grouped_df = df.groupby('A')['B'].aggregate(np.median).reset_index()
plt.figure(figsize=(12,8))
sns.pointplot(grouped_df.A.values, grouped_df.B.values)
plt.ylabel('Median B', fontsize=12)
plt.xlabel('A', fontsize=12)
plt.show()

但在这种情况下,图表看起来非常混乱。因此,我想将A的值放入3的区间。我该怎么做?

1 个答案:

答案 0 :(得分:2)

您可以使用pd.cut将连续变量剪切为分档:

cut = pd.cut(df.A, bins=list(range(3,18,3))
grouped_df = df.groupby(cut)['B'].median().reset_index()
#           A  B
# 0    (3, 6]  2
# 1    (6, 9]  5
# 2   (9, 12]  1
# 3  (12, 15]  3