如何在Jupyter Notebook中读取谷歌共享云端多CSV文件并做统计分析
Google共享云端批量文件处理方案(Pandas + Jupyter Notebook)
为什么你的代码会报404错误?
你用的https://drive.google.com/uc?id=是Google Drive单个文件的直接下载链接,无法访问共享文件夹。你把文件夹ID当成单个文件ID传入,自然会返回404。
正确的处理步骤
1. 准备工作:安装依赖并配置授权
首先安装用于访问Google Drive的pydrive库:
pip install pydrive
然后去Google Cloud Console完成以下操作:
- 创建新项目,启用「Google Drive API」
- 创建OAuth客户端ID(应用类型选「桌面应用」)
- 下载生成的
credentials.json文件,放到Jupyter Notebook的工作目录下
2. 批量读取共享云端的45个文件
以下代码会自动授权并读取共享文件夹内的所有CSV文件(如果你的文件是其他格式,替换pd.read_csv为对应方法即可):
import pandas as pd from pydrive.auth import GoogleAuth from pydrive.drive import GoogleDrive # 授权登录 gauth = GoogleAuth() gauth.LocalWebserverAuth() # 弹出浏览器完成登录授权 drive = GoogleDrive(gauth) # 共享文件夹ID(从你的URL https://drive.google.com/drive/folders/ABC 中提取ABC部分) folder_id = "ABC" # 获取文件夹下所有未删除的文件 file_list = drive.ListFile({'q': f"'{folder_id}' in parents and trashed=false"}).GetList() # 批量读取文件并存储数据 all_dfs = [] file_sums = [] for file in file_list: # 仅处理CSV文件(根据实际格式调整) if file['title'].endswith('.csv'): # 下载文件到本地临时路径 temp_file = drive.CreateFile({'id': file['id']}) temp_file.GetContentFile(file['title']) # 读取文件并统一列名大小写(避免col1/Col1的差异) df = pd.read_csv(file['title']) df.columns = df.columns.str.lower() # 需求2:计算当前文件col1、col2、col3的总和 col_sums = df[['col1', 'col2', 'col3']].sum() file_sums.append({ '文件名': file['title'], 'col1总和': col_sums['col1'], 'col2总和': col_sums['col2'], 'col3总和': col_sums['col3'] }) # 将当前文件数据加入总列表 all_dfs.append(df) # 合并所有文件为一个大DataFrame combined_df = pd.concat(all_dfs, ignore_index=True)
3. 完成剩余需求
需求2结果查看
把每个文件的总和转换成DataFrame展示:
file_sums_df = pd.DataFrame(file_sums) print(file_sums_df)
需求3:按colx分组计算总和
# 按colx分组,计算col1、col2、col3的分组总和 grouped_sums = combined_df.groupby('colx')[['col1', 'col2', 'col3']].sum() print(grouped_sums)
注意事项
- 如果文件是Excel格式,替换
pd.read_csv为pd.read_excel(需提前安装openpyxl库) - 确保共享文件夹对你的Google账号有「查看」权限
- 若授权失败,检查
credentials.json是否正确放置,或重新生成授权文件
内容的提问来源于stack exchange,提问作者anagha s
相关产品推荐
相关产品推荐

