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

使用Matplotlib结合Gspread调用谷歌表格时遇API错误及数据拆分绘图求助

问题1:Google Sheets API 400错误排查方案
  • 文档类型不符:确认你通过open_by_key访问的是标准Google Sheets表格,而非Google表单、文档或其他不兼容类型的文件。
  • 权限配置问题:检查目标表格的共享设置,确保当前授权账号拥有至少「查看权限」;同时确认Google Cloud Console中,Google Sheets API和Google Drive API已正确启用。
  • 密钥/链接错误:核对open_by_key中的表格密钥是否准确,避免多余字符或拼写错误。
问题2:按0/1列拆分DataFrame并绘图

首先补全数据加载代码(确保列名和数据类型正确):

import gspread
import pandas as pd
import matplotlib.pyplot as plt
from google.colab import auth
from google.auth import default

auth.authenticate_user()
creds, _ = default()

gc = gspread.authorize(creds)
sh = gc.open_by_key("你的表格密钥")
worksheet = sh.worksheet("user06")
rows = worksheet.get_all_values()

# 用表格第一行作为列名,剩余行作为数据
df = pd.DataFrame(rows[1:], columns=rows[0])
# 将数值列转换为数值类型(非数值列会被忽略)
df = df.apply(pd.to_numeric, errors='ignore')

拆分DataFrame

假设用于拆分的列名为flag(替换为你实际的列名):

# 筛选flag为0的行
df_flag0 = df[df['flag'] == 0]
# 筛选flag为1的行
df_flag1 = df[df['flag'] == 1]

绘制图表示例

以直方图为例,对比两部分数据的某数值列分布:

# 绘制flag=0的数值列分布
plt.hist(df_flag0['数值列名称'], bins=10, alpha=0.5, label='flag=0')
# 绘制flag=1的数值列分布
plt.hist(df_flag1['数值列名称'], bins=10, alpha=0.5, label='flag=1')

plt.legend()
plt.xlabel('数值')
plt.ylabel('频数')
plt.title('不同flag值的数值分布')
plt.show()

如果需要折线图,可替换为:

plt.plot(df_flag0['X轴列'], df_flag0['Y轴列'], label='flag=0')
plt.plot(df_flag1['X轴列'], df_flag1['Y轴列'], label='flag=1')
plt.legend()
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:03:26