You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何利用xlrd读取Excel列的首尾数值并计算变化率

Modified Code to Calculate Column Change Rate

Hey Chris, here's a revised version of your code that grabs the first and last values from column index 1, then computes the percentage change between them. I've added error handling for edge cases like a zero starting value too:

import xlrd

# Path to your Excel file
loc = "/Users/chrissmith/Desktop/final/HistoricalData.xls"

# Open the workbook and select the first sheet
wb = xlrd.open_workbook(loc)
sheet = wb.sheet_by_index(0)

# Get the first and last values from column index 1 (second column)
first_value = sheet.cell_value(0, 1)
last_value = sheet.cell_value(sheet.nrows - 1, 1)

# Ensure we're dealing with numeric values (in case Excel has formatted cells)
try:
    first_value = float(first_value)
    last_value = float(last_value)
except ValueError:
    print("Error: First or last value in column 1 is not a number!")
    exit()

# Calculate change rate, handle division by zero
if first_value == 0:
    print("Cannot calculate change rate: First value is zero (division by zero)")
else:
    change_rate = ((last_value - first_value) / first_value) * 100
    # Print result with 2 decimal places for readability
    print(f"Change rate from first to last value: {change_rate:.2f}%")

Key Changes Explained:

  • Grabbing First/Last Values: Instead of looping through all rows, we directly access the first row (0) and the last row (sheet.nrows - 1) for column index 1—this is more efficient than iterating every entry.
  • Type Conversion: Added float() conversion to make sure we're working with numeric values (Excel sometimes stores numbers as text, which would break the calculation).
  • Error Handling:
    • Catches cases where the first/last values aren't valid numbers.
    • Avoids division by zero if the starting value is zero (a common edge case that would crash the original logic).
  • Readable Output: Formats the change rate to 2 decimal places for clean, easy-to-interpret results.

If your column has a header row (row 0 is text instead of a number), just adjust the first_value row index to 1 instead of 0.

内容的提问来源于stack exchange,提问作者Chris Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 19:33:12