标签: feather

6
推荐指数
1
解决办法
1591
查看次数

尝试将 DataFrame 写入羽毛时出错。羽毛是否支持列表列?

我正在使用 R 和 Python,我想将我的一个 Pandas DataFrames 写成一个羽毛,这样我就可以在 R 中更轻松地使用它。但是,当我尝试将它写成一个羽毛时,我收到以下错误:

ArrowInvalid: trying to convert NumPy type float64 but got float32
Run Code Online (Sandbox Code Playgroud)

我仔细检查了我的列类型,它们已经浮动 64:

In[1]
df.dtypes

Out[1]
id         Object
cluster    int64
vector_x   float64
vector_y   float64
Run Code Online (Sandbox Code Playgroud)

无论使用feather.write_dataframe(df, "path/df.feather")或 ,我都会遇到相同的错误df.to_feather("path/df.feather")

我在 GitHub 上看到了这个,但不明白它是否相关:https : //issues.apache.org/jira/browse/ARROW-1345https://github.com/apache/arrow/issues/1430

最后,我可以将它保存为 csv 并更改 R 中的列(或者只是在 Python 中进行整个分析),但我希望使用它。

编辑1:

尽管下面有很好的建议,但仍然有同样的问题,所以更新我的尝试。

df[['vector_x', 'vector_y', 'cluster']] = df[['vector_x', 'vector_y', 'cluster']].astype(float)

df[['doc_id', 'text']] = df[['doc_id', 'text']].astype(str)

df[['doc_vector', 'doc_vectors_2d']] = df[['doc_vector', 'doc_vectors_2d']].astype(list)

df.dtypes

Out[1]:
doc_id           object
text             object
doc_vector …
Run Code Online (Sandbox Code Playgroud)

python r list pandas feather

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

小数点/千位分隔符的 pd.read_feather 问题和浮点数的舍入问题

我想使用 .ftr 文件来快速分析数百个表。不幸的是,我在十进制和千位分隔符方面遇到了一些问题,类似于那个帖子,只是 read_feather 不允许decimal=',', thousands='.'选项。我尝试了以下方法:

