matplotlib:从熊猫创建多个子图(多类)

我想从我的 pandas Dataframe 创建多个图,如下所示:


dataset.head()

   trip_id   duration     distance  avg_speed    avg_acc     travel_mode

0   303633       1.0      42.74      0.00        70.46        foot

1   303637      30.0      521.07     1.43        27.86         car

2   303638      13.0      339.58     0.65        26.30         car

3   303642      12.0      459.94     0.00        78.67         car

4   303657       4.0      71.3       0.00        72.94        foot

该列travel_mode包含 5 种不同的运输方式:


dataset.travel_mode.unique()

array(['foot', 'car', 'bus', 'bike', 'metro'], dtype=object)

我想绘制每种旅行模式的duration,  distance, avg_speed分布avg_acc。


col = ['duration', 'distance', 'avg_speed', 'avg_acc', 'travel_mode']

dataset[col].groupby('travel_mode').hist(bins=50, figsize=(6, 4))

在此处输入图像描述


数字的显示方式您无法分辨哪个数字是什么类型的交通工具。然后我尝试按偏度分布。


偏度分布:


l = dataset.columns.values

n_cols=4

n_rows =5

plt.figure(figsize=(3*n_cols,2*n_rows))

for i in range(0,len(l)):

    plt.subplot(n_rows + 1,n_cols,i+1)

    sns.distplot(dataset[l[i]],kde=True)


TypeError: unsupported operand type(s) for /: 'str' and 'int'

如何显示每种出行模式的标记分布,使出行模式成行,列显示 和 的duration, distance, avg_speed,数字avg_acc



牧羊人nacy
浏览 170回答 2
2回答

人到中年有点甜

这不是一个漂亮的代码,但您可以识别组...标题是组名和列的串联。groups = dataset.groupby('travel_mode')for group in groups:    label = group[0]    data = group[1]    data.columns = label + " - " + data.columns    data.hist(bins=50)

www说

这应该可以由您的travel_mode. 注意subplots=True.dataset[col].groupby('travel_mode').plot(kind='hist', bins=50, subplots=True)如果您想要覆盖密度图,我认为它适用于 seaborn:df = dataset[col].melt(['travel_mode'], var_name='cols',  value_name='vals')g = sns.FacetGrid(df, col='cols', row="travel_mode")g = (g.map(sns.distplot, "vals", kde=True, bins=50))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python