我应该如何获得dask数据帧的形状?

时间:2018-05-15 16:57:33

标签: python dask

执行.shape会给我以下错误。

  

AttributeError:'DataFrame'对象没有属性'shape'

我应该如何获得形状?

6 个答案:

答案 0 :(得分:18)

您可以直接获取列数

len(df.columns)  # this is fast

你也可以在数据框本身上调用len,但要注意这会触发计算。

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

如果没有先阅读所有记录,Dask.dataframe就不知道您的数据中有多少条记录。

答案 1 :(得分:1)

要获得形状,我们可以尝试这种方式:

 dask_dataframe.describe().compute()  

索引的“计数”列将给出行数

 len(dask_dataframe.columns) 

这将给出数据框中的列数

答案 2 :(得分:1)

print('(',len(df),',',len(df.columns),')')

答案 3 :(得分:0)

好吧,我知道这是一个很老的问题,但是我遇到了同样的问题,并且得到了一个现成的解决方案,我只想在这里注册。

考虑到您的数据,我想知道它最初保存在CSV类似文件中;因此,就我的情况而言,我只计算该文件的行数(减去头行数)。受this answer here的启发,这是我正在使用的解决方案:

   import dask.dataframe as dd
   from itertools import (takewhile,repeat)

   def rawincount(filename):
       f = open(filename, 'rb')
       bufgen = takewhile(lambda x: x, (f.raw.read(1024*1024) for _ in repeat(None)))
       return sum( buf.count(b'\n') for buf in bufgen )

   filename = 'myHugeDataframe.csv'
   df = dd.read_csv(filename)
   df_shape = (rawincount(filename) - 1, len(df.columns))
   print(f"Shape: {df_shape}")

希望这对其他人也有帮助。

答案 4 :(得分:0)

通过形状,您可以执行以下操作

a = df.shape
a[0].compute(),a[1]

这将按照熊猫显示的形状进行购物

答案 5 :(得分:-1)

通过以下代码获取列数。

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)