You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Pandas处理带合并表头的Excel数据并分析绘图?

嘿,我来帮你搞定这个在Linux Mint的IPython Notebook里用Pandas处理合并表头Excel的需求!从读数据、处理表头,到设置索引、计算占比再到绘图,咱们一步一步来:

1. 先搞定环境依赖

首先确保你已经安装了需要的库,在IPython Notebook里运行:

!pip install pandas openpyxl matplotlib
  • pandas用来处理数据,openpyxl负责读取xlsx格式的Excel文件,matplotlib用来绘制图表。

2. 读取带合并表头的Excel并处理表头

合并表头的Excel通常是多行表头(比如第一行是大分类,第二行是子项),咱们先把数据读进来,再把合并的表头合并成清晰的单列名称:

import pandas as pd

# 读取Excel,header参数指定表头所在的行(比如前两行是合并表头,就用[0,1])
df = pd.read_excel('你的文件路径.xlsx', header=[0,1])

# 把多层表头合并成单个字符串,比如"地区_年度"这种格式
df.columns = ['_'.join(col).strip() for col in df.columns.values]

# 处理空行和空值:如果有全空的行就删掉,合并单元格导致的空值用前向填充(比如地区列合并的情况)
df = df.dropna(how='all')
df = df.fillna(method='ffill')
df = df.reset_index(drop=True)

注意:如果你的合并表头是三层结构,记得把header参数改成header=[0,1,2];填充空值的方式要根据实际数据结构调整,比如有的空值不需要填充,就跳过fillna步骤

3. 设置自定义索引

根据你的需求设置索引,比如想按「地区」和「年度」做多层索引,方便后续分组计算:

# 假设你的列名是"基本信息_地区"和"基本信息_年度",根据实际合并后的列名调整
df.set_index(['基本信息_地区', '基本信息_年度'], inplace=True)

# 如果只需要单索引(比如按地区),就用:
# df.set_index('基本信息_地区', inplace=True)

调整列名的时候一定要对应你合并后的实际列名,别写错啦!

4. 逐年计算各地区ANC登记人数占比

假设合并后的列名是数据_ANC登记人数和数据_预计年度妊娠数,咱们计算占比(保留两位小数,转成百分比):

# 计算占比,避免分母为0的情况,这里如果预计妊娠数为0,占比设为0
df['ANC登记占比(%)'] = df.apply(
    lambda row: round((row['数据_ANC登记人数'] / row['数据_预计年度妊娠数']) * 100, 2) 
    if row['数据_预计年度妊娠数'] != 0 else 0,
    axis=1
)

# 如果要按年度分组查看各地区的占比,可以转成宽表:
annual_ratio_df = df['ANC登记占比(%)'].unstack('基本信息_地区')
print(annual_ratio_df)

这样你就能看到每一年各地区的占比数据了。

5. 绘制数据图表

用matplotlib绘制年度各地区占比的柱状图,同时解决Linux Mint下的中文显示问题:

import matplotlib.pyplot as plt

# 配置中文字体(Linux Mint自带Noto Sans CJK字体,直接用就行)
plt.rcParams['font.sans-serif'] = ['Noto Sans CJK JP']
plt.rcParams['axes.unicode_minus'] = False

# 绘制柱状图
annual_ratio_df.plot(kind='bar', figsize=(12, 6), rot=0)
plt.title('各地区年度ANC登记人数占比')
plt.xlabel('年度')
plt.ylabel('占比(%)')
plt.legend(title='地区', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

如果你的系统没有Noto字体,可以先通过终端安装:sudo apt install fonts-noto-cjk


内容的提问来源于stack exchange,提问作者David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:43:35