楔子
這一章同樣很簡單,個人覺得沒啥好說的,直接把里面用到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中的一些基礎知識。
