使用 Python 从 bitbucket 读取 csv 文件并将其转换为 df

Read a csv file from bitbucket using Python and convert it to a df

我正在尝试从 bitbucket 读取 url csv 文件,我想使用 python 将其读入 df。另外,对于我正在做的工作,我无法在本地阅读它,它必须一直来自 bitbucket。

关于如何做到这一点有什么想法吗?谢谢!

这是我的例子:

url = 'https://bitbucket.EXAMPLE.com/EXAMPLE/EXAMPLE/EXAMPLE/EXAMPLE/raw/wpcProjects.csv?at=refs%2Fheads%2Fmaster'

colnames=['project_id','project_name','gourmet_url']

df7 = pd.read_csv(url, 名称 =colnames)

然而,输出不正确,它不是 df 正在输出它的一些错误数据。

您有多个选项,但您的问题实际上是 2 个独立的问题。

  1. 如何从远程位置获取文件(在本例中为 .csv)。
  2. 如何将 csv 加载到作为 pandas 数据框的“df”中。

对于#2,您只需import pandas,然后使用df = pandas.read_csv() 函数调用。 See the documentation!如果 CSV 文件在当前目录中,您将执行 pandas.read_csv('myfile.csv')

CSV 在某个服务器上。在这种情况下,它恰好位于从其网站访问的 bitbucket 服务器上。您可以获取它并将其保存在本地,然后访问它,或者您可以将它获取到一个临时位置,将其读入 pandas,然后丢弃它。您甚至可以将文件中的数据作为字符串读取到 python 中。然而,有很多选择并不意味着它们都有用。我只是为了完整性而列出它们。查看文档,pandas 已经在 read_csv() 函数中内置了远程获取。如果传入的路径是有效的 URL 方案,其中,在 pandas,

"Valid URL schemes include http, ftp, s3, gs, and file".

如果你想保存在本地,你可以使用pandas再次这样做,使用数据框的.write()方法。

特别针对 BITBUCKET: 您需要确保 link 到 bitbucket 上的 'raw' 文件。将 link 获取到原始文件,并将其传入。默认情况下,用于在 Web 浏览器上查看文件的 link 不是直接 link 到原始文件,它是提供该文件视图的网页。获取原始文件 link,然后将其传递到 pandas.

代码示例: 假设我们想要(我在 bitbucket 上找到的一个随机 csv 文件): https://bitbucket.org/pedrorijo91/nodejstutorial/src/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv?at=master

你需要的是link原始文件!点击 ... 并按下 'open raw' 我们得到:

https://bitbucket.org/pedrorijo91/nodejstutorial/raw/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv

让我们详细看一下,link 与项目名称相同: https://bitbucket.org/pedrorijo91/nodejstutorial/

之后,raw文件在raw/

那么它就是同一个指针(随机但相同的字母和数字) db4c991864e65c4d72e98a1dc94e33606e3adde9/

最后还是一样的目录结构:

node_modules/levelmeup/data/horse_js.csv

第一个 link 以 ?at=master 结尾,由网络服务器解析并源自网络服务器的 src/ 。第二个link,实际link到raw文件,从raw/开始,以.csv

结尾
import pandas as pd
RAW_Bitbucket_URL = 'https://bitbucket.org/pedrorijo91/nodejstutorial/raw/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv'
df = pd.read_csv(RAW_Bitbucket_URL)

上面的代码对我来说是成功的。

您可能需要下载整个文件,以便尝试使用 requests 发出请求,然后在 pandas.read_csv() 中将其作为 文件 读取.

>>> import pandas as pd
>>> import requests
>>> url = 'https://bitbucket.org/pedrorijo91/nodejstutorial/raw/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv'
>>> r = requests.get(url, allow_redirects=True)
>>> open('file.csv', 'wb').write(r.content)
>>> pd.read_csv('file.csv', encoding='utf-8-sig').head()

                   ID                                              Tweet                 Date                 Via
0  374667940827635712             So, yes, a 100% JS App is 100% awesome  08:59:32, 9-3, 2013                 web
1  374656867466637312  "vituperating priests" who rail against JavaSc...  08:15:32, 9-3, 2013                 web
2  374654221292806144    Node/Browserify/CJS folks, is there any benefit  08:05:01, 9-3, 2013  Twitter for iPhone
3  374640446955212800     100% JavaScript applications. You may get some  07:10:17, 9-3, 2013  Twitter for iPhone
4  374613490763169792       A node.js app that will order you a sandwich  05:23:10, 9-3, 2013                 web