如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?

Posted

技术标签:

【中文标题】如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?【英文标题】:How do I request a zipfile, extract it, then create pandas dataframes from the csv files? 【发布时间】:2016-09-19 17:41:45 【问题描述】:

从 Sean Lahman 的棒球数据库中加载这些 CSV 文件。对于这项任务,我们将使用“Salaries.csv”和“Teams.csv”表。将这些表读入 pandas DataFrame 并显示每个表的头部。

 #Here's the code I have so far:
 import requests
 import io
 import zipfile
 url = 'http://seanlahman.com/files/database/lahman-csv_2014-02-14.zip
 r = requests.get(url,auth=('user','pass'))

 #These were lines of code I looked up but am not sure to use:
 #with zipfile.ZipFile('/path/to/file', 'r') as z:
      #f = z.open('member.csv')
        #table = pd.io.parsers.read_table(f, ...)
 #salariesData = pd.read_csv('Salaries.csv')
 #teamsData = pd.read_csv('Teams.csv')

【问题讨论】:

这里一般不鼓励家庭作业问题。 【参考方案1】:

请求返回一个字节文件,所以首先将字节转换为zip文件:

mlz = zipfile.ZipFile(io.BytesIO(r.content))

要查看压缩文件中的内容,请输入:

mlz.namelist()

然后就可以提取和读取索引对应的CSV,x:

df1  = pd.read_csv(mlz.open(mlz.namelist()[0]))
df2 = pd.read_csv(mlz.open(mlz.namelist()[1]))

在您的具体情况下,这可能是:

salariesData = pd.read_csv(mlz.open('Salaries.csv'))
teamsData = pd.read_csv(mlz.open('Teams.csv'))

(所有这些 ^ 假设您使用的是 Python 3.x)

【讨论】:

以上是关于如何请求一个 zip 文件,提取它,然后从 csv 文件创建熊猫数据框?的主要内容,如果未能解决你的问题,请参考以下文章

从 Python3 中的 .zip 文件中提取和读取 [重复]

下载一个 zip 文件并使用 Python3 将其提取到内存中

如何使用python从csv文件中提取最小值和最大值

如何提取多个 zip 文件并在 R 中读取这些 csv? [复制]

如何使用android [关闭]获取RealmObject中的最后一个修改过的RealmObject或字段

如何从 Jmeter 发送 csv 文件上传请求