《使用Python和Dask實現分布式並行計算》6. Summarizing and analyzing DataFrames(匯總、分析DataFrame)


楔子

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM