小编Die*_*des的帖子

如何使用pyarrow从S3读取镶木地板文件列表作为pandas数据框?

我有一种使用boto3(1.4.4),pyarrow(0.4.1)和pandas(0.20.3)实现这一目标的hacky方法.

首先,我可以在本地读取单个镶木地板文件,如下所示:

import pyarrow.parquet as pq

path = 'parquet/part-r-00000-1e638be4-e31f-498a-a359-47d017a0059c.gz.parquet'
table = pq.read_table(path)
df = table.to_pandas()
Run Code Online (Sandbox Code Playgroud)

我也可以在本地读取镶木地板文件目录,如下所示:

import pyarrow.parquet as pq

dataset = pq.ParquetDataset('parquet/')
table = dataset.read()
df = table.to_pandas()
Run Code Online (Sandbox Code Playgroud)

两者都像魅力一样.现在我想用存储在S3存储桶中的文件远程实现相同的功能.我希望这样的东西能起作用:

dataset = pq.ParquetDataset('s3n://dsn/to/my/bucket')
Run Code Online (Sandbox Code Playgroud)

但它没有:

OSError: Passed non-file path: s3n://dsn/to/my/bucket

在仔细阅读了pyarrow的文档后,目前似乎无法做到这一点.所以我提出了以下解决方案:

从S3读取单个文件并获取pandas数据帧:

import io
import boto3
import pyarrow.parquet as pq

buffer = io.BytesIO()
s3 = boto3.resource('s3')
s3_object = s3.Object('bucket-name', 'key/to/parquet/file.gz.parquet')
s3_object.download_fileobj(buffer)
table = pq.read_table(buffer)
df = table.to_pandas()
Run Code Online (Sandbox Code Playgroud)

在这里,我的hacky,not-so-optimized,解决方案从S3文件夹路径创建一个pandas数据框:

import io
import …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas boto3 pyarrow

25
推荐指数
7
解决办法
2万
查看次数

什么是新的Instagram json端点?

Instagram用于在端点下将开放数据公开为json https://www.instagram.com/<username>/?__a=1.这改变了一夜,端点不再可用.什么是新的端点或什么可以替代它?

提前致谢!

api json endpoint instagram instagram-api

10
推荐指数
2
解决办法
8525
查看次数

我应该在ssh公钥中使用个人电子邮件吗?

阅读Github的“ 生成SSH密钥”教程,我在第2步:生成新的SSH密钥中看到了这一点:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
Run Code Online (Sandbox Code Playgroud)

令我困扰的是"your_email@example.com"。我知道这只是一条评论,甚至是可选的。但是我想知道,将您的电子邮件地址放在这里是否安全?因为我认为建议您放置机器而不是电子邮件,例如"my-machine@home"

在该教程之后,我已经使用了公共密钥,因此我的电子邮件地址在我的一些公共密钥中。我应该修理吗?还是没有问题?

git email ssh ssh-keys ssh-keygen

3
推荐指数
2
解决办法
1062
查看次数

为什么列表在Python中访问O(1)?

我知道列表与数组不同.但是,O(1)?这意味着访问列表中的元素与访问dict中的元素一样快,我们都知道这不是真的.我的问题是基于这份文件:

list

----------------------------
| Operation | Average Case |
|-----------|--------------|
|    ...    |     ...      |
|-----------|--------------|
|  Get Item |     O(1)     |
----------------------------
Run Code Online (Sandbox Code Playgroud)

这个答案:

列表中的查找是O(n),字典中的查找是分摊的O(1),关于数据结构中的项目数.

如果第一个文档是真的,那么为什么访问一个dict比访问列表更快,如果它们具有相同的复杂性?

有人可以对此作出明确的解释吗?我会说它总是取决于列表/字典的大小,但我需要更多的洞察力.

python dictionary list time-complexity data-structures

3
推荐指数
3
解决办法
5608
查看次数