如何基于各含三组数据的三个数据集创建图表?已有CSV处理代码
如何基于哥伦比亚不同年份的性别数据创建图表?
嘿,你已经把数据提取整理得差不多了!接下来用你已经导入的pandas、matplotlib和seaborn就能轻松做出清晰的图表,我给你几个实用的方案,直接抄代码就能用~
首先建议把你分散的三个数据集合并成一个结构化的DataFrame,这样后续绘图会更方便:
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # 合并你的三个数据集为统一的DataFrame data = { "Year": [2005, 2005, 2005, 2010, 2010, 2010, 2015, 2015, 2015], "Gender": ["Both sex", "Male", "Female"] * 3, "Value": [7.3, 11.7, 3.1, 7.0, 11.1, 2.8, 7.1, 10.9, 3.1] } df_combined = pd.DataFrame(data)
方案1:分组柱状图(最适合跨年份性别对比)
这个图表能同时展示每年内不同性别的数据差异,以及同性别在不同年份的变化,非常直观:
# 设置清爽的绘图风格 sns.set_style("whitegrid") # 创建分组柱状图 plt.figure(figsize=(10, 6)) sns.barplot(x="Year", y="Value", hue="Gender", data=df_combined, palette="viridis") # 添加标题和标签,让图表更易读 plt.title("哥伦比亚2005-2015年分性别数据对比", fontsize=14) plt.xlabel("年份", fontsize=12) plt.ylabel("数值", fontsize=12) plt.legend(title="性别") # 显示图表 plt.show()
方案2:折线图(观察数据趋势)
如果想重点看每个性别数据随时间的变化趋势,折线图是最佳选择:
plt.figure(figsize=(10, 6)) # 用marker标记每个年份的数据点,让趋势更清晰 sns.lineplot(x="Year", y="Value", hue="Gender", data=df_combined, marker="o", linewidth=2) plt.title("哥伦比亚2005-2015年分性别数据趋势", fontsize=14) plt.xlabel("年份", fontsize=12) plt.ylabel("数值", fontsize=12) plt.legend(title="性别") plt.grid(True) plt.show()
方案3:堆叠柱状图(展示年度数据构成)
要是想观察每年整体数据的性别构成占比,堆叠柱状图会很合适:
# 先把数据转换成宽格式,适配堆叠柱状图的绘制要求 df_wide = df_combined.pivot(index="Year", columns="Gender", values="Value") plt.figure(figsize=(10, 6)) df_wide.plot(kind="bar", stacked=True, colormap="viridis", ax=plt.gca()) plt.title("哥伦比亚2005-2015年分性别数据堆叠对比", fontsize=14) plt.xlabel("年份", fontsize=12) plt.ylabel("数值", fontsize=12) plt.legend(title="性别") # 让年份标签横向显示,避免拥挤 plt.xticks(rotation=0) plt.show()
如果坚持想用你原来单独的Dataset2005、Dataset2010、Dataset2015来绘图,也可以手动构造数据列表,但合并成DataFrame是更规范的做法,后续修改或扩展数据会更省心~
内容的提问来源于stack exchange,提问作者user9454269
相关产品推荐
相关产品推荐

