python pandas excel操作

hegangben
2025-05-29 / 0 评论 / 1 阅读 / 正在检测是否收录...

mb8s6o2i.png

1 获取一个excel文档的所有的sheet
方法一:

xls = pd.ExcelFile(file_name)
sheets = xls.sheet_names
num_sheets = len(sheets)
print("Excel file contains", num_sheets, "sheets.")
print(sheets)

打印接轨:
Excel file contains 2 sheets.
['history', 'test_feature']

方法二:

sheet=pd.read_excel(file_name,sheet_name=None)
print(list(sheet.keys()))
for j in sheet.keys():
print(j)   

打印结果:
['history', 'test_feature']
history
test_feature

2 读取 excel 表格之读取指定的子表 sheet
pandas读取excel使用 read_excel() 函数

import pandas as pd


df = pd.read_excel('goods_base.xlsx')
.
sheet_name 参数, 指定读取 sheet 子表
# 单个sheet
df = pd.read_excel('sheet_name.xlsx', sheet_name=2)
df = pd.read_excel('sheet_name.xlsx', sheet_name='3月')
# 多个sheet, 返回字典
df_dict = pd.read_excel('sheet_name.xlsx', sheet_name=[1, '3月'])
# 全部sheet, 返回字典
df_dict = pd.read_excel('sheet_name.xlsx', sheet_name=None

3 pandas逐个遍历sheet

import pandas as pd


f = pd.ExcelFile('./data.xlsx')


for i in f.sheet_names:


d = pd.read_excel('./data.xlsx', sheetname=i)


print(d)

4 读最大的取行列数


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)

结果:
mb8s3bol.png

5 读取指定行的单元格内容
excel 原始的内容
mb8s2vth.png

比如excel 读出的内容
mb8s3kwi.png

design 的内容

df = pd.read_excel(file_name, sheet_name="history")
print(df.loc[1,"demo"])
#或者
print(df.iloc[1,1])

都是返回designer这个内容。

6根据条件筛选单元格

# C:\Users\lenovo\Desktop\总结\Python
# 读取 Excel 文件并进行筛选

import pandas as pd

# 设置列对齐
pd.set_option("display.unicode.ambiguous_as_wide",True)
pd.set_option("display.unicode.east_asian_width",True)

# 读取工号姓名时段交易额,使用默认索引
dataframe = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx',usecols = ['工号','姓名','时段','交易额'])

# 打印前十行数据
dataframe[:10]


   工号  姓名         时段  交易额
0  1001  张三   9:00-14:00    2000
1  1002  李四  14:00-21:00    1800
2  1003  王五   9:00-14:00     800
3  1004  赵六  14:00-21:00    1100
4  1005  周七   9:00-14:00     600
5  1006  钱八  14:00-21:00     700
6  1006  钱八   9:00-14:00     850
7  1001  张三  14:00-21:00     600
8  1001  张三   9:00-14:00    1300
9  1002  李四  14:00-21:00    1500
'''
# 跳过 1 2 4 行,以第一列姓名为索引
dataframe2 = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx',
                           skiprows = [1,2,4],
                           index_col = 1)
'''注:张三李四赵六的第一条数据跳过
      工号      日期         时段  交易额      柜台
姓名                                               
王五  1003  20190301   9:00-14:00     800      食品
周七  1005  20190301   9:00-14:00     600    日用品
钱八  1006  20190301  14:00-21:00     700    日用品
钱八  1006  20190301   9:00-14:00     850  蔬菜水果
张三  1001  20190302  14:00-21:00     600  蔬菜水果
'''

# 筛选符合特定条件的数据
# 读取超市营业额数据
dataframe = pd.read_excel(r'C:\Users\lenovo\Desktop\总结\Python\超市营业额.xlsx')

# 查看 5 到 10 的数据
dataframe[5:11]
'''
    工号  姓名      日期         时段  交易额      柜台