df['numberofx'] = (
    df['numberofx']
    .apply(lambda x: x.str.replace(".","", regex=True)
                      .str.replace(",",".", regex=True))
Run Code Online (Sandbox Code Playgroud)

导致

AttributeError: 'str' object has no attribute 'str'
Run Code Online (Sandbox Code Playgroud)

当我把它改成

df['numberofx'] = (
    df['numberofx']
    .apply(lambda x: x.replace(".","").replace(",","."))
Run Code Online (Sandbox Code Playgroud)

我在结果中收到一些奇怪的(四舍五入)错误,例如 22359999999999998 而不是 2236 对于某些高于 1k 的数字。所有低于 1k 的都是真实结果的 10 倍,这可能是因为删除了“.”。的浮点数并创建该数字的 int。

df['numberofx'] = df['numberofx'].str.replace('.', '', regex=True)
Run Code Online (Sandbox Code Playgroud)

也会导致结果中出现一些奇怪的行为,因为有些数字在 10^12 中,而其他数字则应保持在 10^3 中。

下面是我如何从多个 Excel 文件创建我的 .ftr 文件。我知道我可以简单地从 Excel 文件创建数据帧,但这会大大减慢我的日常计算速度。

我该如何解决这个问题?


编辑:这个问题似乎来自于将 excel 文件作为非美国标准的关于十进制和千位分隔符的 df 读取,而不是将其保存为羽毛。使用pd.read_excel(f, encoding='utf-8', decimal=',', thousands='.')读取 excel …

python decimal-point rounding pandas feather

6
推荐指数
1
解决办法
248
查看次数

用于python'module'对象的羽毛数据存储库没有属性'write_dataframe'错误

尝试读取xlsx文件后,我收到以下错误,使用feather将其写入数据帧,然后使用feather读取相同的数据帧并使用df.head()显示结果

import pandas as pd
import feather
v = pd.__version__
#--- read in excel data

in_path = '/Users/me/Documents/python/data/FGS2000-2015.xlsx'
out_path = '/Users/me/Documents/python/data/mydata.feather'
df = pd.read_excel(in_path)

#--- write pandas dataframe to disk
feather.write_dataframe(df,out_path)

#--- read dataframe from disk
data = feather.read_dataframe(out_path)
data.head()
Run Code Online (Sandbox Code Playgroud)

'module'对象没有属性'write_dataframe'错误.

python pandas feather

5
推荐指数
1
解决办法
969
查看次数

TypeError:无法将pyarrow.lib.ChunkedArray转换为pyarrow.lib.Array

我正在使用下面的代码将csv文件转换为feather类型,

import pandas as pd
import feather 
df = pd.read_csv('myfile.csv')
feather.write_dataframe(df, 'myfile.feather')
Run Code Online (Sandbox Code Playgroud)

myfile.csv结束了2G,当我运行代码时,我得到如下错误信息:

File "table.pxi", line 705, in pyarrow.lib.RecordBatch.from_pandas
File "table.pxi", line 739, in pyarrow.lib.RecordBatch.from_arrays
TypeError: Cannot convert pyarrow.lib.ChunkedArray to pyarrow.lib.Array
Run Code Online (Sandbox Code Playgroud)

我看过类似的问题,并发现feather最近开始支持超过2G的大文件.但我的羽毛版本是0.4,所以我认为我的一个已经能够支持大文件.为什么我会收到此错误?任何想法将不胜感激,谢谢.

csv pandas feather

5
推荐指数
0
解决办法
599
查看次数

将数据帧以羽化格式保存到 S3

我有一个数据框,让我们说:

import pandas as pd
df = pd.DataFrame({'a': [1, 4], 'b': [1, 3]})
Run Code Online (Sandbox Code Playgroud)

我想将它作为羽毛文件保存到 s3,但我找不到一种可行的方法来做到这一点。

我试图用s3bps3fs,但他们不这样做的伎俩。

有什么建议吗?

python amazon-s3 python-3.x feather

5
推荐指数
1
解决办法
1631
查看次数

CSV转换为Pandas中的羽毛,并且将行切成薄片

我正在处理CSV中的巨大数据集(5,000万行)。我试图对其进行切片并将其另存为羽毛格式,以便在稍后加载羽毛格式时节省一些内存。

作为一种解决方法,我将数据分块加载为CSV文件,然后将其合并到一个数据帧中。

到目前为止,这是我尝试过的:

df[2000000:4000000].to_feather('name')
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误:

ValueError: feather does not support serializing a non-default index for the index; you can .reset_index() to make the index into column(s)
Run Code Online (Sandbox Code Playgroud)

然后,我尝试重置索引,但是仍然出现相同的错误。

python pandas feather

5
推荐指数
2
解决办法
632
查看次数

在保留数据类型的同时导出熊猫数据框的格式是什么?不是 CSV;Sqlite?镶木地板?

我的工作流程通常涉及将一些数据(通常来自 CSV 文件)加载到 Pandas 数据框中,对其进行清理,定义每列的正确数据类型,然后将其导出到 SQL 服务器。

对于那些SQL 服务器不可用的情况,有什么好的替代方法可以存储已清理的数据和每列的数据类型的显式定义?

  • 我测试过的唯一真正的解决方案是导出到一个 sqlite .db 文件,使用这里的答案来确保日期被读取为日期。
  • 如何羽毛,HDF5,实木复合地板?Pandas支持它们,但我对这些格式知之甚少。我读过feather不建议长期存储(因为API可能会变?不清楚)

  • 我不确定是否使用 pickle:我知道它不是一种安全格式,而且 API 不断变化并破坏向后兼容性

  • CSV 并不是一个真正的选择,因为在我的数据上推断数据类型通常是一场噩梦;将数据读回熊猫时,我需要明确声明格式,包括日期格式,否则:

    • pandas 可以创建列,其中一行是 dd-mm-yyyy,另一行是 mm-dd-yyyy(请参阅此处)。加
    • 我有很多文本列,其中前 10k 行似乎是数字,接下来的 100 行是文本,因此大多数软件会推断该列是数字,然后导入失败。也许我需要创建一个函数来导出一个包含所有数据类型定义、日期格式等的辅助文件?可行但麻烦

更新:这是一个有趣的比较,据此 HDF5 是最快的格式:https : //medium.com/@bobhaffner/gist-to-medium-test-db3d51b8ba7b

我似乎明白 HDF5 和 Parquet 之间的另一个区别是 datetime64 在 HDF5 中没有直接等价物。大多数人似乎将他们的日期作为 ISO 日期格式 (yyyy-mm-dd) 字符串存储在 HDF5 中。

python pandas parquet feather

5
推荐指数
2
解决办法
4080
查看次数

如果羽毛文件格式仍然相关,或者社区是否倾向于使用其他文件格式来存储大文件?

我正在探索 Python 的文件存储格式选项并偶然发现了羽毛。我注意到最后一个版本是在 2017 年,并且担心它的长期存在。

网络搜索正在撤回似乎都在 2017 年左右停止的帖子。

python-3.x feather

5
推荐指数
1
解决办法
928
查看次数

自 apache arrow 1.0.1 发布以来用于长期存储的 Feather 格式

由于在Feather Github 中搜索问题,以及 stackoverflow 中的问题,例如Feather和 parquet 之间有什么区别?,由于Apache Arrow版本为 0.xx,不推荐 Feather 格式作为长期存储,并且由于不断发布新版本而被认为是不稳定的。

我的问题是,从当前的 Apache Arrow 版本 1.0.1 开始,这种情况是否有所改变?Feather 被认为可以稳定地用作长期存储吗?

python dataframe pandas feather pyarrow

5
推荐指数
1
解决办法
471
查看次数