pandas 打开EXCEL文件的一页,取得这一页的最大行数和最大列数
时间: 2024-03-05 09:52:31 浏览: 126
可以使用 pandas 的 read_excel 方法读取 Excel 文件,并且使用 shape 属性获取 DataFrame 的行数和列数。以下是示例代码:
```python
import pandas as pd
# 读取 Excel 文件的第一页
df = pd.read_excel('example.xlsx', sheet_name=0)
# 获取 DataFrame 的最大行数和最大列数
max_rows, max_cols = df.shape
print(f"最大行数为 {max_rows},最大列数为 {max_cols}")
```
需要替换示例代码中的文件名为你的 Excel 文件名,同时可以通过 sheet_name 参数指定要读取的页码或页名称。
相关问题
python读取excel数据 合并第一列和第二列的数据,并放在第三列 ,然后打印行数,每一行对应一个sheet页名称,需要根据sheet页名称读取每个sheet页数据
你可以使用 `pandas` 库来读取Excel数据,并根据sheet页名称读取每个sheet页的数据。然后,你可以合并第一列和第二列的数据,并将结果放在第三列。最后,打印行数和每一行对应的sheet页名称。下面是一个示例代码:
```python
import pandas as pd
# 读取Excel文件
excel_file = pd.ExcelFile('your_file.xlsx')
# 获取所有sheet页名称
sheet_names = excel_file.sheet_names
# 遍历每个sheet页
for sheet_name in sheet_names:
# 读取当前sheet页数据
data = excel_file.parse(sheet_name)
# 合并第一列和第二列的数据,并放在第三列
data['第三列'] = data['第一列'].astype(str) + data['第二列'].astype(str)
# 打印行数和sheet页名称
print(f"Sheet页名称: {sheet_name}")
print(f"行数: {len(data)}")
print(data)
print("-------------------------------------")
```
请将代码中的 `'your_file.xlsx'` 替换为你要读取的Excel文件的路径。代码会首先获取所有sheet页名称,然后遍历每个sheet页。在每个sheet页中,它会读取数据并进行合并和打印。最后,会打印出行数和每个sheet页的名称。
python代码: 1. 创建一个问题单管理excel,如果已经存在则直接打开,添加多个问题单数据,A列序号,B列问题单编号如A0001,C列问题单内容,D列问题单提出人,E列问题单处理人,F列问题单状态processing/close 2. 可以统计每个提出人名下processing状态的问题单行数和close的问题单行数,并生成到一个名叫按提出人汇总的sheet页,该sheet如果已经存在则直接打开。 3. 可以统计每个处理人名下processing状态的问题单行数和close的问题单行数,并生成到一个名叫按处理人汇总的sheet页,该sheet如果已经存在则直接打开。 4. 可以统计processing状态的问题单行数和close的问题单行数并生成到一个名叫总体汇总的sheet页,该sheet如果已经存在则直接打开。
以下是实现上述要求的 Python 代码:
```python
import pandas as pd
import os
# 定义问题单文件路径和文件名
file_path = "./"
file_name = "问题单管理.xlsx"
# 检查文件是否存在,如果不存在则创建一个空的Excel文件
if not os.path.exists(file_path + file_name):
df = pd.DataFrame(columns=["序号", "问题单编号", "问题单内容", "问题单提出人", "问题单处理人", "问题单状态"])
df.to_excel(file_path + file_name, index=False)
# 读取Excel文件
df = pd.read_excel(file_path + file_name)
# 添加多个问题单数据
new_data = [
{"序号": "A0002", "问题单编号": "Q0002", "问题单内容": "这是第二个问题单", "问题单提出人": "张三", "问题单处理人": "李四", "问题单状态": "processing"},
{"序号": "A0003", "问题单编号": "Q0003", "问题单内容": "这是第三个问题单", "问题单提出人": "李四", "问题单处理人": "王五", "问题单状态": "processing"},
{"序号": "A0004", "问题单编号": "Q0004", "问题单内容": "这是第四个问题单", "问题单提出人": "王五", "问题单处理人": "赵六", "问题单状态": "close"},
]
df = df.append(pd.DataFrame(new_data), ignore_index=True)
# 保存Excel文件
writer = pd.ExcelWriter(file_path + file_name, engine='openpyxl')
writer.book = pd.load_workbook(file_path + file_name)
df.to_excel(writer, sheet_name='问题单管理', index=False)
writer.save()
# 按提出人汇总
grouped_by_proposer = df.groupby(["问题单提出人", "问题单状态"]).size().unstack(fill_value=0)
if os.path.exists(file_path + file_name):
with pd.ExcelWriter(file_path + file_name, engine='openpyxl', mode='a') as writer:
try:
existing_df = pd.read_excel(writer, sheet_name='按提出人汇总')
existing_df.set_index("问题单提出人", inplace=True)
existing_df.update(grouped_by_proposer)
existing_df.to_excel(writer, sheet_name='按提出人汇总')
except:
grouped_by_proposer.to_excel(writer, sheet_name='按提出人汇总')
# 按处理人汇总
grouped_by_handler = df.groupby(["问题单处理人", "问题单状态"]).size().unstack(fill_value=0)
if os.path.exists(file_path + file_name):
with pd.ExcelWriter(file_path + file_name, engine='openpyxl', mode='a') as writer:
try:
existing_df = pd.read_excel(writer, sheet_name='按处理人汇总')
existing_df.set_index("问题单处理人", inplace=True)
existing_df.update(grouped_by_handler)
existing_df.to_excel(writer, sheet_name='按处理人汇总')
except:
grouped_by_handler.to_excel(writer, sheet_name='按处理人汇总')
# 总体汇总
grouped_by_status = df.groupby("问题单状态").size()
if os.path.exists(file_path + file_name):
with pd.ExcelWriter(file_path + file_name, engine='openpyxl', mode='a') as writer:
try:
existing_df = pd.read_excel(writer, sheet_name='总体汇总')
existing_df.set_index("问题单状态", inplace=True)
existing_df.update(grouped_by_status)
existing_df.to_excel(writer, sheet_name='总体汇总')
except:
grouped_by_status.to_frame("数量").reset_index().to_excel(writer, sheet_name='总体汇总', index=False)
```
注意:在运行代码前,需要安装 Pandas 和 openpyxl 库。可以使用以下命令进行安装:
```bash
pip install pandas openpyxl
```
此外,代码中的文件路径和文件名可以根据实际情况进行修改。
阅读全文