1. 程式人生 > >Spark實戰(5) DataFrame基礎之GroupBy和Aggregate

Spark實戰(5) DataFrame基礎之GroupBy和Aggregate

groupBy()

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('aggs').getOrCreate()

df = spark.read.csv('sales_info.csv', inferSchema = True, header = True)

df.printSchema()

df.show()

df.groupby("Company")

df.groupby("Company").mean().show()

df.groupby("Company").sum().show(
)

Aggregation

# general method do aggregation
df.agg({'Sales':'sum'}).show()
df.agg({'Sales':'max'}).show()  # notion line

# we could set the group by and then use aggregate
group_data = df.groupBy("Company")
group_data.agg({'Sales':'max'}).show() # the same effect with the notion line

Aggregation Function

from pyspark.sql.functions import countDistinct, avg, stddev
# aggregate function to select
df.select(countDistinct('Sales'))
df.select(countDistinct('Sales'),alias('Count of Distinct Sales'))

# how to format the result
from pyspark.sql.functions import format_number
# add alias
sales_std = df.select(
stddev('Sales').alias('std')) # format the number sales_std.select(format_number('std',2)).show() # how to sort the result # sort things by sales df.orderBy("Sales").show() df.orderBy(df['Sales'].desc()).show() # descending order

相關推薦

Spark實戰(5) DataFrame基礎GroupByAggregate

groupBy() from pyspark.sql import SparkSession spark = SparkSession.builder.appName('aggs').getOrCreate() df = spark.read.csv('s

Spark實戰(5) DataFrame基礎處理缺失值

Drop Missing Value from pyspark.sql import SparkSession spark = SparkSession.builder.appName('aggs').getOrCreate() df = spark.read.

Spark實戰(3) DataFrame基礎行列操作SQL

文章目錄行列操作SQL操作 行列操作 df['age'] # I only get a column object df.select('age').show() # I get a datafram with a column that we could us

Spark實戰(4) DataFrame基礎資料篩選

文章目錄 filter寫法一 filter寫法二 條件符號 獲取結果 filter寫法一 from pyspark.sql import SparkSession spark = SparkSession.builder.app

spark基礎RDDDataFrame的轉換方式

一 通過定義Case Class,使用反射推斷Schema 定義Case Class,在RDD的轉換過程中使用Case Class可以隱式轉換成SchemaRDD,然後再註冊成表,然後就可以利用sql

1.5程式設計基礎迴圈控制 9. 描述 計算非負整數 m 到 n(包括m n )之間的所有奇數的

描述計算非負整數m到n(包括m和n)之間的所有奇數的和,其中,m不大於n,且n不大於300.例如m = 3,n = 12,其和則為:3+ 5 + 7 + 9 + 11 = 35。輸入兩個數m和n,兩個數

Python 基礎列表元組

bcp rtt fcn ott emd lns swe 二維數組 ttf list Python內置的一種數據類型是列表:list。list是一種有序的集合,可以隨時添加和刪除其中的元素。 比如,列出班裏所有同學的名字,就可以用一個list表示: >>

java基礎getpost的差別

oge tracking data- 宋體 行處理 art 其它 family 我們 上篇博文講到HTTP協議,本篇介紹HTTP請求方法中get和post的差別: 首先,最明顯的一點表象上的差別:GET 方式。將請求參數附加在url之後,POST將請求參數附加在請求頭

Java基礎finalstatic關鍵字

推薦 構造方法 其他 如果 靈活 位置 map 機制 lis 一、final 根據程序上下文環境,它可以修飾非抽象類、非抽象類成員方法和變量。 final類不能被繼承,沒有子類,final類中的方法默認是final的。 final

基礎shell makefile

靜默 兩種 1.4 如果能 內置 字符 為我 賦值運算 循環 2.2.1、shell介紹 (1)shell可以理解為軟件系統提供給用戶操作的命令行界面,可以說他是人機交互的一種方式 (2)我們可以使用shell和操作系統、uboot等軟件系統進行交互。具體來說就是我們通過

python基礎dictset

算法 dict name 區別 刪除元素 哈希算法 div 數學 blog dict dict是dictionary的縮寫,python內置了字典,在其他語言中也稱為map,使用鍵值對儲存,具有極快的查找速度。 如果是只用list來實現,就需要兩個list,先在第一個lis

Go基礎--排序查找操作

ear () ola 方法 math https swa blog png 排序操作主要都在sort包中,導入就可以使用了import("sort") 常用的操作 sort.Ints:對整數進行排序sort.Strings:對字符串進行排序sort.Float64s:對

web前端基礎BOMDOM

js DOM BOM一、介紹JavaScript分為ECMAScript,DOM,BOM。BOM(Browser Object Model)是指瀏覽器對象模型,它使JavaScript有能力與瀏覽器進行“對話”。DOM (Document Object Model)是指文檔對象模型,通過它,可以訪問HTML

Java基礎thissuper關鍵字用法

鏈接 tps 事件 歧義 調用 數據 沒有 方法名 訪問 this 在java中,this是一個引用當前類對象的引用變量,主要有以下幾種用法: 引用當前類的實例變量· this關鍵字可以用來引用當前類的實例變量。如果實例變量和某個方法的參數之間存在歧義(實例變量和參數命名相

前端基礎BOMDOM

周期 引用 海澱區 寫到 直接 hist 接下來 height ctype 前戲 到目前為止,我們已經學過了JavaScript的一些簡單的語法。但是這些簡單的語法,並沒有和瀏覽器有任何交互。 也就是我們還不能制作一些我們經常看到的網頁的一

Java 基礎 continue break

不執行 string In pre www ont ring str 如果 http://www.verejava.com/?id=17159306674727 public class Test2 { public static void main(String[

Java基礎關鍵字保留關鍵字

1. Java關鍵字與Java保留字的區別?   Java關鍵字(KeyWord):  對Java的編譯器有特殊的意義,他們用來表示一種資料型別或者表示程式的結構。   Java保留字(Reserved Word):為Java預留的關鍵字,現在還沒有用到,但在升級版本中可能作為關鍵

前端基礎BOMDOM三個小示例(計時器、搜尋框、select聯動)

一、BOM和DOM JavaScript分為 ECMAScript,DOM,BOM。 BOM(Browser Object Model)是指瀏覽器物件模型,它使 JavaScript 有能力與瀏覽器進行“對話”。 DOM (Document Object Model)是指文件物件模型,通過它,

Java基礎intInteger區別

1、int和Integer的區別 1、Integer是int的包裝類,int則是java的一種基本資料型別  2、Integer變數必須例項化後才能使用,而int變數不需要  3、Integer實際是物件的引用,當new一個Integer時,實際上是生成一個指標指向此物件;而

Kotlin基礎區間型別轉換

fun main(args: Array<String>) { // 1.區間可以使用.. 表示, 注意..在使用的時候要保證起始值要小於結束值 // 輸出1 2 3 4 for (i in 1..4) { println(i) }