5   1006  钱八  20190301  14:00-21:00     700    日用品
6   1006  钱八  20190301   9:00-14:00     850  蔬菜水果
7   1001  张三  20190302  14:00-21:00     600  蔬菜水果
8   1001  张三  20190302   9:00-14:00    1300    化妆品
9   1002  李四  20190302  14:00-21:00    1500    化妆品
10  1003  王五  20190302   9:00-14:00    1000      食品
'''
# 查看第六行的数据
dataframe.iloc[5]
'''
工号             1006
姓名             钱八
时段      14:00-21:00
交易额            700
Name: 5, dtype: object
'''
dataframe[:5]
'''
   工号  姓名         时段  交易额
0  1001  张三   9:00-14:00    2000
1  1002  李四  14:00-21:00    1800
2  1003  王五   9:00-14:00     800
3  1004  赵六  14:00-21:00    1100
4  1005  周七   9:00-14:00     600
'''
# 查看第 1 3 4 行的数据
dataframe.iloc[[0,2,3],:]
'''
   工号  姓名         时段  交易额
0  1001  张三   9:00-14:00    2000
2  1003  王五   9:00-14:00     800
3  1004  赵六  14:00-21:00    1100
'''
# 查看第 1 3 4 行的第 1 2 列
dataframe.iloc[[0,2,3],[0,1]]
'''
   工号  姓名
0  1001  张三
2  1003  王五
3  1004  赵六
'''
# 查看前五行指定,姓名、时段和交易额的数据
dataframe[['姓名','时段','交易额']][:5]
'''
   姓名         时段  交易额
0  张三   9:00-14:00    2000
1  李四  14:00-21:00    1800
2  王五   9:00-14:00     800
3  赵六  14:00-21:00    1100
4  周七   9:00-14:00     600
'''
dataframe[:5][['姓名','时段','交易额']]
'''
   姓名         时段  交易额
0  张三   9:00-14:00    2000
1  李四  14:00-21:00    1800
2  王五   9:00-14:00     800
3  赵六  14:00-21:00    1100
4  周七   9:00-14:00     600
'''
# 查看第 2 4 5 行 姓名,交易额 数据 loc 函数
dataframe.loc[[1,3,4],['姓名','交易额']]
'''
   姓名  交易额
1  李四    1800
3  赵六    1100
4  周七     600
'''
# 查看第四行的姓名数据
dataframe.at[3,'姓名']
# '赵六'

# 查看交易额大于 1700 的数据
dataframe[dataframe['交易额'] > 1700]
'''
   工号  姓名         时段  交易额
0  1001  张三   9:00-14:00    2000
1  1002  李四  14:00-21:00    1800
'''
# 查看交易额总和
dataframe.sum()
'''
工号                                                  17055
姓名      张三李四王五赵六周七钱八钱八张三张三李四王五赵六周七钱八李四王五张三...
时段      9:00-14:0014:00-21:009:00-14:0014:00-21:009:00...
交易额                                                17410
dtype: object
'''
# 某一时段的交易总和
dataframe[dataframe['时段'] == '14:00-21:00']['交易额'].sum()
# 8300

# 查看张三在下午14:00之后的交易情况
dataframe[(dataframe.姓名 == '张三') & (dataframe.时段 == '14:00-21:00')][:10]
'''
   工号  姓名         时段  交易额
7  1001  张三  14:00-21:00     600
'''
# 查看日用品的销售总额
# dataframe[dataframe['柜台'] == '日用品']['交易额'].sum()

# 查看张三总共的交易额
dataframe[dataframe['姓名'].isin(['张三'])]['交易额'].sum()
# 5200

# 查看交易额在 1500~3000 之间的记录
dataframe[dataframe['交易额'].between(1500,3000)]
'''
   工号  姓名         时段  交易额
0  1001  张三   9:00-14:00    2000
1  1002  李四  14:00-21:00    1800
9  1002  李四  14:00-21:00    1500
'''
0

评论 (0)

取消