【问题标题】:Boxplot of a list of pandas dataframes熊猫数据框列表的箱线图
【发布时间】:2020-11-29 16:21:45
【问题描述】:

我有下一个数据框列表

列表 = [df1, df2, df3, df4]

所有的dfs都具有相同的结构

df = [col1, col2, col3]

我想在每个 df 中制作一个具有相同列的箱线图,但我不能,我正在尝试:

for df in dfs:
    df.boxplot(column='col1', subplots=True)

解决办法是:

new_df = pd.concat(list, axis=1)
for column in new_df:
    df.boxplot(['col1'])

【问题讨论】:

  • 你想要一个箱线图来显示 dfs 之间聚合在一起的所有数据吗?还是您想要为每个数据框分别绘制箱线图?

标签: pandas boxplot


【解决方案1】:

您可以将所有 dfs 组合成一个更大的数据框(按行连接),然后使用内置的箱线图方法创建所有列的箱线图,因为默认行为是为每一列创建箱线图。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

np.random.seed(42)
df1 = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=['col1','col2','col3'])
df2 = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=['col1','col2','col3'])
df3 = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=['col1','col2','col3'])
df4 = pd.DataFrame(np.random.randint(0,100,size=(100, 3)), columns=['col1','col2','col3'])

dfs = [df1, df2, df3, df4]

## this will create a big dataframe composed of all the dfs
all_data = pd.concat(dfs, axis=1)

## this creates one boxplot for the first dataframe, loop through this
boxplot = all_data.iloc[:,0:3].boxplot()
plt.show()

【讨论】:

  • 谢谢,但我想在同一个箱线图中为每个 df 绘制 col1 --> col1 col1 col1
  • 啊,我明白了。那么你想要 4 个独立的箱线图吗?
  • 是的,有可能吗?
  • 我根据你的想法找到了解决方案,只使用 pd.concat(list, axis=1) 然后绘制 4 个箱线图
  • 太棒了!很高兴听到它奏效了。我也会更新我的答案。
【解决方案2】:

你需要连接它。

df = pd.concat(lst)

然后绘制:

for column in df:
    plt.figure()
    df.boxplot(['col1'])

【讨论】:

  • 只绘制一个箱线图
猜你喜欢
  • 1970-01-01
  • 2017-03-20
  • 2017-12-16
  • 1970-01-01
  • 2020-04-17
  • 2023-03-28
  • 2020-12-05
  • 2014-12-17
  • 2017-09-09
相关资源
最近更新 更多