如何使用pandas将多个CSV文件的周一数据绘制到同一柱状图
实现代码
你可以通过合并三个文件数据+新增文件来源标记的方式实现需求,完整代码如下:
import pandas as pd import matplotlib.pyplot as plt # 定义待读取的文件列表 file_list = ["file1.csv", "file2.csv", "file3.csv"] all_data = pd.DataFrame() # 批量读取文件并合并,新增字段标记数据所属文件 for file_name in file_list: temp_df = pd.read_csv(file_name) temp_df["file_source"] = file_name all_data = pd.concat([all_data, temp_df], ignore_index=True) # 筛选所有周一的记录 monday_data = all_data[all_data["DAY"] == "Monday"] # 按文件来源分组计算STATUS各取值的占比 plot_data = monday_data.groupby("file_source")["STATUS"].value_counts(normalize=True).unstack() # 绘制分组柱状图 plot_data.plot.bar(rot=0) # 可选:自定义图表文本 plt.xlabel("所属CSV文件") plt.ylabel("占比") plt.title("各文件周一STATUS占比分布") plt.legend(title="STATUS值") plt.show()
效果说明
运行后生成的图表X轴为三个CSV文件名,每个文件名对应一组STATUS占比的分组柱状图,和你要求的输出效果完全一致。如果需要调整柱状图宽度、配色、位置,可以在plot.bar()方法中传入对应参数自定义。
内容的提问来源于stack exchange,提问作者sam
相关产品推荐
相关产品推荐

