给出以下数据框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的区间。我该怎么做?
答案 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