如何利用Python处理excel表格中的数据

  • Post category:Python

当需要进行大量数据的整理、分析、处理等操作时,Excel可能并不是最好的选择,因为它的操作速度以及对大数据处理的能力较弱,此时,我们可以利用Python的pandas库来处理excel表格中的数据。

下面是一个完整的实例教程:

安装及导入需要的库

首先,我们需要用pip命令安装需要的库:pandas, xlrd, openpyxl

!pip install pandas xlrd openpyxl

导入已经安装的库:

import pandas as pd

读取Excel文件

我们需要读取一个Excel文件中的数据,可以使用read_excel()函数来实现。这个函数需要两个必要的参数,一个是文件名,另一个是需要读取数据的工作表名。如果不指定工作表名,则默认读取第一个工作表。

df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

这行代码会将’data.xlsx'文件中名为’Sheet1'的工作表中的数据读入pandas的DataFrame格式中,存储于变量df中。可以使用head()函数来查看前5行的数据。

df.head()

数据处理

接下来,我们可以对读取的数据进行处理。例如,我们可以计算出一列数据的均值、中位数、最大值和最小值,并输出。

mean = df['数学成绩'].mean()
median = df['数学成绩'].median()
max_score = df['数学成绩'].max()
min_score = df['数学成绩'].min()

print('数学成绩的均值为:{:.2f}'.format(mean))
print('数学成绩的中位数为:{}'.format(median))
print('数学成绩的最高分为:{}'.format(max_score))
print('数学成绩的最低分为:{}'.format(min_score))

执行完这段代码后,就能够输出数学成绩一列的均值、中位数、最大值和最小值。

下面是另一个示例,我们要将某一列数据按照自定义的规则进行修改。

需要修改的规则是,如果某个学生的语文成绩大于等于80,将该成绩修改为“优秀”,否则将成绩修改为“一般”。

def modify_grade(score):
    if score >= 80:
        return '优秀'
    else:
        return '一般'

df['语文成绩'] = df['语文成绩'].apply(modify_grade)

这段代码首先定义了一个modify_grade()函数,用来修改单个成绩,然后使用了apply()函数来对整个’语文成绩’列的数据进行修改。

将修改后的数据保存到新的Excel文件中

在完成数据的处理和修改后,我们可以将修改后的数据保存到新的Excel文件中。使用to_excel()函数来实现。to_excel()函数需要指定文件名以及写入的工作表名。

df.to_excel('new_data.xlsx', sheet_name='Sheet1', index=False)

这行代码会将修改后的数据保存到’new_data.xlsx'文件中,工作表的名称为“Sheet1”。index=False表示不保存DataFrame的行索引。

这样,我们就完成了对Excel文件的数据读取、处理和保存。

完整示例代码如下:

import pandas as pd

# 读取Excel文件
df = pd.read_excel('data.xlsx', sheet_name='Sheet1')

# 计算均值、中位数、最大值和最小值
mean = df['数学成绩'].mean()
median = df['数学成绩'].median()
max_score = df['数学成绩'].max()
min_score = df['数学成绩'].min()

print('数学成绩的均值为:{:.2f}'.format(mean))
print('数学成绩的中位数为:{}'.format(median))
print('数学成绩的最高分为:{}'.format(max_score))
print('数学成绩的最低分为:{}'.format(min_score))

# 将语文成绩按照自定义规则进行修改
def modify_grade(score):
    if score >= 80:
        return '优秀'
    else:
        return '一般'

df['语文成绩'] = df['语文成绩'].apply(modify_grade)

# 将修改后的数据保存到新的Excel文件中
df.to_excel('new_data.xlsx', sheet_name='Sheet1', index=False)