两者都是用于数据分析系统的柱状(磁盘)存储格式.两者都集成在Apache Arrow(用于python的pyarrow包)中,旨在与Arrow对应作为柱状内存分析层.
两种格式有何不同?
在可能的情况下,你是否总是喜欢使用羽毛?
附录
我在这里找到了一些提示https://github.com/wesm/feather/issues/188,但考虑到这个项目的年龄,它可能有点过时了.
不是一个严肃的速度测试,因为我只是倾倒并加载一个完整的Dataframe,但如果您之前从未听说过这些格式,那么会给您一些印象:
# IPython
import numpy as np
import pandas as pd
import pyarrow as pa
import pyarrow.feather as feather
import pyarrow.parquet as pq
import fastparquet as fp
df = pd.DataFrame({'one': [-1, np.nan, 2.5],
'two': ['foo', 'bar', 'baz'],
'three': [True, False, True]})
print("pandas df to disk ####################################################")
print('example_feather:')
%timeit feather.write_feather(df, 'example_feather')
# 2.62 ms ± 35.8 µs per loop …Run Code Online (Sandbox Code Playgroud) 我找不到关于Apache Parquet文件的任何简单的英文解释.如:
有关这些问题的任何帮助表示赞赏.
我已经意识到,除非显式或半显式声明日期列的格式(使用 dayfirst),否则在读取 csv 文件时,pandas 可以将不同的日期格式应用于同一列!一行可能是 dd/mm/yyyy,而同一列中的另一行可能是 mm/dd/yyyy! 疯狂甚至无法描述它!这是一个已知的错误吗?
为了演示:下面的脚本创建了一个非常简单的表,其中包含从 1 月 1 日到 31 日的日期,采用 dd/mm/yyyy 格式,将其保存到 csv 文件,然后读回 csv。
然后我使用 pandas.DatetimeIndex 来提取日期。好吧,前 12 天的天数为 1(当月和日都 < 13 时),然后是 13 14 等。这到底怎么可能?
我发现解决此问题的唯一方法是明确声明日期格式或仅使用 dayfirst=True 声明日期格式。但这很痛苦,因为这意味着即使我使用有史以来格式最佳的日期导入 csv,我也必须声明日期格式!有没有更简单的方法?
Windows 10 上的 Pandas 0.23.4 和 Python 3.7.1 发生在我身上
import numpy as np
import pandas as pd
df=pd.DataFrame()
df['day'] =np.arange(1,32)
df['day']=df['day'].apply(lambda x: "{:0>2d}".format(x) )
df['month']='01'
df['year']='2018'
df['date']=df['day']+'/'+df['month']+'/'+df['year']
df.to_csv('mydates.csv', index=False)
#same results whether you use parse_dates or not
imp = pd.read_csv('mydates.csv',parse_dates=['date']) …Run Code Online (Sandbox Code Playgroud)