Python 如何获得dask数据帧的形状?

Python 如何获得dask数据帧的形状?,python,dask,Python,Dask,正在执行。shape给了我以下错误 AttributeError:“DataFrame”对象没有属性“shape” 我应该如何获得形状呢?您可以直接获得列数 len(df.columns) # this is fast 您也可以在数据帧本身上调用len,不过请注意,这将触发计算 len(df) # this requires a full scan of the data Dask.dataframe在未首先读取所有数据之前不知道数据中有多少条记录。要获得形状,我们可以尝试以下方法:

正在执行。shape给了我以下错误

AttributeError:“DataFrame”对象没有属性“shape”


我应该如何获得形状呢?

您可以直接获得列数

len(df.columns)  # this is fast
您也可以在数据帧本身上调用len,不过请注意,这将触发计算

len(df)  # this requires a full scan of the data

Dask.dataframe在未首先读取所有数据之前不知道数据中有多少条记录。

要获得形状,我们可以尝试以下方法:

 dask_dataframe.describe().compute() 
索引的“count”列将给出行数

 len(dask_dataframe.columns)

这将给出数据框中的列数,我知道这是一个很老的问题,但我也有同样的问题,我得到了一个现成的解决方案,我只想在这里注册

考虑到您的数据,我想知道它最初是保存在一个类似的CSV文件中;因此,在我的情况下,我只计算该文件的行数(减去1,标题行)。受此启发,我正在使用以下解决方案:

导入dask.dataframe作为dd
从itertools导入(takewhile,重复)
def rawincount(文件名):
f=打开(文件名为“rb”)
bufgen=takewhile(λx:x,(f.raw.read(1024*1024)表示重复(无)))
返回和(buf中buf的buf计数(b'\n'))
文件名='myHugeDataframe.csv'
df=dd.read\u csv(文件名)
df_shape=(rawincount(文件名)-1,len(df.columns))
打印(f“形状:{df_形状}”)

希望这也能帮助其他人。

使用shape,您可以执行以下操作

a = df.shape
a[0].compute(),a[1]
这将按照熊猫打印(“(”,len(df),“,”,len(df.columns),“)”)显示的形状进行处理
通过下面的代码获取列数

import dask.dataframe as dd
dd1=dd.read_csv("filename.txt")
print(dd1.info)

#Output
<class 'dask.dataframe.core.DataFrame'>
Columns: 6 entries, CountryName to Value
dtypes: object(4), float64(1), int64(1)
导入dask.dataframe作为dd
dd1=dd.read\u csv(“filename.txt”)
打印(dd1.info)
#输出
列:6个条目,CountryName到值
数据类型:object(4)、float64(1)、int64(1)

len(df)正在加载所有记录,在我的例子中,查找144M行大小的表的len(df)花费了几分钟多(wind10、ram16、intel7)。还有其他方法吗?它可能必须加载所有数据才能找到长度。不,没有别的办法。您可以考虑使用类似于数据库的东西,它跟踪元数据中的这种信息。我一直在执行代码> > df.index。但我的数据存储在柱状拼花地板中。。。因此,这取决于您的底层数据体系结构是什么。这种方法非常快速,并且利用了DASKI中的分布式处理。谢谢!这比加载单个列并获取其长度的其他可能解决方案要快。在Pandas中,shape将同时输出行数和列数。我认为显示列数并不能回答OP的问题。列:6个条目这在输出中是什么,我正在使用dask供参考。