Pyhton 批量筛选Excel的方法——Pandas的使用

本文详细介绍如何使用Python的Pandas库高效筛选Excel表格中的数据,通过实例演示了18岁以上男性参加三次会议的筛选过程,包括数据读取、条件设置及结果计算。适合数据处理初学者理解Pandas在数据筛选中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Pyhton 批量筛选Excel的方法——Pandas的使用

摘要

在进行数据处理时,经常需要筛选出满足条件的数据,本文给出一种使用Python筛选Excel表格中数据的简单方法。

说明

对一张表几个字段的筛选无法体现Python处理数据的能力,本文所举案例只为示范说明。

1、初始化数据(可跳过)

假设有这样一个表,统计单位与会人员的信息,1表示到会,0表示缺席,session-1表示第一次会议,session-2表示第二次会议,以此类推。首先生成一个这样的数据表,在此基础上进行筛选:
在这里插入图片描述
生成数据所用的代码,供参考:

def init_data():
	# 创建Excel文件、工作表
    file = xlwt.Workbook(encoding='utf-8')
    table = file.add_sheet('Sheet1')
    
	# 设计字段名
    row = ['id', 'gender', 'age', 'session-1', 'session-2', 'session-3']
    gender = ['男','女']

    # 写入字段
    for j in range(6):
        table.write(0, j, row[j])
    # 写入具体数据
    for i in range(1,21):
        # 写入编号
        table.write(i, 0, i)
        # 写入性别
        table.write(i, 1, gender[random.randint(0,1)])
        # 写入年龄
        table.write(i, 2, random.randint(18, 50))
        # 写入是否到会
        table.write(i, 3, random.randint(0, 1))
        table.write(i, 4, random.randint(0, 1))
        table.write(i, 5, random.randint(0, 1))
	# 保存文件
    file.save('data.xls')

2、根据条件筛选数据

假设条件为:18岁以上的男性分别参加这3次会议的数据。
具体方法为:
(1)先用pandas读取Excel的办法将数据读入,记为data,同时使用DataFrame函数使之在Python中也呈现为一个二维数组表,记为df;
(2)使用类似于语句 df[df['字段名1'] == 条件1]这样的语句进行筛选,同时进行一些简单计算。先上代码:

def select_data(path):
	# 使用pandas读取文件
    data = pd.read_excel(path)
    # 将数据存成规范的二维数组表
    df = pd.DataFrame(data)
    # 取出第一行的字段名
    first_row = df[0:0]
    # 根据自己的需要进行筛选
    for row in first_row:
        if row.startswith('session'):
            # 设置筛选条件
            df1 = df[(df[row] == 1) & (df['gender'] == '男') & (df['age'] < 45)]
            # 打印出筛选后的表
            print(df1)
            # 进行一些简单计算:例如到会人员的平均年龄
            print(sum(df1['age'])/len(df1[row]))

运算结果:
在这里插入图片描述
(3)补充说明:
① if 判断可以没有,我这里是为了一次性筛出3次会议的数据;
② 条件可以是单条件,多条件与或非的组合,例如条件改为:到会或是男性的45以下人员,条件语句写为:

((df[row] == 1) | (df['gender'] == '男')) & (df['age'] < 45)

相应的部分运算结果,以session-1为例:
在这里插入图片描述
以下是头文件和main函数的调用,代码组合后可以运行测试:

import random
import xlwt
import pandas as pd
if __name__ == '__main__':
    # init_data() # 运行一次生成文件后注释
    select_data('data.xls')

以上就是Python + Pandas筛选Excel数据的一个简单案例,实际上也可以筛选CSV数据,读入时使用pd.read_csv()函数,关键在于筛选条件的书写,对于二维数组表的理解。

### 回答1: 怎么写? 你可以使用Pythonpandas库来操作Excel文件。下面是一个简单的代码示例: ``` import pandas as pd # 读取Excel文件 df = pd.read_excel('file.xlsx') # 修改某一列的内容 df['column_name'] = df['column_name'].apply(lambda x: x + 1) # 保存修改后的文件 df.to_excel('file.xlsx', index=False) ``` ### 回答2: 要用Python批量改写Excel内容,我们可以使用第三方库openpyxl来实现。首先,需要在Python环境中安装openpyxl库。 安装好openpyxl后,我们可以先导入相关模块和函数: ```python from openpyxl import load_workbook ``` 接下来,我们需要加载Excel文件: ```python wb = load_workbook('example.xlsx') ``` 这里的'example.xlsx'是要修改的Excel文件名,可以根据实际情况修改。 接下来可以选择要操作的工作表: ```python ws = wb.active ``` 这里的active表示打开Excel文件时默认选择的工作表,也可以根据实际情况选择其他工作表。 接下来就可以通过遍历单元格来进行修改了。例如,如果要将所有的单元格内容都修改成“修改后的内容”,可以使用以下代码: ```python for row in ws.iter_rows(): for cell in row: cell.value = '修改后的内容' ``` 这里的iter_rows()函数可以用于遍历每一行,然后遍历每一行中的每一个单元格。 修改完内容后,可以保存并关闭Excel文件: ```python wb.save('modified.xlsx') wb.close() ``` 这里的'modified.xlsx'是修改后保存的文件名。 至此,我们就完成了使用Python批量改写Excel内容的代码。通过这个简单的例子,我们可以根据具体的需求进行更复杂的操作,例如根据某些条件筛选需要改写的单元格内容,或者根据其他数据源的内容来更新Excel文件等。 ### 回答3: 要通过Python批量改写Excel内容,首先需要导入相应的库——`openpyxl`。这个库可以用于读取和修改Excel文件。 首先,我们需要打开一个Excel文件。可以使用`openpyxl.load_workbook()`函数来加载一个现有的Excel文件,或者使用`openpyxl.Workbook()`函数创建一个新的Excel文件。对于现有的文件,我们可以使用`get_sheet_by_name()`或`active`属性来选择一个特定的工作表。 接下来,我们可以使用`for`循环遍历Excel文件中的每个单元格。可以使用`sheet.iter_rows()`函数来获取特定工作表中的每一行,然后使用`for`循环遍历每一行中的单元格。 然后,我们可以根据需要进行条件判断来修改单元格的内容。例如,可以使用`cell.value`来访问单元格的值,并将其替换为新的值。可以使用`cell.font`、`cell.fill`等属性来修改单元格的字体、颜色等样式。 最后,我们需要保存修改后的Excel文件。可以使用`workbook.save()`函数将修改后的数据保存到文件中。 总的来说,这就是一个简单的Python代码框架来批量改写Excel内容。根据具体的需求,我们可以添加其他功能来实现更复杂的操作,如插入新的行、合并单元格等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值