如何从DataFrame多列y值生成单个直方图?
合并多列y值生成单个直方图的实现方法
要把DataFrame中所有y开头的列合并成一组数据绘制单个直方图,核心是先将多列y值扁平化为一维数组,再用matplotlib绘制。以下是具体实现步骤:
方法一:使用values.flatten()扁平化数据
import pandas as pd import matplotlib.pyplot as plt # 提取所有以y开头的列(自动匹配y0到y14) y_data = megDiff.filter(like='y') # 将多列数据转为一维数组 all_y_values = y_data.values.flatten() # 绘制直方图 plt.hist(all_y_values, bins=100, label="All Y Data Sets") plt.xlabel("Y Value") plt.ylabel("Frequency") plt.title("Combined Histogram of All Y Series") plt.legend() plt.show()
方法二:使用stack()处理数据(适合保留索引场景)
如果需要临时保留原数据的索引关联信息,也可以用stack()方法:
all_y_values = y_data.stack().values # 后续绘图代码和上述一致
处理缺失值(可选)
如果数据中存在缺失值,需要先过滤掉避免绘图报错:
all_y_values = y_data.stack().dropna().values
关键说明:
filter(like='y')会自动筛选所有列名包含"y"的列,不用手动逐个列出y0到y14,扩展性更强;- 扁平化后的一维数组可直接传入
plt.hist(),生成包含所有y列数据的单个直方图。
内容的提问来源于stack exchange,提问作者bigmac42
相关产品推荐
相关产品推荐

