楔子
这一章同样很简单,个人觉得没啥好说的,直接把里面用到DataFrame的API贴出来吧。
sum:求和
mean:求平均值
min:求最小值
max:求最大值
mode:求众数
abs:求绝对值
prod:求所有值的乘积
std:求标准差
var:求方差
size:求元素的个数
count:求非空元素的个数
import dask.dataframe as dd
import pandas as pd
df = pd.DataFrame({"a": [11, 11, 33, 11, 22, 55, 77]})
dask_df = dd.from_pandas(df, npartitions=1)
print(dask_df["a"].sum().compute()) # 220
print(dask_df["a"].mean().compute()) # 31.428571428571427
print(dask_df["a"].min().compute()) # 11
print(dask_df["a"].max().compute()) # 77
print(dask_df["a"].mode().compute())
"""
0 11
dtype: int64
"""
print(dask_df["a"].abs().compute())
"""
0 11
1 11
2 33
3 11
4 22
5 55
6 77
Name: a, dtype: int64
"""
print(dask_df["a"].prod().compute()) # 4092305910
print(dask_df["a"].std().compute()) # 25.74138783397367
print(dask_df["a"].var().compute()) # 662.6190476190476
print(dask_df["a"].size.compute()) # 7
print(dask_df["a"].count().compute()) # 7
除此之外还有一个describe,在Dask中也是支持的。
print(dask_df["a"].describe().compute())
"""
count 7.000000
mean 31.428571
std 25.741388
min 11.000000
25% 11.000000
50% 22.000000
75% 44.000000
max 77.000000
Name: a, dtype: float64
"""
to_frame:可以将一个Series变成一个DataFrame。
print(dask_df["a"].to_frame().compute())
"""
a
0 11
1 11
2 33
3 11
4 22
5 55
6 77
"""
unique:获取唯一值。
print(dask_df["a"].unique().compute())
"""
0 11
1 33
2 22
3 55
4 77
Name: a, dtype: int64
"""
quantile:求指定的百分位数。
print(dask_df["a"].quantile().compute()) # 22.0
print(dask_df["a"].quantile(0.25).compute()) # 11.0
groupby:和pandas DataFrame中的groupby是一样的。
rolling:和pandas DataFrame中的rolling是一样的。
总结
- Dask DataFrame有着许多有用的的统计方法,比如:求平均值、最小值、最大值等等。
- 通过使用describe方法,可以得到一个基本的描述性统计。
- 聚合函数使用split-apply-combine算法来并行处理数据,对DataFrame已排好序的列使用groupby将产生最佳性能。
- 可以使用窗口函数来实现对数据的移动性分析,但是最好按照时间段来分区,以达到最佳性能。
原谅我这一章偷了很多懒,因为是在没有什么可说的,都是pandas中的一些基础知识。