使用 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 个独立的问题。
- 如何从远程位置获取文件(在本例中为 .csv)。
- 如何将 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' 我们得到:
让我们详细看一下,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
我正在尝试从 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 个独立的问题。
- 如何从远程位置获取文件(在本例中为 .csv)。
- 如何将 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' 我们得到:
让我们详细看一下,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