如何在dask中找到数据帧的长度?

C. *_* L. 4 python pandas dask

如何使用dask找到数据帧的长度?

例如在熊猫中,我可以这样做:

import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.normal(0, 1, (5, 2)), columns=["A", "B"])
print df['A'].count()
print df
Run Code Online (Sandbox Code Playgroud)

输出:

5
          A         B
0  1.538531  0.424717
1 -0.929843  1.323648
2 -1.283680  0.056199
3 -0.641035 -1.998241
4 -0.058598 -1.400637
Run Code Online (Sandbox Code Playgroud)

在dask我尝试:

import dask.dataframe as dd
df_dask = dd.from_pandas(df, npartitions=3)
print df_dask
print df_dask['A'].count()
Run Code Online (Sandbox Code Playgroud)

输出:

                     A        B
npartitions=2                  
0              float64  float64
2                  ...      ...
4                  ...      ...
Dask Name: from_pandas, 2 tasks

dd.Scalar<series-..., dtype=int32>
Run Code Online (Sandbox Code Playgroud)

我需要长度的真正原因是因为df_dask.sample()需要一小部分,我想从数据帧中抽取指定数量的条目.我使用长度来计算这个分数.有更简单/更快的方法吗?

jez*_*ael 6

您可以使用len长度dask DataFrame columnindex:

print (len(df_dask['A']))
5

print (len(df_dask.index))
5
Run Code Online (Sandbox Code Playgroud)

如果需要计算所有非NaNs值,您的解决方案就更好了- 添加compute:

df = pd.DataFrame(np.random.normal(0, 1, (5, 2)), columns=["A", "B"])
df.loc[0, 'A'] = np.nan
print (df)
          A         B
0       NaN -1.727669
1 -0.390900  0.573806
2  0.338589 -0.011830
3  2.392365  0.412912
4  0.978736  2.238143

import dask.dataframe as dd
df_dask = dd.from_pandas(df, npartitions=3)

print (df_dask['A'].count().compute())
4
Run Code Online (Sandbox Code Playgroud)