起因:因最近实习期间,要求查看.xlsx文件中数据是否有误,由于数据较多,想用python去执行,结果发现网上对xlsx文件操作或是太旧,大多难以应用,所以自己整理了一下,以备自己后用。
模拟一个测试数据集data_test.xlsx文件,文件如下:
- 导入pandas,并读入文件
# 若报错:SyntaxError: Non-UTF-8 code starting with '\xd0' in file,则把下面这句加上
# coding=gbk
import pandas as pd
df = pd.read_excel('C:/Users/enuit/Desktop/data_test.xlsx')
- 读取行列数及索引
# 行数 (不包含表头,且一下均如此)
print(len(df.index.values))
# 行索引
print(df.index.values)
# 列数
print(len(df.columns.values))
# 列索引
print(df.columns.values)
- 读取指定单行和多行数据
# 表示第0行数据
data = df.loc[0].values
print('第0行数据: \n', data)
# 读取多行数据(这里是第1行和第2行)
data = df.loc[[1, 2]].values
print('第1行和第2行数据: \n', data)
- 读取指定单列和多列数据
# 读第1列数据
data = df.iloc[:, 1].values
print('第1列数据: \n', data)
# 读取多列数据(这里是第1列和第2列)
data = df.iloc[:, [1, 2]].values
print('第1列和第2列数据: \n', data)
- 读取单元格数据或部分数据
# 读取指定单元格数据(这里是第1行第一列数据)
data = df.iloc[1, 2]
print(data)
# 读取多行多列数据(第1,2行1,2列的数据)
data = df.iloc[[1, 2], [1, 2]].values
print(data)
- 输出数据到xlsx文件(举一个抽取大于等于90分数据的任务)
# 任务:输出满足成绩大于等于90的数据
writer = pd.ExcelWriter('C:/Users/enuit/Desktop/out_test.xlsx')
temp = []
for i in range(len(df.index.values)):
if df.iloc[i, 3] >= 90:
temp.append(df.iloc[i].values)
df2 = pd.DataFrame(data=temp, columns=df.columns.values)
# 不写index会输出索引
df2.to_excel(writer, 'Sheet', index=False)
writer.save()